Vielen Dank für die Zusendung Ihrer Anfrage! Eines unserer Teammitglieder wird Sie in Kürze kontaktieren.
Vielen Dank, dass Sie Ihre Buchung abgeschickt haben! Eines unserer Teammitglieder wird Sie in Kürze kontaktieren.
Schulungsübersicht
Einführung
- Was ist OpenCL?
- OpenCL gegen CUDA gegen SYCL
- Überblick über die OpenCL-Funktionen und -Architektur
- Einrichten der Entwicklungsumgebung
Erste Schritte
- Erstellen eines neuen OpenCL-Projekts mit Visual Studio-Code
- Erkunden der Projektstruktur und der 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, Befehlswarteschlangen, Puffern, Kernels und Ereignissen
- Verwendung der OpenCL-API zum Einreihen von Befehlen, z. B. Lesen, Schreiben, Kopieren, Zuordnen, Aufheben der Zuordnung, Ausführen und Warten
- Verwendung der OpenCL-API zur Behandlung von Fehlern und Ausnahmen
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 der in OpenCL C eingebauten Funktionen, z. B. mathematische, geometrische, relationale usw.
- Verwendung von OpenCL C-Erweiterungen und -Bibliotheken, wie z. B. atomic, image, cl_khr_fp16 usw.
OpenCL Speichermodell
- Verstehen des Unterschieds zwischen Host- und Gerätespeichermodellen
- Verwendung von OpenCL-Speicherbereichen, z. B. global, lokal, konstant und privat
- Verwendung von OpenCL-Speicherobjekten, wie z. B. Puffer, Bilder und Pipes
- Verwendung von OpenCL-Speicherzugriffsmodi, z. B. Nur-Lesen, Nur-Schreiben, Lesen-Schreiben usw.
- Verwendung des OpenCL-Speicherkonsistenzmodells und von Synchronisationsmechanismen
OpenCL-Ausführungsmodell
- Verstehen des Unterschieds zwischen Host- und Geräteausführungsmodellen
- 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-Arbeitsgruppenfunktionen, wie z.B. barrier, work_group_reduce, work_group_scan, usw.
- Verwendung von OpenCL-Gerätefunktionen, wie get_num_groups, get_global_size, get_local_size, usw.
Fehlersuche
- Verstehen der häufigsten Fehler und Bugs in OpenCL-Programmen
- Verwendung des Visual Studio Code-Debuggers zur Untersuchung von Variablen, Haltepunkten, 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
- Verstehen der Faktoren, die die Leistung von OpenCL-Programmen beeinflussen
- Verwendung von OpenCL-Vektordatentypen und Vektorisierungstechniken zur Verbesserung des arithmetischen Durchsatzes
- Verwendung von OpenCL-Schleifenabwicklungs- und Schleifentiling-Techniken zur Reduzierung des Kontroll-Overheads und zur Erhöhung der Lokalität
- 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
Zusammenfassung und nächste Schritte
Voraussetzungen
- Kenntnisse der Sprache C/C++ und paralleler Programmierkonzepte
- Grundkenntnisse der Computerarchitektur und der Speicherhierarchie
- Erfahrung im Umgang mit Befehlszeilentools und Code-Editoren
Zielgruppe
- Entwickler, die lernen möchten, wie man OpenCL verwendet, um heterogene Geräte zu programmieren und deren Parallelität auszunutzen
- 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 erforschen und die Leistung ihres Codes optimieren möchten
28 Stunden
Erfahrungsberichte (2)
Sehr interaktiv mit verschiedenen Beispielen, mit einer guten Progression in der Komplexität zwischen dem Beginn und dem Ende des Trainings.
Jenny - Andheo
Kurs - GPU Programming with CUDA and Python
Maschinelle Übersetzung
Energie und Humor des Trainers.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Kurs - NVIDIA GPU Programming - Extended
Maschinelle Übersetzung