Ist es möglich, CUDA auf AMD-GPUs auszuführen?

73

Ich möchte meine Fähigkeiten auf GPU-Computing ausweiten. Ich bin mit Raytracing und Echtzeitgrafiken (OpenGL) vertraut, aber die nächste Generation von Grafiken und Hochleistungscomputern scheint GPU-Computing oder ähnliches zu sein.

Ich verwende derzeit eine AMD HD 7870-Grafikkarte auf meinem Heimcomputer. Könnte ich dafür CUDA-Code schreiben? (Meine Intuition ist nein, aber seit Nvidia die Compiler-Binärdateien veröffentlicht hat, könnte ich mich irren).

Eine zweite allgemeinere Frage lautet: Wo fange ich mit GPU-Computing an? Ich bin mir sicher, dass dies eine häufig gestellte Frage ist, aber das Beste, was ich gesehen habe, war ab 08 'und ich denke, das Feld hat sich seitdem ziemlich verändert.

Lee Jacobs
quelle

Antworten:

55

Nein, dafür können Sie CUDA nicht verwenden. CUDA ist auf NVIDIA-Hardware beschränkt. OpenCL wäre die beste Alternative.

Khronos selbst hat eine Liste von Ressourcen . Wie auch die StreamComputing.eu-Website . Für Ihre AMD-spezifischen Ressourcen möchten Sie möglicherweise einen Blick auf die APP SDK-Seite von AMD werfen .

Beachten Sie, dass es derzeit mehrere Initiativen gibt, um CUDA in verschiedene Sprachen und APIs zu übersetzen / zu kompilieren. Ein solches Beispiel ist HIP . Beachten Sie jedoch, dass dies immer noch nicht bedeutet, dass CUDA auf AMD-GPUs ausgeführt wird.

Bart
quelle
Wie ich dachte. Irgendwelche Ratschläge, wo Sie mit der GPGPU-Programmierung mit openCL beginnen sollen?
Lee Jacobs
3
Lesen Sie das OpenCL-Programmierhandbuch . Eines der großartigen Dinge an OpenCL vs CUDA ist die viel bessere Werkzeugunterstützung
Callum Rogers
Obwohl es vorher nicht möglich war. Es ist jetzt möglich, Cuda-Code auf AMD-Hardware auszuführen. Das Konzept besteht darin, es in die HIP-Sprache zu konvertieren. Siehe meine Antwort unten, um die Links zu überprüfen.
Yeasin Ar Rahman
Das bedeutet immer noch nicht, dass Sie CUDA auf einem AMD-Gerät ausführen. Es bedeutet lediglich, dass Sie CUDA-Code in C ++ - Code konvertieren, der die HIP-API verwendet. Es werden auch nicht alle Funktionen unterstützt. Ich würde dies nicht als CUDA-Workflow für AMD-Geräte klassifizieren.
Bart
@ Bart Ich denke, es wurde im Kommentar erwähnt, dass Sie es in eine Zwischensprache konvertieren müssen. Und zu den Funktionen geben Sie bitte an, welche allgemeinen Funktionen nicht unterstützt werden. Ich denke, die meisten davon sind es. Es sind jedoch einige spezielle plattformbezogene Optimierungen erforderlich, wenn Sie zusätzliche Leistung benötigen. In dem Dokument wird angegeben, dass die Leistung jedem nicht optimierten / nativen CUDA-Code entspricht.
Yeasin Ar Rahman
13

Sie können NVIDIA® CUDA ™ -Code auf einem Mac und in der Tat auf OpenCL 1.2-GPUs im Allgemeinen mit Coriander ausführen . Offenlegung: Ich bin der Autor. Anwendungsbeispiel:

cocl cuda_sample.cu
./cuda_sample

Ergebnis: Geben Sie hier die Bildbeschreibung ein

Hugh Perkins
quelle
8

Sie können CUDA nicht für die GPU-Programmierung verwenden, da CUDA nur von NVIDIA-Geräten unterstützt wird. Wenn Sie GPU Computing lernen möchten, empfehle ich Ihnen, CUDA und OpenCL gleichzeitig zu starten. Das wäre sehr vorteilhaft für Sie. Wenn Sie über CUDA sprechen, können Sie mCUDA verwenden. Die GPU von NVIDIA ist nicht erforderlich.

sandeep.ganage
quelle
8

Jep. :) Mit Hipify können Sie CUDA-Code sehr einfach in HIP-Code konvertieren, der kompiliert werden kann und sowohl auf AMD- als auch auf nVidia-Hardware ausgeführt werden kann. Hier sind einige Links

GPUÖffnen Sie eine sehr coole Website von AMD mit unzähligen Tools und Softwarebibliotheken, die Sie bei verschiedenen Aspekten des GPU-Computing unterstützen, von denen viele auf beiden Plattformen funktionieren

HIP Github Repository, das den Prozess zum Hipifizieren zeigt

HIP GPUOpen Blog

Yeasin Ar Rahman
quelle
6

Ich denke, dass es in AMD FirePro-GPUs bald möglich sein wird. Siehe Pressemitteilung hier, aber die Unterstützung für die Entwicklungstools kommt im ersten Quartal 2016:

Für das erste Quartal 2016 ist ein Frühzugangsprogramm für die Tools der "Boltzmann-Initiative" geplant.

Léo Léopold Hertz 준영
quelle
In dieser Pressemitteilung ging es anscheinend um hcc (grob gesagt AMDs Analogon zu nvcc) und HIP (das eine gemeinsame API für die Verwendung auf AMD- und nVidia-Hardware definiert und implementiert, im Grunde genommen als reine Header-Bibliothek über CUDA und a ganze Laufzeitbibliothek für hcc). In dieser anderen Antwort gibt es eine relevante Linkfarm .
SamB
-3

Ab 2019_10_10 habe ich es NICHT getestet, aber es gibt das "GPU Ocelot" -Projekt

http://gpuocelot.gatech.edu/

Das Unternehmen versucht laut Werbung, CUDA-Code für eine Vielzahl von Zielen, einschließlich AMD-GPUs, zu kompilieren.

Martin Vahi
quelle
5
Wenn Sie unter dem von Ihnen geposteten Link etwas mehr lesen, werden Sie feststellen, dass die Entwicklung von Ocelot 2012 gestoppt wurde und das AMD-Backend nie abgeschlossen wurde. Dies ist in keiner Weise eine praktikable Option im Jahr 2019 (und es war kaum im Jahr 2011)
Talonmies