Kontakt aufnehmen

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

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien