Kontakt aufnehmen

Schulungsübersicht

Einführung

  • Was ist OpenCL?
  • OpenCL im Vergleich zu CUDA und SYCL
  • Überblick über die Funktionen und Architektur von OpenCL
  • Einrichten der Entwicklungsumgebung

Erste Schritte

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

OpenCL API

  • Verständnis der Rolle der OpenCL-API im Host-Programm
  • Nutzung der OpenCL-API zur Abfrage von Geräteinformationen und Fähigkeiten
  • Nutzung der OpenCL-API zum Erstellen von Kontexten, Befehlswarteschlangen, Puffern, Kernels und Events
  • Nutzung der OpenCL-API zum Enqueuing von Befehlen, wie Lesen, Schreiben, Kopieren, Mappen, Unmappe, Ausführen und Warten
  • Handhabung von Fehlern und Ausnahmen mit der OpenCL-API

OpenCL C

  • Verständnis der Rolle von OpenCL C im Gerät-Programm
  • Nutzung von OpenCL C zum Schreiben von Kernels, die auf dem Gerät ausgeführt werden und Daten manipulieren
  • Verwendung von Datentypen, Qualifizierern, Operatoren und Ausdrücken in OpenCL C
  • Nutzung von eingebauten Funktionen in OpenCL C, wie mathematische, geometrische und relationale Funktionen
  • Verwendung von Erweiterungen und Bibliotheken in OpenCL C, wie atomare Operationen, Bildverarbeitung, cl_khr_fp16 usw.

OpenCL Speichermodell

  • Verständnis des Unterschieds zwischen den Speichermodellen von Host und Gerät
  • Nutzung der OpenCL-Speicherbereiche, wie global, lokal, konstant und privat
  • Verwendung von OpenCL-Speicherobjekten, wie Puffer, Bilder und Pipes
  • Nutzung der OpenCL-Speicherzugriffsmodi, wie schreibgeschützt, nur schreiben, lesen/schreiben usw.
  • Verständnis des OpenCL-Konsistenzmodells für Speicher und von Synchronisierungsmechanismen

OpenCL Ausführungsmodell

  • Verständnis des Unterschieds zwischen den Ausführungsmodellen von Host und Gerät
  • Definition der Parallelität mittels Work-Items, Work-Groups und ND-Ranges in OpenCL
  • Nutzung von Work-Item-Funktionen in OpenCL, wie get_global_id, get_local_id, get_group_id usw.
  • Nutzung von Work-Group-Funktionen in OpenCL, wie Barrieren, work_group_reduce, work_group_scan usw.
  • Nutzung von Gerätspezifischen Funktionen in OpenCL, wie get_num_groups, get_global_size, get_local_size usw.

Debugging

  • Verständnis der häufigen Fehler und Bugs in OpenCL-Programmen
  • Nutzung des Debuggers in Visual Studio Code zur Inspektion von Variablen, Breakpoints, Call-Stacks usw.
  • Nutzung von CodeXL zum Debuggen und Analysieren von OpenCL-Programmen auf AMD-Geräten
  • Nutzung von Intel VTune zum Debuggen und Analysieren von OpenCL-Programmen auf Intel-Geräten
  • Nutzung von NVIDIA Nsight zum Debuggen und Analysieren von OpenCL-Programmen auf NVIDIA-Geräten

Optimierung

  • Verständnis der Faktoren, die die Performance von OpenCL-Programmen beeinflussen
  • Nutzung von Vektordatentypen und Vektorisierungstechniken in OpenCL zur Verbesserung des arithmetischen Durchsatzes
  • Nutzung von Loop-Unrolling und Loop-Tiling-Techniken in OpenCL zur Reduzierung der Steuerungsüberlastung und Erhöhung der Lokalität
  • Nutzung von lokalem Speicher und lokalen Speicherfunktionen in OpenCL zur Optimierung von Speicherzugriffen und Bandbreite
  • Nutzung von Profiling und Profiling-Tools in OpenCL zur Messung und Verbesserung der Ausführungszeit und Ressourcennutzung

Zusammenfassung und Nächste Schritte

Voraussetzungen

  • Kenntnisse in der C/C++-Sprache und in Konzepten der parallelen Programmierung
  • Grundlegende Kenntnisse in Computerarchitektur und Speicherhierarchie
  • Erfahrung mit Kommandozeilen-Tools und Code-Editoren

Zielgruppe

  • Entwickler, die lernen möchten, wie man OpenCL zur Programmierung heterogener Geräte nutzt und deren Parallelität ausschöpft
  • 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 Performance ihres Codes optimieren möchten
 28 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien