HWL News Bot
News
Thread Starter
- Mitglied seit
- 06.03.2017
- Beiträge
- 113.949
... weiterlesen
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: this_feature_currently_requires_accessing_site_using_safari
Sorry Freunde, Volta ist auch eine ganz andere Architektur. NVidia hat da massiv geschraubt. Schaut mal in den/die Artikel bei anandtech oder Heise dazu rein - lohnt sich.
Genau da sind wir bei meinem oben genannten Beispiel. Da kauf sich ein Unternehmen lieber 500 Xeons anstatt einfach mal nen Coder hinzusetzen, der die Schnittstelle OpenCL-fähig macht. Die geben lieber mehrere Millionen für nen ineffizienten Cluster aus (relativ gesehen), anstatt mal einmal Butter bei die Fische zu machen und das ordentlich zu implementieren.Nur hat das eben an der Stelle primär nichts mehr mit einer Pixelschleuder zu tun. Und teuer ist das überhaupt nicht, wenn man sich den Vergleich einmal anschaut: wenn ich mit einer Kiste für die speziellen Workloads 500 Xeon-Server ersetzen kann, ist der Preis ein Witz - und das nur bei der Anschaffung.
Ja, für die paar Unternehmen die nicht den Cluster wie ne Brapfanne benutzen mag Volta tatsächlich ne sehr feine Sache sein. Beim Rest machts keinen Unterschied und läuft so derpig wie bisher weiter.Da haben wir von Strom, Kühlung und sonstiger Infrastruktur noch gar nicht gesprochen. Und nein, ich bin kein Fanboi - aber man muss das Ganze eben ins Verhältnis und aus Sicht der Zielgruppe (Datacenter/spezifische Anwendungen)sehen um zu verstehen, was für ein gigantischer Sprung Volta ist/sein kann.
Hab grad schon im anderen Thema dazu mal gepostet. Die Shaderanzahl an sich macht schon 42% aus... marginal mehr Takt und du bist bei 50%. ^^Aber: für Spieler könnte Volta mal schlappe 50% schneller als eine 1080TI sein (laut Heise Berichterstattung - bei der Session vor Ort dazu konnte ich leider selbst nicht mehr dabei sein). Soviel zum Thema nur "Pascal in groß"...
Fangen wir bei der alten C/C++ Sprache an, die laut Computersprachexperten elendig ineffizient sein sollen.
Wie genau meinst du das?
Ineffizient, weil komplizierter(kein Garbagecollector, Mehrfachvererbung, usw.) und zeitintensiver (z.B. class und Header Datei erstellen) oder ineffizient bei der Leistung?
Falls ersteres, ja schon irgendwie, aber falls letzteres ehr nein ^^
(schon ein paar Jahre her)
Die Compiler wurden mit der Zeit aber auch immer weiter verbessert und werden immer weiter verbessert, sodass diese den Code immer besser optimieren.
Und C/C++ sind nicht die schnellsten Werkzeuge, denn dies ist Assembler (Ok um ganz genau zu sein Maschienencode). Also wenn du wirklich die bestmögliche Performance haben willst, dann werde ein Assembler Guru, nicht einfach nur jemand der Assembler programmieren kann, sondern wirklich ein Guru, sodass du in der Lage bist, besseren Assembler Code als der Compiler zu erstellen Mit Assembler hast du auch die Möglichkeit alle Features und alles Instructions der CPU direkt anzusprechen, aber dafür musst die Hardware wirklich genauestens kennen, um diese perfekt nutzen zu können. Und du verlierst die ganzen Vorteile der High-Level Programmiersprachen, sodass du deinen Code für jede CPU neu anpassen und optimieren musst, also richtig schön Low-Level Shit
Eben. Und genau da setzt doch auch CUDA an. Die Kunst ist eben, eine in sich stimmige Plattform hinzustellen, die sich möglichst ohne vertiefte Kenntnisse "bestmöglich" und von Haus aus optimiert einsetzen lässt. Und da trennen - in diesem Bereich - AMD und NVIDIA momentan Welten (jedenfalls in meiner Wahrnehmung). NVIDIA baut inzwischen hier eben nicht nur Hardware, sondern schafft auch faktisch die Voraussetzungen für ganz neue Märkte. Über CUDA hinaus geht's jetzt an die DL-Frameworks wie Tensorflow, Caffe(2), CNTK & Co., die Dir NVIDIA zusätzlich zu den CUDA-Libraries frei Haus - natürlich nur für Ihre Hardware - hinstellt. Wenn's aufgeht: Hammer Alleinstellungsmerkmal. Wenn nicht: Hammer Fehlinvestition.
Maxwell war einfach ein Glücksgriff für Nvidia, deshalb ist Pascal nur ein Maxwell Shrink mit höheren Taktraten (Maxwell/Pascal mit selben Takt = selbe Performance) und Volta zeigt fast nur Verbesserungen im Profi Bereich, aber mal abwarten, vllt. ist da doch mehr dahinter.
Fangen wir bei der alten C/C++ Sprache an, die laut Computersprachexperten elendig ineffizient sein sollen.
Dann die ollen alten Instruction Sets, die auch längst überholt sind und durch elegantere Sachen wie ARM ersetzt werden könnten. (Auch die Russen haben mal vor ein paar Jahren ne CPU mit unglaublicher IPC gebastelt)
Nur gammelt die Industrie halt noch auf Kartoffelniveau mit ihren ranzigen Anwendungen, die "historisch" gesehen nur CUDA oder noch nicht einmal das können.
Warum funzt denn Code-Magie wie LLVM? Compiliert in einer Virtuellen Maschine auf ein Zielsystem, das gar nicht existiert um damit Performance rauszuholen, die der Programmierer gar nicht kannte, dass sie auf der Straße liegt.
Ja warum wohl... Mal überlegen -> vielleicht weil es, als es released wurde, kein OpenCL gab!?Warum nicht gleich OpenCL? Ist bei gleichem Entwicklungsaufwand der Softwarehersteller genauso schnell wie CUDA (evtl. sogar noch schneller), offen, wird aktiv weiterentwickelt, sehr flexibel und ist kompatibel mit Nvidia, Intel und AMD.
Warum wird das nicht gefördert? Warum kleben die Entwickler immer auf dem gleichen, alten Ramsch fest? Jetzt isses natürlich zu spät. CUDA ist schon längst überall drin, was GPU-Beschleunigung will und kein Hahn kräht mehr nach OpenCL. Ganz toll! *slow clap*
NVIDIA baut inzwischen hier eben nicht nur Hardware, sondern schafft auch faktisch die Voraussetzungen für ganz neue Märkte. Über CUDA hinaus geht's jetzt an die DL-Frameworks wie Tensorflow, Caffe(2), CNTK & Co., die Dir NVIDIA zusätzlich zu den CUDA-Libraries frei Haus - natürlich nur für Ihre Hardware - hinstellt. Wenn's aufgeht: Hammer Alleinstellungsmerkmal. Wenn nicht: Hammer Fehlinvestition.
Och, ich hab mich schon damit beschäftigt. Nur kann ich dir deine Vorurteile nicht abnehmen.Eigentlich hätte man hier schon aufhören müssen zu lesen -> 2x Passagen -> 2x daneben. Sorry, aber einfach mal solche Behauptungen unterlassen, wenn man sich wenigstens ansatzweise damit beschäftigt hat.
Es war ein recht bekannter Eintrag, der vor mehreren Jahren auch auf anderen Blogs re-gebloggt wurde und auch in einigen Foren diskutiert wurde. Google hat mir zwar einen Link ausgespuckt, der führte aber zu einer 404 - leider. Deswegen hab ich den Artikel kurz beschrieben in der Hoffnung, jemand anderes möge sich auch daran erinnern und hat vielleicht eine Idee, wo ich es wieder finden würde.Vor allem, "laut Computersprachexperten" -> und dann kommt die Aussage, hab ich im INet gelesen, finde den Artikeln aber nicht mehr -> was soll das?
Entweder du kannst Fakten bringen oder du machst dich lächerlich. Wäre die Aussage von "Sprachexperten" getroffen und vor allem auch, wären sich diese "Experten" ansatzweise einig, dürfte es ein leichtes sein, darüber Berichte/Aussagen/Blogposts oder was weis ich denn, zu finden...
PS: C++17 ist übrigens erst ein paar Monate alt...
Hätte ich ne entsprechenden Karrierepfad gewählt, würde ich das sogar machen.Dann wäre ich doch dafür, du bewirbst dich bei den Unternehmen, lässt sich als Softwareentwickler einstellen und baust ein OpenCL Backend!? Dann haben auch alle was davon
Wenn ich meinen Code für Nintendo DS compiliere, wird der wohl kaum auf PowerPC laufen. Genau hier ist ja die Magie von LLVM. Du compilierst gegen ein virtuelles System, das "irgendwas" ist aber nicht die Maschine, auf der es später laufen soll und es läuft trotzdem und wahnsinnig schnell. Du tust hier ja so, als wäre das selbstverständlich. Ich find LLVM ist ein ziemlich alienhaftes Stück Technik ähnlich wie jpeg. Das existiert auch schon 15+ Jahre lang und ist immer noch ungeschlagen. Aber das ist nur meine Meinung.Was ist da Magie dran!?
Hardware ist im Endeffekt von Menschen gebaut. Wieso sollte es also Magie sein, anstatt was "in die Hand" zu nehmen, es einfach virtuell zu erschaffen/erzeugen!?
Stell dir einfach vor du stehst voll auf Lego. Früher bist du in den Laden gerannt und hast die Teile gekauft. Heute kannst du dir einfach den Lego Digital Designer runterladen und Lego Sets virtuell auf dem PC zusammen bauen. Im Endeffekt ist es quasi exakt das gleiche. Stecke Stein auf Stein... Nichts anderes passiert hier in dem Fall ebenso. Der "Emulator" verhält sich exakt so wie der physische Prozessor. Und damit ist die Magie auch schon erklärt.
Ja warum wohl... Mal überlegen -> vielleicht weil es, als es released wurde, kein OpenCL gab!?
Ja, genau das. Nvidia hat überall versucht CUDA reinzukloppen wo es nur ging um damit die Software nur auf Nvidia Karten laufen zu lassen. Damit verdient Nvidia natürlich ordentlich Geld durch eine künstliche Restriktion der Softwarefähigkeit. Erzähl mir doch bitte mal, was daran so toll ist?Vielleicht, weil sich der Hersteller hinter Cuda, jahrelang dafür eingesetzt hat, sein Produkt am Markt zu etablieren?
Was hat das mit OpenCL zu tun? Na ja, egal - ist eh zu spät dafür. Gibt ja nix mehr außer CUDA.Vielleicht, weil es die Gegenpartei ebenso am Anfang mit einem Properitären Ansatz versucht hat -> AMD Stream -> und eine der beiden Ansätze scheitern musste...
Ja tue ich, weil CUDA eine künstliche Restriktion ist, die niemand braucht. Hätten die "Implementierer", die CUDA seit 10 Jahren benutzen OpenCL verwendet, würde jetzt kein Hahn mehr nach CUDA krähen. Hätte Matlabn OpenCL anstatt CUDA eingebaut - so als Beispiel. Haben sie aber nicht, weil.... Gründe. Zu offen oder einen Bienenstock im Popo oder was auch immer die für Probleme damit haben.Du fragst wirklich, warum ein Markt, der sehr sehr speziell ist, auf einen properitären Ansatz setzt, der mittlerweile eigentlich als Standard anzusehen ist? Und das nur, weil du Cuda nicht magst!?
Wie gesagt, das könntest du auch alles mit OpenCL machen - teilweise sogar besser, weil es flexibler ist. Aber der Mensch mag historisch gewachsenen Bullshit, also haben wir jetzt alle CUDA.PS: noch ein Hinweis, man muss Sachen nicht zwangsweise mögen um zu bewerten ob das was sinniges oder unsinniges ist. Und ganz zweifelsfrei darf man von Cuda halten was man will, dennoch WAR bzw. IST sogar noch DAS Zugpferd, was HPC mit GPU Beschleunigung angeht. Im Moment ist Intel im Kommen. Aber auch NV bringt immer mal wieder gute Ansätze/Neuigkeiten. Ebenso wird sich wohl der Markt früher oder später weiter untergliedern. Wie man jetzt schon sieht. Im Moment ist Deap Learning im Fokus. Mit teils anderen Anforderungen als bspw. in der Wettersimulation oder Atomphysik oder Astronomie oder auch in der Forensik...
Wieder so ne Behauptung... Die neuesten Cuda Versionen sind alles Andere als "alter Ramsch"...
Und es ist NIE zu spät für eine Technik in der IT, wenn es dafür einen Markt gibt. Mit rumheulen in der Community wird sich am Markt aber genau NULL ändern
Also los, geh mit gutem Beispiel vorran und portiere den Stuff auf OpenCL Für Umme natürlich, denn das ist ja das, was du aus Endkundensicht willst...
Jupp - ist halt genauso in der Uni gewesen. Die Leute knallen sich einen Cluster für mehrere Millionen zusammen und genau 3 Leute können ihn bedienen. Der Biologie-Student der noch nie programmiert hat darf dann die Protein-Faltung programmieren "lassen", hat selbst aber null Plan von dem Code, der da grad entsteht. Warum auch? Er ist Biologe.Das Problem ist, die Leute, die mit Softwareentwicklung mit GPU Support nichts am Hut haben, wollen sowas gar nicht verstehen.
Geschweige denn, dass man sowas nachvollziehen kann... Siehst du bspw. auch schön am Thema Gameworks. Da ist es im Endeffekt die gleiche Suppe in bunt nur nicht HPC, sondern eben Gaming. Es ging in der Industrie aus meiner Sicht noch nie um irgendwelche Sympatien. Das ist knallhartes Geschäft. Und wer nicht mitzieht, wo das Produkt nicht punktet, wo es irgendwo krankt oder was weis ich -> der wird eben hinterher laufen oder irgendwann untergehen. Es hat schon viele der damaligen Größen im IT Geschäft getroffen. Offenbar ist Cuda ein Erfolgsrezept für NV. Wenn auch der Anteil am Umsetz nach wie vor recht gering ist... Aber offenbar hat es gereicht um eine etablierte Größe zu werden.
Warum funzt denn Code-Magie wie LLVM? Compiliert in einer Virtuellen Maschine auf ein Zielsystem, das gar nicht existiert um damit Performance rauszuholen, die der Programmierer gar nicht kannte, dass sie auf der Straße liegt. ^^
Natürlich wäre Assembler die beste Wahl - die Demo-Szene macht das ja und die schaffen es auf Hardware aus den 80'ern // frühen 90'ern in 64 kbyte oder 4 kbyte Sachen darzustellen, wo mir die Augen ausfallen, wie sowas überhaupt auf nem "Krüppelchip" möglich ist. Die Sache ist nur: Mit ner ordentlichen Infrastruktur hätte man diese Technik heute auf jedem System. Ich kann auch dynamisch programmieren, wo der Code sich auf die einzelnen Hardwareeigenschaften anpasst. Ist mein Cache 32 oder 64 kB groß? Je nachdem knall ich einen entsprechendend optimierten Datensatz rein (oder hier das System). Kann ich mit der ganzen Architektur machen bis ich einen totoptimierten Code habe.
Und jetzt stell dir mal vor, das lässt du auf sowas wie ner Titan laufen. Ich bin der festen Überzeugung, dass wir heute noch auf deutlich >50% overhead laufen.
Jupp - ist halt genauso in der Uni gewesen. Die Leute knallen sich einen Cluster für mehrere Millionen zusammen und genau 3 Leute können ihn bedienen. Der Biologie-Student der noch nie programmiert hat darf dann die Protein-Faltung programmieren "lassen", hat selbst aber null Plan von dem Code, der da grad entsteht. Warum auch? Er ist Biologe.
Hier jetzt zu sagen, dass "er das mal schön selbst zusammencoden" soll ist ein wenig... arrogant, oder? Aber so ein dummer Student kann halt im Rinnstein verrecken, so lange es für irgendwelche Bullshitprojekte noch Fördergelder gibt.
Das eigentlich interessante ist hier aber "weil.... Gründe". Denn genau das versuche ich dir da oben zu erklären. Die Gründe sind die, warum das eine oder das andere eben genutzt wurde. Das du das als Endkunde vielleicht nicht nachvollziehen kannst/willst/möchtest ist ja OK. Aber wie du deine Gründe hast, Cuda scheiße zu finden, haben andere ihre Gründe, doch darauf zu setzen.Ja tue ich, weil CUDA eine künstliche Restriktion ist, die niemand braucht. Hätten die "Implementierer", die CUDA seit 10 Jahren benutzen OpenCL verwendet, würde jetzt kein Hahn mehr nach CUDA krähen. Hätte Matlabn OpenCL anstatt CUDA eingebaut - so als Beispiel. Haben sie aber nicht, weil.... Gründe.
Wenn ich meinen Code für Nintendo DS compiliere, wird der wohl kaum auf PowerPC laufen.
oh ich vergaß das interessiert den ICH-bezogenen Kunden ja nicht.
Strohmann hilft dir da auch nicht weiter lieber Sonnenschein. OpenCL kann alles was CUDA kann und noch etwas mehr. Ich warte immer noch auf das Argument FÜR CUDA.Nein, im Gegenteil... Du wertest doch über Cuda, sagst es gefällt dir nicht, obwohl du die technische Basis das einschätzen zu können gar nicht mitbringst!? Also musst du dir auch die Kritik gefallen lassen, die man dir dann entgegenbringt.
Soweit völlig korrekt. Er ist ein Biologe, kein Programmierer. Ich bin Ingenieur für Signalverarbeitung und kein C/C++ Hacker. Ich bastle Prototypen. In meinem Bereich gibts aber auch einige Kollegen, die Machine-Learning machen sollen. Und auf einmal kommen Leute an, die dann verlangen, dass wir auch C/C++ können sollen.Den Vergleich mit dem Studenten finde ich da sogar recht passend, aber aus einer etwas anderen Sicht.
Denn der Biologiestudent wird sich bestimmt nicht hinstellt und seinen Mitstudenten da Vorwürfe machen, warum die Cluster mit Software xyz laufen und nicht abc. Oder Schnittstelle 123 genutzt wird anstatt 987. Dem Biologen ist es doch gar nicht seine Aufgabe, Programmcode zu schreiben -> der soll machen, was ein Biologe eben macht (kein Plan, ich bin kein Biologe) -> aber Programmieren gehört da definitiv nicht dazu...
Muss ich auch nicht weil es die verdammte aufgabe von Mathworks gewesen wäre diese Schnittstelle zu coden - nicht meine. Mein GPU-Code wäre NULL Unterschiedlich in Matlab, egal ob CUDA oder OpenCL. Denn Matlab kümmert sich darum, den Proto-Code in Maschinencode für die GPU umzuwandeln, nicht ich.Das Problem ist nämlich, du machst es dir zu einfach. Für dich als Außenstehender ist das nämlich alles kein Problem. Du sagst, macht halt OpenCL, ist weitestgehend Hardwareunabhängig (entgegen Cuda). Aber das WIE erschließt sich dir überhaupt nicht. Du kannst weder einschätzen, was da für Aufwände dahinter stehen, ob Schnittstellen so weiter funktionieren. Ob der Speed passt.
Henne und Ei. Hätte Mathworks mit OpenCL angefangen, wären jetzt auch alle Plugins OpenCL.Ob Bibliotheken, die man nutzt (vllt gar von Dritten), ebenso mit OpenCL nutzbar sind/wären usw. usf.
Wie bspw. besterino eben aufgeführt hat, da ist auch bei Cuda noch eine Menge "Luft" -> und man liefert dort einfach immer wieder immer was neues. Das gilt für andere Themen ebenso, aber es macht damit das eine oder andere definitiv nicht obsolet.
Mich würde neben "Marktmacht" und der daraus resultierten Verbreitung mal interessieren, was an CUDA besser sein soll. X86 existiert ja auch nur noch wegen der allg. Verbreitung und nicht weil es so toll ist.Das eigentlich interessante ist hier aber "weil.... Gründe". Denn genau das versuche ich dir da oben zu erklären. Die Gründe sind die, warum das eine oder das andere eben genutzt wurde. Das du das als Endkunde vielleicht nicht nachvollziehen kannst/willst/möchtest ist ja OK. Aber wie du deine Gründe hast, Cuda scheiße zu finden, haben andere ihre Gründe, doch darauf zu setzen.
Recht einfach: Wenn ich mir ein auto kaufe, will ich auch nicht vorgeschrieben bekommen nur bei einer bestimmten Tanke tanken zu dürfen. So lange der Sprit korrekt ist, isses egal wo ich tanke. Kannst du hierauf übertragen:Ernst gemeinte Frage, wer definiert, wer recht hat!? Warum nimmst du dir das Recht raus deine Meinung über Cuda über die der Softwareentwickler zu stellen!?
Ja dann nenne mir doch mal einen Grund FÜR CUDA. Es ist eine limitierte Sprache die nur begrenzt auf Hardware läuft mit einem begrenzten Anwendungsbereich - im Gegensatz zu OpenCL. Einzig das coden in CUDA vs. OpenCL ist unterschiedlich - ja. Das machen dann aber auch Informatiker - also die Leute, die sich damit auskennen sollten!Das ist irgendwie verkehrte Welt. Denn genau das, das dir jemand was vorsetzt, ist doch der Kernpunkt der Kritik!? Aber das gleiche versuchst du gerade zu erzwingen, indem sich alle nach dem von dir genannten Produkt richten sollen, ohne wenn und aber. Denn die Gründe interessieren dich ja nicth (siehe: "weil.... Gründe")
Nope - ich sagte, dass man die passende Infrastruktur ohne Ballast erschaffen sollte, damit wir das overhead-Problem los werden. Overhead ist doof. Soweit klar?Macht er doch auch nicht... Es kommt ein Code für den DS raus. Und der läuft auch auf dem DS. Und zusätzlich, wenn gewünscht eben auch auf dem quasi virtuellen DS mit idR recht schneller Hardware.
Nach deinem Argument dürfte man Software nur auf Hardware schreiben/ausführen/entwickeln, auf der sie gemacht wurde.
Assembler. xDStellt sich nur die Frage -> wie programmierst du die Hardware ohne Software? Denn die gibts ja noch nicht, da sie lauffähige Hardware vorraussetzt. Merkste was!?
Es geht hier auch nicht ums schenken, sondern um künstliche Schranken. Aber der Punkt ist sowieso nur noch theoretisch, da ja wie gesagt OpenCL praktisch tot ist. Da kann man nur noch resignieren und hofft darauf, dass das Übersetzungs-Plugin von AMD für CUDA den Rest übernimmt und frisst dann halt. Einen Vorteil hat die ganze Sache: Jetzt, wo die ganze Infrastruktur um CUDA herum gebaut ist, braucht es für AMD Karten auch nur noch dieses kleine plugin und dann kann ich auch auf AMD-Karten rechnen lassen.Das ist in etwa das, was wir die Tage schonmal hatten... Mir schenkt keiner was. Dir idR auch nicht? Firmen am Markt ebenso nicht.
Da gibst eigentlich ausschließlich die ICH Ansicht. Die Wohlfahrt mal ausgeklammert...