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 GPU-Programmierung?
- Warum sollte man GPU-Programmierung verwenden?
- Was sind die Herausforderungen und Kompromisse der GPU-Programmierung?
- Welche Frameworks und Tools gibt es für die GPU-Programmierung?
- Die Wahl des richtigen Frameworks und Tools für Ihre Anwendung
OpenCL
- Was ist OpenCL?
- Was sind die Vor- und Nachteile von OpenCL?
- Einrichten der Entwicklungsumgebung für OpenCL
- Erstellen eines grundlegenden OpenCL-Programms, das Vektoraddition durchführt
- Verwendung der OpenCL-API, um Geräteinformationen abzufragen, Gerätespeicher zuzuweisen und freizugeben, Daten zwischen Host und Gerät zu kopieren, Kernel zu starten und Threads zu synchronisieren
- Verwendung der Sprache OpenCL C, um Kernel zu schreiben, die auf dem Gerät ausgeführt werden und Daten manipulieren
- Verwendung von OpenCL eingebauten Funktionen, Variablen und Bibliotheken, um allgemeine Aufgaben und Operationen durchzuführen
- Verwendung von OpenCL Speicherbereichen wie global, lokal, konstant und privat, um Datenübertragungen und Speicherzugriffe zu optimieren
- Verwendung des OpenCL-Ausführungsmodells zur Steuerung der Work-Items, Work-Groups und ND-Ranges, die die Parallelität definieren
- Debuggen und Testen von OpenCL-Programmen mithilfe von Tools wie CodeXL
- Optimieren von OpenCL-Programmen mithilfe von Techniken wie Coalescing, Caching, Prefetching und Profiling
CUDA
- Was ist CUDA?
- Was sind die Vor- und Nachteile von CUDA?
- Einrichten der Entwicklungsumgebung für CUDA
- Erstellen eines grundlegenden CUDA-Programms, das eine Vektoraddition durchführt
- Verwendung der CUDA API, um Geräteinformationen abzufragen, Gerätespeicher zuzuweisen und freizugeben, Daten zwischen Host und Gerät zu kopieren, Kernel zu starten und Threads zu synchronisieren
- Verwendung der Sprache CUDA C/C++ zum Schreiben von Kernels, die auf dem Gerät ausgeführt werden und Daten manipulieren
- Verwendung der in CUDA integrierten Funktionen, Variablen und Bibliotheken zur Ausführung allgemeiner Aufgaben und Operationen
- Verwendung von CUDA-Speicherbereichen, wie z. B. globale, gemeinsam genutzte, konstante und lokale Speicherbereiche, um Datenübertragungen und Speicherzugriffe zu optimieren
- Verwendung des CUDA-Ausführungsmodells zur Steuerung von Threads, Blöcken und Gittern, die die Parallelität definieren
- Debuggen und Testen von CUDA Programmen mit Tools wie CUDA-GDB, CUDA-MEMCHECK und NVIDIA Nsight
- Optimieren von CUDA Programmen mit Techniken wie Coalescing, Caching, Prefetching und Profiling
ROCm
- Was ist ROCm?
- Was sind die Vor- und Nachteile von ROCm?
- Einrichten der Entwicklungsumgebung für ROCm
- Erstellen eines grundlegenden ROCm-Programms, das eine Vektoraddition durchführt
- Verwendung der ROCm-API, um Geräteinformationen abzufragen, Gerätespeicher zuzuweisen und freizugeben, Daten zwischen Host und Gerät zu kopieren, Kernel zu starten und Threads zu synchronisieren
- Verwendung der ROCm-Sprache C/C++, um Kernel zu schreiben, die auf dem Gerät ausgeführt werden und Daten manipulieren
- Verwendung der in ROCm eingebauten Funktionen, Variablen und Bibliotheken, um allgemeine Aufgaben und Operationen durchzuführen
- Verwendung von ROCm-Speicherbereichen, wie global, lokal, konstant und privat, um Datenübertragungen und Speicherzugriffe zu optimieren
- Verwendung des ROCm-Ausführungsmodells zur Steuerung der Threads, Blöcke und Grids, die die Parallelität definieren
- Debuggen und Testen von ROCm-Programmen mit Werkzeugen wie ROCm Debugger und ROCm Profiler
- Optimieren von ROCm-Programmen mithilfe von Techniken wie Coalescing, Caching, Prefetching und Profiling
HIP
- Was ist HIP?
- Was sind die Vor- und Nachteile von HIP?
- Einrichten der Entwicklungsumgebung für HIP
- Erstellen eines grundlegenden HIP-Programms, das Vektoraddition durchführt
- Verwendung der HIP-Sprache zum Schreiben von Kernels, die auf dem Gerät ausgeführt werden und Daten manipulieren
- Verwendung von in HIP integrierten Funktionen, Variablen und Bibliotheken zur Durchführung allgemeiner Aufgaben und Operationen
- Verwendung von HIP-Speicherbereichen, wie z. B. globale, gemeinsam genutzte, konstante und lokale Speicher, zur Optimierung von Datenübertragungen und Speicherzugriffen
- Verwendung des HIP-Ausführungsmodells zur Steuerung der Threads, Blöcke und Grids, die die Parallelität definieren
- Debuggen und Testen von HIP-Programmen mithilfe von Tools wie ROCm Debugger und ROCm Profiler
- Optimieren von HIP-Programmen mit Techniken wie Coalescing, Caching, Prefetching und Profiling
Vergleich
- Vergleich der Funktionen, Leistung und Kompatibilität von OpenCL, CUDA, ROCm und HIP
- Evaluierung von GPU-Programmen anhand von Benchmarks und Metriken
- Erlernen der besten Praktiken und Tipps für die GPU-Programmierung
- Erforschung der aktuellen und zukünftigen Trends und Herausforderungen der GPU-Programmierung
Zusammenfassung und nächster Schritt
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 die Grundlagen der GPU-Programmierung und die wichtigsten Frameworks und Tools für die Entwicklung von GPU-Anwendungen erlernen möchten
- Entwickler, die portablen und skalierbaren Code schreiben möchten, der auf verschiedenen Plattformen und Geräten ausgeführt werden kann
- Programmierer, die die Vorteile und Herausforderungen der GPU-Programmierung und -Optimierung kennenlernen möchten
21 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