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

Einstieg

  • Erstellen eines neuen OpenCL-Projekts mit Visual Studio Code
  • Untersuchen der Projektstruktur und 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, Command Queues, Buffers, Kernels und Events
  • Verwendung der OpenCL API zum Enqueueen von Befehlen wie Lesen, Schreiben, Kopieren, Mappen, Entmappen, Ausführen und Warten
  • Verwendung der OpenCL API zur Fehler- und Ausnahmebehandlung

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 von OpenCL C-eingebauten Funktionen wie mathematische, geometrische, relationale, usw.
  • Verwendung von OpenCL C-Erweiterungen und Bibliotheken wie atomic, image, cl_khr_fp16, usw.

OpenCL Speichermodell

  • Verstehen des Unterschieds zwischen Host- und Gerätespeichermodell
  • Verwendung von OpenCL-Speicherräumen wie global, lokal, konstant und privat
  • Verwendung von OpenCL-Speicherobjekten wie Buffers, Images und Pipes
  • Verwendung von OpenCL-Speicherzugriffsmodi wie nur-Lesen, nur-Schreiben, Lesen-Schreiben, usw.
  • Verwendung des OpenCL-Speicherkonsistenzmodells und Synchronisationsmechanismen

OpenCL Ausführungsmodell

  • Verstehen des Unterschieds zwischen Host- und Geräteausführungsmodell
  • 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.

Debugging

  • Verstehen der häufigen Fehler und Bugs in OpenCL-Programmen
  • Verwendung des Visual Studio Code Debuggers zur Inspektion von Variablen, Breakpoints, Call Stack, 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 Durchsatzs
  • Verwendung von OpenCL-Loop Unrolling und Loop Tiling-Techniken zur Reduzierung der Steuerungsüberlastung und Erhöhung der Lokalisierung
  • 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

Voraussetzungen

  • Verständnis der C/C++-Programmiersprache und Konzepte der parallelen Programmierung
  • Grundkenntnisse der Computerarchitektur und Speicherhierarchie
  • Erfahrung mit Befehlszeilen-Werkzeugen und Code-Editoren

Zielgruppe

  • Entwickler, die lernen möchten, wie sie OpenCL verwenden können, 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 laufen kann
  • Programmierer, die die niedrigen Ebenen der heterogenen Programmierung erkunden und die Leistungsfähigkeit ihres Codes optimieren möchten

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien