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 vs CUDA vs SYCL
- Übersicht der Funktionen und Architektur von OpenCL
- Einrichtung der Entwicklungsumgebung
Erste Schritte
- Erstellen eines neuen OpenCL-Projekts mit Visual Studio Code
- Untersuchung des Projekterzeichnungs und -dateistrukturs
- Kompilieren und Ausführen des Programms
- Anzeigen der Ausgabe mit printf und fprintf
OpenCL API
- Verständnis der Rolle der OpenCL-API im Hostprogramm
- Verwendung der OpenCL-API zur Abfrage von Geräteinformationen und -fähigkeiten
- Verwendung der OpenCL-API zum Erstellen von Kontexten, Befehlsreihenfolgen, Puffern, Kernen und Ereignissen
- Verwendung der OpenCL-API zur Ausführung von Befehlen wie Lesen, Schreiben, Kopieren, Zuordnen, Rückkoppelung, Ausführen und Warten
- Fehler- und Ausnahmehandling mit der OpenCL-API
OpenCL C
- Verständnis der Rolle von OpenCLC im Geräteprogramm
- Schreiben von Kernen mit OpenCLC, die auf dem Gerät ausgeführt und Daten manipulieren
- Verwendung von OpenCLC-Datentypen, Qualifizierern, Operatoren und Ausdrücken
- Verwendung eingebaute Funktionen in OpenCLC wie mathematische, geometrische, relationale usw.
- Verwendung von Erweiterungen und Bibliotheken in OpenCLC wie atomic, image, cl_khr_fp16 usw.
OpenCL Speicherschema
- Unterschiede zwischen Host- und Gerätespeicherschemata verstehen
- Verwendung von OpenCL-Speicherbereichen wie global, local, constant und private
- Verwendung von OpenCL-Speichergegenständen wie Puffer, Bilder und Pipes
- Verwendung der Zugriffsmodi in OpenCL, wie read-only, write-only, read-write usw.
- Verwendung des Konsistenzschemas und Synchronisationsmechanismen in OpenCL
OpenCL Ausführungsmodell
- Unterschiede zwischen Host- und Geräteausführungsmodellen verstehen
- Verwendung von Work-Items, -Gruppen und ND-Bereichen in OpenCL, um die Parallelität zu definieren
- Verwendung von Work-Item-Funktionen in OpenCL wie get_global_id, get_local_id, get_group_id usw.
- Verwendung von Work-Gruppenfunktionen in OpenCL wie barrier, work_group_reduce, work_group_scan usw.
- Verwendung von Geräte-Funktionen in OpenCL wie get_num_groups, get_global_size, get_local_size usw.
Debugging
- Häufige Fehler und Bugs in OpenCL-Programmen verstehen
- Verwendung des Visual Studio Code-Debuggers zum Überprüfen von Variablen, Haltepunkten, Aufrufstapel usw.
- Verwendung von CodeXL zur Debugging und Analyse von OpenCL auf AMD-Geräten
- Verwendung von Intel VTune zur Debugging und Analyse von OpenCL-Programmen auf Intel-Geräten
- Verwendung von NVIDIA Nsight zur Debugging und Analyse von OpenCL-Programmen auf NVIDIA-Geräten
Optimierung
- Faktoren, die die Leistung von OpenCL beeinflussen verstehen
- Verwendung von Vektordatentypen und -verdichtungs-Techniken in OpenCL, um den Rechenleistung zu verbessern
- Verwendung von Loop-Unrolling und Loop-Tiling Techniken, um Steuerungen zu reduzieren und die Lokalität zu erhöhen
- Verwendung des lokalen Speichers und der entsprechenden Funktionen in OpenCL zur Optimierung von Speicherzugriffen und -bandbreite
- Profilierungs-Techniken und Werkzeuge in OpenCL, um die Ausführungszeit und Ressourcennutzung zu messen und zu verbessern
Zusammenfassung und Weitere Schritte
Voraussetzungen
- Grundkenntnisse der C/C++-Sprache und paralleler Programmierkonzepte
- Grundlegende Kenntnisse der Computerausstattung und des Speicherschemas
- Erfahrung mit Kommandozeilenwerkzeugen und Code-Editoren
Zielgruppe
- Entwickler, die lernen möchten, wie man OpenCL zur Programmierung heterogener Geräte nutzt und deren Parallelität ausnutzt
- Entwickler, die portable und skalierbare Code schreiben möchten, der auf verschiedenen Plattformen und Geräten ausgeführt werden kann
- Programmierer, die sich mit den tieferen Aspekten der heterogenen Programmierung auseinandersetzen möchten und die Leistung ihres Codes optimieren wollen
28 Stunden