Kontakt aufnehmen
 Dauer 28 Stunden

Schulungsübersicht

Einführung

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

Erste Schritte

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

OpenCL API

  • Verständnis 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, Command Queues, Puffern, Kernels und Events
  • Verwendung der OpenCL-API zum Enqueneing von Befehlen wie Lesen, Schreiben, Kopieren, Mappen, Unmapen, Ausführen und Warten
  • Verarbeitung von Fehlern und Ausnahmen mit der OpenCL-API

OpenCL C

  • Verständnis 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 Datentypen, Qualifiern, Operatoren und Ausdrücken in OpenCL C
  • Verwendung eingebaute Funktionen in OpenCL C, wie z. B. Mathematik, Geometrie, Relationen usw.
  • Verwendung von Erweiterungen und Bibliotheken in OpenCL C, wie z. B. atomar, image, cl_khr_fp16 usw.

OpenCL-Speichermodell

  • Verständnis des Unterschieds zwischen den Speichermodellen für Host und Gerät
  • Verwendung von OpenCL-Speicherräumen wie global, lokal, konstant und privat
  • Verwendung von OpenCL-Speicherobjekten wie Puffer, Bilder und Pipes
  • Verwendung von OpenCL-Speicherzugriffsmodi wie nur-Lesen, nur-Schreiben, Lesen-Schreiben usw.
  • Verwendung des OpenCL-Speicherkonsistenzmodells und von Synchronisationsmechanismen

OpenCL-Ausführungsmodell

  • Verständnis des Unterschieds zwischen den Ausführungsmodellen für Host und Gerät
  • 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 Work-Group-Funktionen wie barrier, work_group_reduce, work_group_scan usw.
  • Verwendung von OpenCL-Gerätefunktionen wie get_num_groups, get_global_size, get_local_size usw.

Fehlerbehebung

  • Verständnis häufiger Fehler und Bugs in OpenCL-Programmen
  • Verwendung des Visual Studio Code-Debuggers zur Untersuchung von Variablen, Haltepunkten, Aufrufstack 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 des arithmetischen Durchsatzs
  • Verwendung von OpenCL-Loop-Unrolling und Loop-Tiling-Techniken zur Reduzierung der Steuerungsüberlastung und Erhöhung der Lokalität
  • Verwendung von OpenCL-lokalen Speichern und lokalen Speicherfunktionen zur Optimierung von Speicherzugriffen und -bandbreite
  • Verwendung von OpenCL-Profiling und Profiling-Werkzeugen zur Messung und Verbesserung der Ausführungszeit und Ressourcennutzung

Voraussetzungen

  • Verständnis der C/C++-Programmiersprache und Konzepte der parallelen Programmierung
  • Grundkenntnisse in der Computerarchitektur und der Speichenhierarchie
  • Erfahrung mit Command-Line-Werkzeugen und Code-Editoren

Zielgruppe

  • Entwickler, die lernen möchten, wie man OpenCL verwendet, um heterogene Geräte zu programmieren und deren Parallelität auszuschöpfen
  • Entwickler, die portablen und skalierbaren Code schreiben möchten, der auf verschiedenen Plattformen und Geräten ausgeführt werden kann
  • Programmierer, die die tieferen Ebenen der heterogenen Programmierung erkunden und die Code-Performance optimieren möchten

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien