Zum Hauptinhalt Zur Navigation

Golem Plus Artikel
Softwareentwicklung mit Sycl:
Parallel programmieren für (fast) jede Plattform

Cuda for fun and profit
Sycl hat den Anspruch, parallelen Code auf so ziemlich jeden Beschleuniger zu bringen. Wir zeigen die Unterschiede zu Cuda und den Weg zu eigenem Code.
/ Johannes Hiltscher
Kommentare News folgen (öffnet im neuen Fenster)
CPUs, GPUs, FPGAs - auf all diesen Geräten kann Sycl-Code laufen. (Bild: Johannes Hiltscher/Golem.de)
CPUs, GPUs, FPGAs - auf all diesen Geräten kann Sycl-Code laufen. Bild: Johannes Hiltscher/Golem.de

Cuda, Nvidias Programmierumgebung für die eigenen GPUs, gilt noch immer als zentrales Erfolgsgeheimnis des Unternehmens. Doch es gibt herstellerunabhängige Alternativen, die den eigenen Code auf wesentlich mehr Plattformen lauffähig machen. Sycl ist dabei nach OpenCL der zweite Ansatz, der im Kontext der Khronos Group spezifiziert wird. Sycl sollte ursprünglich OpenCL abstrahieren und macht daher einiges anders als seine älteren Vorgänger. So setzt es komplett auf C++ und kommt ohne Spracherweiterungen aus. Es soll eine Umgebung bieten, die grundsätzlich Code ohne Anpassungen auf so unterschiedlichen Plattformen wie CPUs, GPUs, NPUs oder FPGAs (Field Programmable Gate Arrays) lauffähig macht – und dafür sorgt, dass der Code immer irgendwo läuft. Auch die gleichzeitige Nutzung verschiedener Hardware ist möglich, und der Einstieg nicht einmal schwer.

Als Entwickler sollte man mit jüngeren Entwicklungen von C++ vertraut sein, insbesondere Lambda-Ausdrücke sind in Sycl-Programmen allgegenwärtig. Die aktuelle Version des Standards, Sycl 2020, nutzt als Grundlage den Standard C++-17, die API (Application Programming Interface) setzt intensiv auf Templates. Bevor wir ein erstes Programm mit Sycl parallelisieren, werfen wir einen Blick auf die grundlegenden Konzepte.

Golem Plus Artikel