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
- Einrichtung des Entwicklungsumfelds
Erste Schritte
- Erstellung eines OpenACC-Projekts in Visual Studio Code
- Struktur und Bestandteile des Projekts verstehen
- Kompilieren und Ausführen des Programms
- Ausgabe von Ergebnissen mittels printf und fprintf erzeugen
OpenACC-Direktiven und Klauseln
- Grundlagen zu OpenACC-Direktiven und Klauseln verstehen
- Paralleldirektiven zur Definition paralleler Abschnitte nutzen
- Kernel-Direktiven für vom Compiler gesteuerte Parallelität einsetzen
- Schleifen-Direktiven zum parallelen Ausführen von Schleifen verwenden
- Daten-Direktiven zur Steuerung der Datenübertragung anwenden
- Update-Direktiven zur Synchronisation von Daten einsetzen
- Cache-Direktiven zum besseren Wiederverwenden von Daten nutzen
- Routine-Direktiven zur Erstellung spezieller Funktionen auf dem Gerät verwenden
- Wait-Direktiven zur Synchronisation von Ereignissen einsetzen
OpenACC-API
- Bedeutung und Rolle der OpenACC-API begreifen
- Informationen über Geräte sowie deren Fähigkeiten abrufen
- Auswahl von Gerätetyp und -nummer vornehmen
- Umgang mit Fehlern und Ausnahmen erlernen
- Erstellung und Synchronisation von Ereignissen beherrschen
OpenACC-Bibliotheken und Interoperabilität
- Bedeutung sowie Nutzung der OpenACC-Bibliotheken verstehen
- Einsatz mathematischer, zufälliger und komplexer Funktionen in Bibliotheken
- Integration mit anderen Modellen wie CUDA, OpenMP oder MPI
- Verknüpfung mit GPU-spezifischen Bibliotheken wie cuBLAS bzw. cuFFT
OpenACC-Tools
- Bedeutung von Tools für die Entwicklung unter OpenACC erkennen
- Profiling und Debugging von OpenACC-Programmen durchführen
- Leistungsanalyse mittels des PGI Compilers, NVIDIA Nsight Systems sowie Allinea Forge vornehmen
Optimierung
- Faktoren, die die Leistung von OpenACC-Programmen beeinflussen, erkennen
- Datenlokalität verbessern und Datenübertragungen reduzieren
- Parallelisierung sowie Fusion von Schleifen optimieren
- Parallelisierung sowie Fusion von Kernel-Abschnitten optimieren
- Vektorisierung sowie automatische Optimierungsmechanismen nutzen
Zusammenfassung und weitere Schritte
Voraussetzungen
- Kenntnisse der Programmiersprachen C/C++ oder Fortran sowie Grundlagen der parallelen Programmierung
- Grundverständnis von Computerarchitektur und Speicherhierarchie
- Erfahrung mit Befehlszeilentools und Code-Editoren
Zielgruppe
- Entwickler, die lernen möchten, OpenACC zur Programmierung heterogener Geräte sowie zur Nutzung deren Parallelität einzusetzen
- Programmierer, die portablen und skalierbaren Code schreiben wollen, der auf unterschiedlichen Plattformen ausführbar ist
- Software-Entwickler, die sich mit den höheren Aspekten der heterogenen Programmierung vertraut machen sowie ihre Produktivität bei der Code-Erstellung steigern möchten
28 Stunden