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.
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