Kontakt aufnehmen
 Dauer 28 Stunden

Schulungsübersicht

Einführung

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

Erste Schritte

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

OpenCL-API

  • Verständnis der Rolle der OpenCL-API im Hostprogramm
  • Verwendung der OpenCL-API zur Abfrage von Geräteinformationen und -fähigkeiten
  • Verwendung der OpenCL-API zur Erstellung von Kontexten, Warteschlangen, Puffern, Kernen und Ereignissen
  • Verwendung der OpenCL-API zum Einreichen von Befehlen, wie z. B. Lesen, Schreiben, Kopieren, Mappen, Unmappen, Ausführen und Warten
  • Verwendung der OpenCL-API zur Behandlung von Fehlern und Ausnahmen

OpenCL C

  • Verständnis der Rolle von OpenCL C im Geräteprogramm
  • Verwendung von OpenCL C zum Schreiben von Kernen, die auf dem Gerät ausgeführt werden und Daten verarbeiten
  • Verwendung von OpenCL C-Datentypen, Qualifikatoren, Operatoren und Ausdrücken
  • Verwendung von eingebauten OpenCL C-Funktionen, wie z. B. mathematische, geometrische, relationale Funktionen usw.
  • Verwendung von OpenCL C-Erweiterungen und Bibliotheken, wie z. B. atomar, image, cl_khr_fp16 usw.

OpenCL-Speichermodell

  • Verständnis des Unterschieds zwischen Host- und Gerätespeichermodell
  • Verwendung von OpenCL-Speicherräumen, wie z. B. global, lokal, konstant und privat
  • Verwendung von OpenCL-Speicherobjekten, wie z. B. Puffer, Bilder und Pipes
  • Verwendung von OpenCL-Speicherzugriffsmodi, wie z. B. nur Lesezugriff, nur Schreibzugriff, Lese-/Schreibzugriff usw.
  • Verwendung des OpenCL-Speicherkonsistenzmodells und von Synchronisationsmechanismen

OpenCL-Ausführungsmodell

  • Verständnis des Unterschieds zwischen Host- und Geräteausführungsmodell
  • Verwendung von OpenCL-Arbeitselementen, Arbeitsgruppen und ND-Bereichen zur Definition der Parallelität
  • Verwendung von OpenCL-Arbeitselementfunktionen, wie z. B. 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 z. B. get_num_groups, get_global_size, get_local_size usw.

Debugging

  • Verständnis von häufigen Fehlern und Bugs in OpenCL-Programmen
  • Verwendung des Visual Studio Code-Debuggers zur Prüfung von Variablen, Unterbrechungen, 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

  • Verständnis der Faktoren, die die Leistung von OpenCL-Programmen beeinflussen
  • Verwendung von OpenCL-Vektordatentypen und Vektorisierungstechniken zur Verbesserung der arithmetischen Durchsatzleistung
  • Verwendung von OpenCL-Loop-Unrolling- und Loop-Tiling-Techniken zur Reduzierung der Steuerungsüberkopflast und Steigerung der Lokalität
  • Verwendung von OpenCL-lokalen Speicher und lokalen Speicherfunktionen zur Optimierung der Speicherzugriffe und des Durchsatzs
  • Verwendung von OpenCL-Profiling und Profiling-Tools zur Messung und Verbesserung der Laufzeit und der Ressourcennutzung

Voraussetzungen

  • Verständnis der C/C++-Sprache und von Konzepten der parallelen Programmierung
  • Grundkenntnisse der Computerarchitektur und der Speicherhierarchie
  • Erfahrung mit Befehlszeilentools und Code-Editoren

Zielgruppe

  • Entwickler, die lernen möchten, wie OpenCL zur Programmierung heterogener Geräte und zur Nutzung ihrer Parallelität eingesetzt wird
  • 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 erkunden und die Leistungsfähigkeit ihres Codes optimieren möchten

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien