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 OpenACC?
- OpenACC im Vergleich zu OpenCL, CUDA und SYCL
- Übersicht über die Funktionen und Architektur von OpenACC
- Einrichten der Entwicklungsumgebung
Erste Schritte
- Erstellen eines OpenACC-Projekts in Visual Studio Code
- Erforschung der Projektstruktur und Dateien
- Kompilieren und Ausführen des Programms
- Ausgabe anzeigen mit printf und fprintf
OpenACC-Anweisungen und Klauseln
- Verständnis von OpenACC-Anweisungen und Klauseln
- Verwendung paralleler Anweisungen zur Erstellung paralleler Regionen
- Verwendung von Kernels-Anweisungen für compiler-gesteuerte Parallelität
- Verwendung von Schleifenanweisungen zur Parallelisierung von Schleifen
- Verwaltung der Datenbewegung mit Datendirektiven
- Synchronisieren von Daten mit Update-Direktiven
- Verbesserung der Wiederverwendung von Daten durch Cache-Direktiven
- Erstellung von Gerätefunktionen mit Routinen-Direktiven
- Synchronisation von Ereignissen mit Wait-Direktiven
OpenACC-API
- Verständnis der Rolle der OpenACC-API
- Abfrage von Geräteinformationen und -fähigkeiten
- Festlegen der Gerätenummer und des Typs
- Behandlung von Fehlern und Ausnahmen
- Erstellung und Synchronisation von Ereignissen
OpenACC-Bibliotheken und Interoperabilität
- Verständnis der OpenACC-Bibliotheken und Interoperabilität
- Nutzung mathematischer, Zufalls- und komplexer Bibliotheken
- Integration mit anderen Modellen (CUDA, OpenMP, MPI)
- Integration mit GPU-Bibliotheken (cuBLAS, cuFFT)
OpenACC-Tools
- Verständnis der OpenACC-Tools in der Entwicklung
- Profiling und Debugging von OpenACC-Programmen
- Leistungsanalyse mit PGI-Compiler, NVIDIA Nsight Systems, Allinea Forge
Optimierung
- Faktoren, die die Leistung von OpenACC-Programmen beeinflussen
- Optimierung der Datenlokalität und Reduzierung von Übertragungen
- Parallelisierung und Fusion von Schleifen
- Parallelisierung und Fusion von Kernels
- Optimierung der Vektorisierung und Auto-Tuning
Zusammenfassung und weitere Schritte
Voraussetzungen
- Grundkenntnisse in C/C++ oder Fortran sowie Konzepte der parallelen Programmierung
- Grundlagenwissen über Computerarchitektur und Speicherkonzepte
- Erfahrung mit Befehlszeilen-Tools und Code-Editoren
Zielgruppe
- Entwickler, die lernen möchten, wie man OpenACC zur Programmierung heterogener Geräte nutzt und deren Parallelität ausnutzt
- Entwickler, die portierbaren und skalierbaren Code schreiben möchten, der auf verschiedenen Plattformen und Geräten läuft
- Programmierer, die die höherstufigen Aspekte der heterogenen Programmierung erkunden und ihre Produktivität beim Coden optimieren wollen
28 Stunden