NVIDIA-GPUs erhalten SYCL-Unterstützung, nachdem Codeplay zur Entwicklung des DPC++-Standards beigetragen hat

Nach der Unterstützung durch führende Unternehmen wie Intel, Xilinx, Renesas und Imagination Technologies, die SYCL (ausgesprochen „Sichel“), können Entwickler, die NVIDIA-GPUs verwenden, nun ebenfalls davon profitieren. Codeplay, die Organisation, die seit jeher einen aktiven Beitrag zur SYCL-Community leistet, hat nun die fortschrittliche Entwicklung von DPC++ (Data Parallel C++) erreicht, die das Recycling und die Wiederverwendung von Code auf mehreren Hardwareplattformen ermöglicht. Das Ergebnis ist ComputeCpp, Codeplays eigene Implementierung von SYCL.

Die neueste Edition von ComputeCpp bietet experimentelle Unterstützung für NVIDIA-GPUs mit OpenCL und NVIDIAs PTX

Im vergangenen Jahr hat Intel einen entscheidenden Schritt unternommen, um SYCL voranzutreiben und sogar mit der Arbeit am oneAPI-Standard begonnen. Die oneAPI enthält DPC++ (eine Implementierung von SYCL mit Erweiterungen) für Intels CPUs, GPUs und FPGAs. Die Bewegung wurde bald ziemlich groß und gewann an Schwung, nachdem SYCL von Xilinx, Renesas und Imagination Technologies unterstützt wurde. Einfach ausgedrückt, können Softwareentwickler jetzt mit SYCL auf eine Vielzahl von Geräten abzielen.

ComputeCpp bietet experimentelle Unterstützung für NVIDIA-GPUs mit OpenCL und NVIDIAs PTX. DPC++ (Intels SYCL-Implementierung) bietet jedoch die Möglichkeit, die in den LLVM-Compiler integrierte NVIDIA-GPUs vollständig zu unterstützen, ohne OpenCL zu durchlaufen. Codeplay gab bekannt, dass sie die erste experimentelle Phase ihrer Implementierung Open-Sourcing anbieten, die es SYCL-Entwicklern ermöglicht, auf NVIDIA-GPUs abzuzielen. Die Codebasis für diese Implementierung bleibt ineine separate Gabel sowohl aus dem Hauptprojekt des LLVM-Compilers als auch aus dem DPC ++ - Zweig. Die Organisation fügte hinzu, dass sie beabsichtigen, mit Intel zusammenzuarbeiten, um die NVIDIA-GPU-Unterstützung zum Upstream-Intel/LLVM-Compiler hinzuzufügen.

Wie können Entwickler von der SYCL-Unterstützung für NVIDIA-GPUs profitieren?

Dieses Projekt ermöglicht es Entwicklern, mit SYCL-Code auf NVIDIA-GPUs abzuzielen, ohne die OpenCL-Schicht im System durchlaufen zu müssen. Mit anderen Worten, mit nur einer NVIDIA-GPU können Entwickler DPC++ auf ihrem System ausführen, um SYCL-Anwendungen zu kompilieren. Darüber hinaus kann jede vorhandene CUDA-Anwendung mithilfe der CUDA-Unterstützung inkrementell nach SYCL portiert und dann auf einer Plattform ohne CUDA ausgeführt werden. Das spart eindeutig viel Zeit und wiederholte Anstrengungen.

Codeplay hat Anweisungen zur README-Datei des Projekts bereitgestellt, in der erklärt wird, wie das NVIDIA-Back-End für DPC++ verwendet wird. Entwickler müssen beim Kompilieren einige Flags und Code verwenden, um ihre Geräteauswahl einzurichten, um sicherzustellen, dass die Laufzeitumgebung weiß, auf welches Gerät sie abzielen soll. Insbesondere der Abschnitt „SYCL-Toolchain mit Unterstützung für NVIDIA CUDA erstellen” und die Clang-Compiler-Optionen habenspezifische Anweisungen.

Codeplay bestätigte, dass das Projekt erfolgreich mit Ubuntu 18.04 unter Verwendung von CUDA 10.1 auf einer Titan RTX GPU (Rechenfunktionen 7.5) ausgeführt wurde. Das Team versichert, dass es auch auf anderen Linux-Versionen mit jeder NVIDIA-GPU funktionieren sollte, die mit SM 5.0 oder höher kompatibel ist. Die kompilierte SYCL-Anwendung kann jedoch nur entweder auf CUDA oder OpenCL abzielen, nicht auf beide gleichzeitig.

Das Team warnt außerdem davor, dass die Erstveröffentlichung des Projekts nicht optimiert wurde, sodass die Leistung möglicherweise nicht unter allen Umständen optimal ist. Mit anderen Worten, Entwickler müssen dasselbe bereitstellen und die Geschwindigkeitsverbesserungen selbst ermitteln, falls vorhanden. Dies liegt daran, dass die Codegenerierung keine bestimmten Optimierungsdurchgänge anwendet. Darüber hinaus verwendet die CUDA-Implementierung der SYCL-Spezifikation in der Plugin-Schnittstelle keine erweiterten CUDA-Funktionen.

Codeplay hat gezeigt, dass die Steigerung der Kompatibilität und Funktionalität weiterhin oberste Priorität hat. Sie gaben an, dass der aktuelle Fokus darauf liegt, so viele Funktionen wie möglich zu implementieren, damit Entwickler eine Reihe von SYCL-Anwendungen auf NVIDIA-GPU-Plattformen ausführen können. Leistungsoptimierungen werden später mit Hilfe von Community-Mitgliedern erfolgen.

Facebook Twitter Google Plus Pinterest