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
Einleitung
- Was ist GPU-Programmierung?
- Warum ist die GPU-Programmierung sinnvoll?
- Welche Herausforderungen und Kompromisse sind mit der GPU-Programmierung verbunden?
- Welche Frameworks stehen für die GPU-Programmierung zur Verfügung?
- Wie wählt man das passende Framework für seine Anwendung aus?
OpenCL
- Was ist OpenCL?
- Welche Vor- und Nachteile hat OpenCL?
- Einrichtung der Entwicklungsumgebung für OpenCL
- Erstellung eines grundlegenden OpenCL-Programms zur Durchführung einer Vektoraddition
- Nutzung der OpenCL-API zur Abfrage von Geräteinformationen, Allokation und Freigabe des Speichers, Datentransfer zwischen Host und Gerät, Start von Kernels sowie Synchronisation der Threads
- Verwendung der Programmiersprache OpenCL C zur Erstellung von Kernels, die auf den GPUs ausgeführt werden und Daten verarbeiten.
- Anwendung vordefinierter Funktionen, Variablen sowie Bibliotheken des OpenCL-Standards für typische Aufgaben
- Einsatz der Speicherbereiche Global-, Local-, Constant- und Private-Speicher zur Optimierung von Datenübertragungen und -zugriffen
- Steuerung des Arbeitsablaufs mittels des OpenCL-Ausführungsmodells (Work-Items, Work-Groups sowie ND-Ranges)
- Debuggen und Testen von OpenCL-Programmen unter Verwendung von Tools wie CodeXL
- Optimierung von OpenCL-Code durch Coalescing, Caching, Prefetching sowie Profiling
CUDA
- Was ist CUDA?
- Welche Vor- und Nachteile bietet CUDA?
- Vorbereitung der Entwicklungsumgebung für CUDA
- Erstellung eines einfachen CUDA-Programms zur Durchführung einer Vektoraddition
- Nutzung der CUDA-API zur Abfrage von Geräteinformationen, Speicherverwaltung, Datentransfer zwischen Host und GPU sowie zum Starten von Kerneln und Synchronisieren der Threads
- Schreiben von Kernels mittels CUDA C/C++ zur Verarbeitung von Daten auf der GPU.
- Einsatz integrierter Funktionen, Variablen und Bibliotheken von CUDA für übliche Programmieraufgaben
- Optimierung mittels CUDA-spezifischer Speicherbereiche wie Global-, Shared-, Constant- sowie Local-Speicher
- Konfiguration des Ausführungsablaufs durch Definition von Threads, Blöcken und Gittern zur Steuerung der Parallelität
- Debuggen und Testen von CUDA-Programmen mittels Tools wie CUDA-GDB, CUDA-MEMCHECK oder NVIDIA Nsight
- Verbesserung der Leistungsfähigkeit durch Coalescing, Caching, Prefetching sowie Profiling
ROCm
- Was ist ROCm?
- Welche Vor- und Nachteile bietet ROCm?
- Einrichtung der Entwicklungsumgebung für ROCm
- Erstellung eines grundlegenden ROCm-Programms zur Durchführung einer Vektoraddition
- Verwendung der ROCm-API zur Abfrage von Geräteinformationen, Speicherverwaltung, Datentransfer zwischen Host und GPU sowie zum Starten von Kerneln und Synchronisieren der Threads
- Programmierung von Kernels mit ROCm C/C++ für die Datenverarbeitung auf den AMD-GPUs.
- Nutzung integrierter Funktionen, Variablen sowie Bibliotheken des ROCm-Standards zur Erledigung allgemeiner Aufgaben
- Optimierung mittels der Speicherbereiche Global-, Local-, Constant- und Private-Speicher
- Steuerung des parallelen Ausführungsablaufs durch Definition von Threads, Blöcken sowie Gittern im Rahmen des ROCm-Ausführungsmodells
- Fehleranalyse und Testung von ROCm-Programmen unter Einsatz spezialisierter Tools wie dem ROCm Debugger oder dem ROCm Profiler
- Optimierung der Programmleistung durch Coalescing, Caching, Prefetching sowie systematisches Profiling
Vergleich
- Gegenüberstellung der wichtigsten Eigenschaften, Leistungswerte und Kompatibilitätsmerkmale von OpenCL, CUDA sowie ROCm
- Bewertung der Qualität und Effizienz von GPU-Programmen mittels Benchmarks und Kennzahlen
- Vermittlung bewährter Vorgehensweisen sowie praktischer Tipps zur effektiven GPU-Programmierung
- Betrachtung aktueller Entwicklungen, Trends und künftiger Herausforderungen in der Welt der GPU-Programmierung
Zusammenfassung und weitere Schritte
Voraussetzungen
- Grundkenntnisse in der C-/C++-Programmierung sowie Verständnis von Konzepten zur parallelen Programmierung
- Basiswissen über Computereinheit und Speicherhierarchie
- Erfahrung im Umgang mit Kommandozeilenwerkzeugen sowie Code-Editoren
Zielgruppe
- Entwickler, die lernen möchten, verschiedene Frameworks für GPU-Programmierung zu nutzen und deren Eigenschaften, Leistungsfähigkeit sowie Kompatibilität miteinander vergleichen.
- Programmierer, die portierbaren und skalierbaren Code entwickeln wollen, der auf unterschiedlichen Plattformen und Geräten lauffähig ist.
- Fachleute, die sich mit den Vor- und Nachteilen sowie den Herausforderungen der GPU-Programmierung und -Optimierung auseinandersetzen möchten.
28 Stunden