Kontakt aufnehmen

Schulungsübersicht

Einführung

  • Was ist OpenCL?
  • OpenCL im Vergleich zu CUDA und SYCL
  • Überblick über die Funktionen und die 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
  • Ausgabe anzeigen mit printf und fprintf

OpenCL-API

  • Verstehen 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 Ereignissen
  • Nutzung der OpenCL-API zum Einfügen von Befehlen wie Lesen, Schreiben, Kopieren, Map pen, Unmap pen, Ausführen und Warten
  • Umgang mit Fehlern und Ausnahmen mittels OpenCL-API

OpenCL-C

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

OpenCL-Speichermodell

  • Verstehen des Unterschieds zwischen den Speichermodellen von Host und Gerät
  • Nutzung der Speicherräume in OpenCL, wie globaler, lokaler, konstanter und privater Speicher
  • Nutzung von Speicherobjekten in OpenCL, wie Puffer, Bilder und Pipes
  • Nutzung der Speicherzugriffsmodi in OpenCL, wie schreibgeschützt, nur-schreibend, Lese-und-Schreibzugriff usw.
  • Nutzung des Speicherkonsistenzmodells und der Synchronisationsmechanismen in OpenCL

OpenCL-Ausführungsmodell

  • Verstehen des Unterschieds zwischen den Ausführungsmodellen von Host und Gerät
  • Nutzung von Work-Items, Work-Groups und ND-Ranges in OpenCL zur Definition der Parallelität
  • 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 Barrier, work_group_reduce, work_group_scan usw.
  • Nutzung von Gerätefunktionen in OpenCL, wie get_num_groups, get_global_size, get_local_size usw.

Debugging

  • Verständnis gängiger Fehler und Bugs in OpenCL-Programmen
  • Nutzung des Debuggers von Visual Studio Code zum Inspektionieren von Variablen, Breakpoints, Callstacks 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 Performanz von OpenCL-Programmen beeinflussen
  • Nutzung von Vektordatentypen und Vektorisierungstechniken in OpenCL zur Verbesserung des arithmetischen Durchsatzes
  • Nutzung von Techniken wie Schleifenentrollung und Tiling in OpenCL zur Reduzierung der Steuerungskosten und Erhöhung der Lokalität
  • Nutzung von lokalem Speicher und lokalen Speicherfunktionen in OpenCL zur Optimierung von Speicherzugriffen und Bandbreite
  • Nutzung des Profilings und entsprechender 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 Konzepten der parallelen Programmierung
  • Grundlegende Kenntnisse der Computerarchitektur und Speicherschichtstruktur
  • Erfahrung mit Kommandozeilentools 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 Performanz ihres Codes optimieren möchten
 28 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien