Forum: PC-Programmierung OpenCL, CUDA oder Microsoft Direct Compute ?


von Hans-werner M. (hanswerner)


Lesenswert?

Ich versuche gerade den Unterschied der einzelnen Technologien 
herauszuarbeiten. Ich beziehe mich dabei auf Microsoft Windows ab 
Version 7 oder 8.
Nvidia unterstützt nicht die (Aktuelle ?) Version 1.2 von OpenCL sondern 
nur die Version 1.1 mit den Grafikkarten ab Ende 2009. Von AMD sind 
Grafikkarten ab HD7xxx z.B. HD7750 für OpenCL Version 1.2 erhältlich. 
Nvidia unterstützt seine eigene CUDA Technologie. Wie sieht es bezüglich 
Microsoft Direct Compute aus ? Ist dies Teil von DirectX und wird von 
fast allen Grafikkarten unterstützt ? Wo liegen die Vor- und Nachteile 
der 3 Technologien ? Was wird sich am Markt durchsetzen ? Wie heisst das 
Gegenstück von AMD zu CUDA ?

von adsf (Gast)


Lesenswert?

AMD hat meines wissens kein "Gegenstück" zu CUDA, d.h. keine eigene 
Schnittstelle. Microsoft Direct Compute wird wohl vorallem in der 
Spieleindustrie und vielleicht bei Anwendungssoftware relevant werden.
Die ganze Technologie ist noch relativ neu und die meisten Anwendungen 
werden zusammen mit der Hardware geplant und umgesetzt, gerade im 
HPC-Bereich, also ist es dort nicht so wichtig, dass man zu allen Karten 
kompatibel ist. Mir scheint CUDA gegenüber OpenCL die Nase vorn zu 
haben, allerdings ist das nur Bauchgefühl und ich habe keine Zahlen um 
das zu unterstützen.
Gerade für Spezialanwendungen werden jedoch vermutlich Intels Xeon Phi 
ernsthafte Konkurrenten werden, da die Softwareentwicklung für diese 
vermutlich deutlich billiger ist.

von Hans-werner M. (hanswerner)


Lesenswert?

Grafikkarten von AMD unterstützen sowohl Microsoft Direct Compute als 
auch OpenCL; CUDA hingegen nicht. CUDA ist anscheinend eine Technologie 
welche nur von Nvidia unterstützt wird. Da Nvidea CUDA für seine eigenen 
Grafikkarten opimiert und zumindest OpenCL weitgehend hardware 
unabhängig sein soll, bringt CUDA gegenüber OpenCL gewisse Vorteile bei 
der Ausführungsgeschwindigkeit. Soweit das bisherige Verständnis. Wie 
Microsoft Direct Compute in diesem Zusammenhang zu bewerten ist habe ich 
noch nicht verstanden. Tatsache ist das im FPGA Bereich OpenCL von 
Altera unterstützt wird. Wie es bei Xilinx aussieht habe ich noch nicht 
herausgefunden. Fragt sich auch inwieweit die einzelnen 
Programmiersprachen CUDA, Microsoft Direct Compute und OpenCL 
unterstützen. In allen 3 Fällen scheint es nur um entsprechende APIs 
bzw. Bibliotheken für die einzelnen Programmiersprachen zu gehen.

von Rolf M. (rmagnus)


Lesenswert?

Hans-werner M. schrieb:
> Fragt sich auch inwieweit die einzelnen Programmiersprachen CUDA,
> Microsoft Direct Compute und OpenCL unterstützen. In allen 3 Fällen
> scheint es nur um entsprechende APIs bzw. Bibliotheken für die einzelnen
> Programmiersprachen zu gehen.

Es gibt für alle drei C-APIs, die prinzipiell von so ziemlich jeder 
Sprache aus genutzt werden können. Wo's keine expliziten Bindings gibt, 
kann man sich z.B. mit swig ein Modul erzeugen.
CUDA und OpenCL sind auch abseits von Windows verfügbar, DirectCompute 
nicht. OpenCL ist dabei sowohl von der Software- als auch der 
Hardware-Seite die am wenigsten plattformabhängige Variante.

> Da Nvidea CUDA für seine eigenen Grafikkarten opimiert und zumindest
> OpenCL weitgehend hardware unabhängig sein soll, bringt CUDA gegenüber
> OpenCL gewisse Vorteile bei der Ausführungsgeschwindigkeit.

Die Wikipedia meint dazu:

OpenCL ist universeller [als CUDA] und bietet eine Implementierung für 
GPUs von Nvidia, AMD (vormals ATI), VIA, S3 und Anderen. Dazu ist eine 
CPU-Unterstützung für x86-Prozessoren über die SSE3-Erweiterungen 
implementiert, weiter bietet IBM eine OpenCL-Implementierung für die 
Power-Architektur und die Cell Broadband Engine an. Aus dem breiteren 
Ansatz von OpenCL ergibt sich im Vergleich von CUDA mit OpenCL (auf 
identischer Nvidia-Hardware) allerdings ein merklicher 
Performance-Nachteil – je nach Problemstellung sind Einbußen zwischen 5 
und 50 % zu beobachten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.