Schulungsübersicht

Einführung

  • Was ist OpenCL?
  • OpenCL gegen CUDA gegen SYCL
  • Überblick über die OpenCL-Funktionen und -Architektur
  • Einrichten der Entwicklungsumgebung

Erste Schritte

  • Erstellen eines neuen OpenCL-Projekts mit Visual Studio-Code
  • Erkunden der Projektstruktur und der Dateien
  • Kompilieren und Ausführen des Programms
  • Anzeigen der Ausgabe mit printf und fprintf

OpenCL-API

  • Verstehen der Rolle der OpenCL-API im Host-Programm
  • Verwendung der OpenCL-API zur Abfrage von Geräteinformationen und -fähigkeiten
  • Verwendung der OpenCL-API zum Erstellen von Kontexten, Befehlswarteschlangen, Puffern, Kernels und Ereignissen
  • Verwendung der OpenCL-API zum Einreihen von Befehlen, z. B. Lesen, Schreiben, Kopieren, Zuordnen, Aufheben der Zuordnung, Ausführen und Warten
  • Verwendung der OpenCL-API zur Behandlung von Fehlern und Ausnahmen

OpenCL C

  • Verstehen der Rolle von OpenCL C im Geräteprogramm
  • Verwendung von OpenCL C zum Schreiben von Kernels, die auf dem Gerät ausgeführt werden und Daten manipulieren
  • Verwendung von OpenCL C-Datentypen, Qualifiern, Operatoren und Ausdrücken
  • Verwendung der in OpenCL C eingebauten Funktionen, z. B. mathematische, geometrische, relationale usw.
  • Verwendung von OpenCL C-Erweiterungen und -Bibliotheken, wie z. B. atomic, image, cl_khr_fp16 usw.

OpenCL Speichermodell

  • Verstehen des Unterschieds zwischen Host- und Gerätespeichermodellen
  • Verwendung von OpenCL-Speicherbereichen, z. B. global, lokal, konstant und privat
  • Verwendung von OpenCL-Speicherobjekten, wie z. B. Puffer, Bilder und Pipes
  • Verwendung von OpenCL-Speicherzugriffsmodi, z. B. Nur-Lesen, Nur-Schreiben, Lesen-Schreiben usw.
  • Verwendung des OpenCL-Speicherkonsistenzmodells und von Synchronisationsmechanismen

OpenCL-Ausführungsmodell

  • Verstehen des Unterschieds zwischen Host- und Geräteausführungsmodellen
  • Verwendung von OpenCL work-items, work-groups und ND-ranges zur Definition der Parallelität
  • Verwendung von OpenCL-Work-Item-Funktionen, wie get_global_id, get_local_id, get_group_id usw.
  • Verwendung von OpenCL-Arbeitsgruppenfunktionen, wie z.B. barrier, work_group_reduce, work_group_scan, usw.
  • Verwendung von OpenCL-Gerätefunktionen, wie get_num_groups, get_global_size, get_local_size, usw.

Fehlersuche

  • Verstehen der häufigsten Fehler und Bugs in OpenCL-Programmen
  • Verwendung des Visual Studio Code-Debuggers zur Untersuchung von Variablen, Haltepunkten, Aufrufstapel usw.
  • Verwendung von CodeXL zum Debuggen und Analysieren von OpenCL-Programmen auf AMD-Geräten
  • Verwendung von Intel VTune zum Debuggen und Analysieren von OpenCL-Programmen auf Intel-Geräten
  • Verwendung von NVIDIA Nsight zum Debuggen und Analysieren von OpenCL-Programmen auf NVIDIA-Geräten

Optimierung

  • Verstehen der Faktoren, die die Leistung von OpenCL-Programmen beeinflussen
  • Verwendung von OpenCL-Vektordatentypen und Vektorisierungstechniken zur Verbesserung des arithmetischen Durchsatzes
  • Verwendung von OpenCL-Schleifenabwicklungs- und Schleifentiling-Techniken zur Reduzierung des Kontroll-Overheads und zur Erhöhung der Lokalität
  • Verwendung von OpenCL lokalem Speicher und lokalen Speicherfunktionen zur Optimierung von Speicherzugriffen und Bandbreite
  • Verwendung von OpenCL Profiling und Profiling-Tools zur Messung und Verbesserung der Ausführungszeit und Ressourcennutzung

Zusammenfassung und nächste Schritte

Voraussetzungen

  • Kenntnisse der Sprache C/C++ und paralleler Programmierkonzepte
  • Grundkenntnisse der Computerarchitektur und der Speicherhierarchie
  • Erfahrung im Umgang mit Befehlszeilentools und Code-Editoren

Zielgruppe

  • Entwickler, die lernen möchten, wie man OpenCL verwendet, um heterogene Geräte zu programmieren und deren Parallelität auszunutzen
  • Entwickler, die portablen und skalierbaren Code schreiben möchten, der auf verschiedenen Plattformen und Geräten ausgeführt werden kann
  • Programmierer, die die Low-Level-Aspekte der heterogenen Programmierung erforschen und die Leistung ihres Codes optimieren möchten
 28 Stunden

Teilnehmerzahl



Preis je Teilnehmer

Erfahrungsberichte (1)

Kombinierte Kurse

GPU Programming with CUDA

28 Stunden

GPU Programming - OpenCL vs CUDA vs ROCm

28 Stunden

AMD GPU Programming

28 Stunden

ROCm for Windows

21 Stunden

Verwandte Kategorien