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 ?
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.