News Nvidia baut GPU-Computing mit PGI-Übernahme aus

Jan

Chefredakteur
Teammitglied
Registriert
Apr. 2001
Beiträge
15.171
Der GPU-Entwickler Nvidia übernimmt mit sofortiger Wirkung die The Portland Group (PGI), das gaben beide Unternehmen in der Nacht zum Dienstag bekannt. PGI entwickelt und vertreibt Software-Compiler, die das Berechnen von Programmcode auf GPUs ermöglichen.

Zur News: Nvidia baut GPU-Computing mit PGI-Übernahme aus
 
Was ich an dieser Stelle nicht verstehe ist, warum man mit dem nvcc mal wieder ein eigenes Süppchen kocht. CUDA ist in dem Sinne eine proprietäre Lösung, die wieder von allen Entwicklern wie eine Black-Box betrachtet werden muss. Tiefgreifende Änderungen in der Codeerzeugung kann man hier vergessen. LLVM ist ein ideals Compilerframework, dass sich auch für die Generierung von OpenCL Code eignet. Würde nVIDIA seine Kapazitäten da rein stecken, gäbe es sicherlich ganz andere Fortschritte. Zudem wächst eine offene Spezifikation (OCL von Khronos) meist viel schneller und Anwender-zentrierter.

Ein m.M.n. prominentes Beispiel ist Badaboom (Videoconverter). Hätte man hier ffmpeg (und libx264, wurde beides mit V2.0 nachgezogen) direkt OpenCL fähig gemacht, wäre mehr daraus geworden. Den Trend in Richtung GPU Computing verfolge ich seit der ersten Stunde und finde es als sehr sinnvolle Erweiterung gerade wenn man mit parallelisierbaren Algorithmen arbeitet. In dem Sinne, schauen wir das da kommt. :)
 
Nvidia hat doch kein Interesse daran Zeit und Geld in etwas zu stecken, was dann auch anderen zu Gute käme. Mit CUDA können sie die Kunden an sich binden; und je mehr Zeit und Geld die Kunden in CUDA investiert haben, desto stärker.
 
Da hat nVidia noch einiges auf zu holen.
Die aktuellen Radeons sind in dem Bereich zumindest bei den Consumer
Produkten Haus hoch überlegen.

Und wie gut nVidia ihre Software auf die CPU portiert ist
spätestens seit dem Physix Fiasko bekannt.

EDIT:
Und CUDA finde ich sowieso unnötig
wieso man was eigenes entwickelt wo es doch OpenCL gibt
Versteh ich ned ganz.
Die sollten lieber ihre Karten/Treiber auf OpenCL anpassen

EDIT2:
Und Direct-Compute
 
Zuletzt bearbeitet:
Cuda wird aber in der Videopostpro von 95% aller Programme unterstützt, und das auch seit mehreren Jahren schon, während manche Entwickler jetzt erst anfangen, OpenCL Support einzubauen (Adobe CC zB.).

Warum sollte ich also bisher auf AMD Karten gesetzt haben, deren Nutzen quasi gegen 0 tendiert?
 
hm... PGI ist schon ein Name und ein gewisses "Schwergewicht" in dem Bereich, in dem Sie arbeiten.

Ich frag mich echt was das für AMD bedeutet. Die arbeiten mit PGI meines Wissens nach nämlich auch sehr eng zusammen. Könnte also ein herber Rückschlag für AMD werden.
 
smalM schrieb:
Nvidia hat doch kein Interesse daran Zeit und Geld in etwas zu stecken, was dann auch anderen zu Gute käme. Mit CUDA können sie die Kunden an sich binden; und je mehr Zeit und Geld die Kunden in CUDA investiert haben, desto stärker.

Rein marktwirtschaftlich hast du vollkommen Recht. Ich war letztes Jahr an der Duke univeristy in NC in den USA. Dort habe ich mir einige Projektpräsentationen angeschaut die sich massiv mit dem Thema GPU Computing befasst haben. Ich habe mich in meiner AG an der Uni ebenfalls damit befasst. Dort wurde nur CUDA eingesetzt, wir haben auf LLVM +OpenCL gesetzt. Die Vorteile letzterer Lösung haben nach einigen Gesprächen mit den Gruppenmitgliedern schnell überwogen, da a) die Portabilität wesentlich höher ist und b) auch Probleme, die ggf. in der eingeschränkten Verwendbarkeit von CUDA liegen, nicht behoben werden können.

Natürlich würde ich auch etwas proprietäres erzeugen und die Leute damit anfixen, sodass sie immer wieder auf meine Lösung setzen. Als OpenSource Verfechter halte ich davon nur nicht so viel. :p

Ice-Lord schrieb:
Da hat nVidia noch einiges auf zu holen.
Die aktuellen Radeons sind in dem Bereich zumindest bei den Consumer
Produkten Haus hoch überlegen.
Und wie gut nVidia ihre Software auf die CPU portiert ist
spätestens seit dem Physix Fiasko bekannt.
[...]

Das stimmt allerdings @Power. Da sind die AMD Karten um einiges besser aufgestellt. Zudem ist das SDK von AMD erheblich besser. (Das ist aber meine subjektive Meinung.) Und gerade die Plattformabhängigkeit sehe ich als zunehmendes Problem: ARM Prozessoren werden vielerorts eingesetzt. Hier ist der nvcc nicht zu gebrauchen. LLVM oder der GCC haben damit gar kein Problem.
 
GuaRdiaN schrieb:
Ich war letztes Jahr an der Duke univeristy in NC in den USA. Dort habe ich mir einige Projektpräsentationen angeschaut die sich massiv mit dem Thema GPU Computing befasst haben. Ich habe mich in meiner AG an der Uni ebenfalls damit befasst. Dort wurde nur CUDA eingesetzt, wir haben auf LLVM +OpenCL gesetzt. Die Vorteile letzterer Lösung haben nach einigen Gesprächen mit den Gruppenmitgliedern schnell überwogen, da a) die Portabilität wesentlich höher ist und b) auch Probleme, die ggf. in der eingeschränkten Verwendbarkeit von CUDA liegen, nicht behoben werden können.

Das ändert aber nichts daran, dass das Programmieren mit Cuda für den Entwickler um Größenordnungen effizienter (sprich: Ziele werden erreicht) ist. Nvidia hat eine Menge in die Zugänglichkeit der Tools (Entwicklungsumgebung, Debugger) investiert, das merkt man. Bei allen GPU-Codes, die über eine gewisse Simplizität hinausgehen, ist Cuda schon deutlich allen anderen Lösungen überlegen - und das ist auch nicht ohne weiteres einzuholen.

Das abzustreiten und auf virtuelle Vorteile zu setzen halte ich für nicht sehr überzeugend. Jedenfalls nicht, wenn man "demnächst" eine Aufgabe abzuschießen hat und nicht mit "ganzheitlichen Diskussionen" durchkommen wird.
 
Ich denke eher, dass dies eine strategische Übernahme war, denn meies wissens hat AMD sehr eng mit der PGI für einen HSA-Compiler zusammengearbeitet. Wäre der sehr gut geworden hätte es recht eng für Nvidia werden können.
 
blöderidiot schrieb:
Das ändert aber nichts daran, dass das Programmieren mit Cuda für den Entwickler um Größenordnungen effizienter (sprich: Ziele werden erreicht) ist. Nvidia hat eine Menge in die Zugänglichkeit der Tools (Entwicklungsumgebung, Debugger) investiert, das merkt man. Bei allen GPU-Codes, die über eine gewisse Simplizität hinausgehen, ist Cuda schon deutlich allen anderen Lösungen überlegen - und das ist auch nicht ohne weiteres einzuholen. [...]

Das kann ich nicht beurteilen, da ich CUDA in diesem Kontext noch nicht selbst eingesetzt habe. Bei der Exploration möglicher Grundlagen ist CUDA für mich gerade wegen closed-source heraus gefallen. Das zugrunde liegende Backend (eben der Compiler für CUDA Code) erlaubt keinerlei eingriffe. Wenn ein gereiftes Framework existiert hat dies natürlich im Entwicklungsprozess einen erheblichen Mehrwert. Allerdings sehe ich dieses Thema sehr nah an OpenGL vs. DirectX. Wie lange es dauert, was aufzuholen kann ich ebenfalls nicht einschätzen. Effizienter scheint mir da aber ein einfaches Argument zu sein: Es wird Know-How gekauft (nVidia bietet es ja auch an). Aus akademischer Perspektive halte ich davon nur nicht fürchterlich viel. Quellen, welche Library den effizienter zu schreibenden Code (C++) erlaubt finde, kann ich auf die Schnelle nicht finden. Einige Benches (http://web.eecs.umich.edu/~valeria/research/publications/CODES12SystemC.pdf, http://es.cs.uni-kl.de/publications/datarsg/BaSc12b.pdf) zeigen, dass CUDA auf nVIDIA Karten schneller ist. Aber das ist wohl kein Wunder. xD

Meine Erfahrung mit den Produkten auf quelloffenen Plattformen (ich verwende für Softwareentwicklung ausschließlich quelloffene Alternativen) ist da jedoch recht eindeutig. Hier spielt OpenCL wegen der Flexibilität klar Trümpfe aus. Ich vermute aber, dass es dann im Wesentlichen die Frage bleibt wie man es gelernt hat: Ich mag IDEs beispielsweise nicht. Debugger Compiler und Make auf der Shell mit eMacs gehen mir schneller von der Hand. AMD hat vor einiger Zeit (als AMD Karten in Macs steckten) da einen erheblichen Vorsprung gehabt. Auch der ease-of-use Aspekt war absolut grandios. Aber auch das hatte einen proprietären Beigeschmack.
 
Wäre ganz gut wenn es mal wieder Neuerungen im GPU Computing gibt. Gerade da ist Nvidia AMD ja weit unterlegen (gewesen).

Ist eigentlich anders herum. Vom Featureset ist NVIDIA AMD seit Jahren weit voraus.

Die Vorteile letzterer Lösung haben nach einigen Gesprächen mit den Gruppenmitgliedern schnell überwogen, da a) die Portabilität wesentlich höher ist und b) auch Probleme, die ggf. in der eingeschränkten Verwendbarkeit von CUDA liegen, nicht behoben werden können.

Dies sind m.E. die einzigen beiden Vorteile von OpenCL. Allerdings kommen dafür viele Nachteile unter anderem:
-Trennung von Hostcode und Kernelcode . Dadurch hat man meist unnötig Redundanzen drinnen, muss ich Gedanken um das Alignment machen und umständlich Textdateien einlesen. In CUDA wird das eben vermieden, dass man beides in ein und die selbe Datei schreibt, und es dem NVCC dann rausziehen lässt.
-Nur OpenCL C, während CUDA C/CPP Code kann.
-Viele CUDA-Features von NVIDIA-Karten werden in OpenCL nicht unterstützt, bzw. OpenCL häng den Features von CUDA Jahre hinterher (zB. Warpvotefunctions, malloc innerhalb eines Kernels, Rekursion, Dynamic Parallelism).
-Pointer Support in CUDA, während man in OpenCL im Prinzip auf Bufferobjekte zugreift. (Mit OpenCL 2.0 wird das allerdings auch aufgeweicht).
-OpenCL-Compile interpretieren die OpenCL-Spezifikationen sehr freizügig. Generell war es für mich immer ganz amüsant meine Kernels durch die OpenCL-Compiler von Intel, AMD und NVIDIA laufen zu lassen, und zu sehen wie jeder andere Fehler gefunden hat oder auch hin und wieder komplett abgestürtzt ist.
-Ungenaue Hardwarespezifikation in OpenCL, wobei man nur ein paar wenige der potentiell wichtigen Hardwareeigenschaften abgfagen kann. Vor allem fehlen unter anderem Warps, Register, Occupancy und viele Eigenschaften der Speicherbereiche und wie Zugriffe auf diese abgearbeitet werden. CUDA spezifiziert die Hardware allerdings exakt. Dadurch kann man anhand der CUDA-Spezifikation sehr gut optimieren, während man in OpenCL entweder auf die CUDA-Spezifikation oder auf die AMD-GPU-Spezifikationen zurückgreifen muss, wenn man optimieren will.

So habe ich auch zuerst angefangen GPGPU per OpenCL zu programmieren. Doch dann bin bekam ich zunehmed zu spüren, dass man bei GPGPU, wegen ihrer Einfachheit, stärker auf die spezifische Hardware optimieren muss, wenn man eine gute Performance besitzen möchte (und aus akademischer Sicht: Denn man sich schon GPGPU auf die Fahnen schreibt, dann macht es m.E. keinen Sinn wenn man lediglich eine For Schleife in einem Algorithmus auf der GPU 1:1 parallelisiert). So begann ich mit der Optimierung des Codes auf die gewünschte Ziel-GPU, eine Fermi-GPU, gemäss der CUDA-Spezifikation. Da diese Optimierungen dann dazu führten, dass der Code auf anderen Devices gar nicht mehr lauffähig war, hatte ich von der Portabilität nun nichts mehr - dem einzigen Vorteil von OpenCL- dafür traten die oben genannten Nachteile auf. So bin ich dann letztendlich zum Schluss gekommen, dass es sich empfiehlt CUDA zu programmieren, wenn man keine Portabilität wünscht und das Programm auf NVIDIA-GPUs lauffähig sein soll.
 
Nai schrieb:
...So bin ich dann letztendlich zum Schluss gekommen, dass es sich empfiehlt CUDA zu programmieren, wenn man keine Portabilität wünscht und das Programm auf NVIDIA-GPUs lauffähig sein soll.

Das würde ich so unterschreiben. Ist auch meine Erfahrung.
 
Cuda wird aber in der Videopostpro von 95% aller Programme unterstützt, und das auch seit mehreren Jahren schon, während manche Entwickler jetzt erst anfangen, OpenCL Support einzubauen (Adobe CC zB.).
Warum sollte ich also bisher auf AMD Karten gesetzt haben, deren Nutzen quasi gegen 0 tendiert?

OpenCL sollte auch als neuer Standard dienen, zur Vergangenheit kann man nur sagen das für Postproduktion im Catalyst Center eine Komponente seit der Radeon 3000er Serie vorhanden ist namens ATi Avivo HD und die Komponente ATi-Stream, diese haben den Zweck als GPGPU-Schnittstelle zu fungieren. Das was man mit Cuda kann, kann man auch mit AMD und Adobe Produkte unterstützen seit CS4 ATi Stream und übrigens damit arbeite ich bei weitem schneller als jede vergleichbare Nvidia Karte. Wenn wir nur Consumer-Karte hernehmen hat nicht mal eine GTX Titan eine Chance gegen mein Gespann. (Übrigens durch ATi-Stream und der Integer-Leistung konnte man bis vor ein Jahr mit AMD in Verbindung zu Bitcoins richtig Geld machen)
 
Zurück
Oben