Projekte und Forschung, Tech Talks

Tech-Talk: High Level GPU-Programmierung mit SYCL

Redaktion IMVS | 9. Oktober 2023

Hochleistungsrechner und parallele Berechnungen sind in der heutigen Zeit nicht mehr wegzudenken. Die dabei verwendeten Hardware-Komponenten können komplexe Berechnungen erheblich beschleunigen, sind jedoch auch nicht trivial zu programmieren. SYCL ist ein offener Standard, um die parallele und effiziente Programmierung solcher Hardware-Komponenten zu vereinfachen.

Paul Sonnenschein hat sich mit dem Thema befasst und vorgestellt, wozu SYCL1 dient und im Rahmen des Tech-Talks einige praktische Beispiele aufgezeigt. Single-source Heterogeneous-Hardware Programming, so die Tagline für SYCL, ermöglicht es, mit nur einer Programmierschnittstelle verschiedene Hardware und somit verschiedene Beschleuniger (Accelerators) anzusprechen. Beispiele für Beschleuniger sind GPU, CPU und FPGA von diversen Herstellern. Die Entwicklungsarbeit wird durch eine Abstraktionsschicht vereinfacht, die es ermöglicht die verschiedene Hardware mit derselben API zu programmieren. Warum ist das praktisch?

Ohne diese Abstraktionsschicht muss ein Programm, welches beispielsweise komplexe Berechnungen in einem Bild durchführt und mit CUDA für Nvidia GPUs geschrieben ist, nochmals mit einer komplett anderen API geschrieben werden, will man dieselben Berechnungen auf einer Intel CPU ausführen. Mit SYCL wird das Programm einmal geschrieben und zur gewünschten Ziel-Hardware kompiliert. Entwickelt wird dabei in C++. Das langfristige Ziel von SYCL besteht darin, in die Standardbibliothek von C++ aufgenommen zu werden.

SYCL unterstützt eine Vielzahl unterschiedlichster Recheneinheiten.

Nebst spannenden Demo Applikationen und einigen Implementierungskonzepten von SYCL zeigte Paul Sonnenschein auf, wie SYCL mit parallelen Berechnungen umgeht. Dabei spielt das Konzept des “Graph of Kernel Execution” eine zentrale Rolle. Anhand von Abhängigkeiten zwischen verschiedenen Daten in Queues, welche Actions bzw. Instruktionen an ein Device (CPU, GPU, …) enthalten, ergibt sich ein Dependency-Graph für die Reihenfolge der Ausführung.

Durch die Abhängigkeiten der Daten in den Queues, entscheidet der Algorithmus von SYCL, ob die Instruktionen auf dem Device effektiv auf verschiedenen Kernel, also parallel, oder nacheinander sequenziell ausführt werden. Dieser Mechanismus erleichtert die ohnehin komplexe Programmierung mit Hochleistung-Recheneinheiten auch im Bereich der parallelen Verarbeitung von Daten.

Sycl ist somit eine leistungsstarke Schnittstelle, die die Programmierung von Accelerators vereinfacht und die Portabilität von Anwendungen in der Welt des High-Performance Computing verbessert.

Tech-Talk: Paul Sonnenschein (paul.sonnenschein@fhnw.ch) Assistent und MSE Student

Blog Beitrag: Andri Wild (andri.wild@fhnw.ch) Assistent und MSE Student

[1] SYCL, khronos SYCL Overview – The Khronos Group Inc

Prof. Dr. Christoph Stamm

Dozent für Informatik

Adresse:

Bahnhofstrasse 6 IMVS, 5.2B01

Telefon: +41562027832(direkt)
zurück zu allen Beiträgen

Kommentare

Keine Kommentare erfasst zu Tech-Talk: High Level GPU-Programmierung mit SYCL

Neuer Kommentar

×