Schulungsübersicht

Einführung

  • Was ist OpenACC?
  • OpenACC vs OpenCL vs CUDA vs SYCL
  • Überblick über die Funktionen und die Architektur von OpenACC
  • Einrichten der Entwicklungsumgebung

Erste Schritte

  • Erstellen eines neuen OpenACC-Projekts mit Visual Studio Code
  • Erkunden der Projektstruktur und der Dateien
  • Kompilieren und Ausführen des Programms
  • Anzeigen der Ausgabe mit printf und fprintf

OpenACC-Direktiven und -Klauseln

  • Verstehen der Rolle von OpenACC-Direktiven und -Klauseln im Host- und Gerätecode
  • Verwendung der OpenACC Parallel-Direktive und -Klauseln, um parallele Regionen zu erstellen und die Anzahl der Gangs, Worker und Vektoren festzulegen
  • Verwendung der OpenACC-Kernel-Direktive und -Klauseln, um Kernel-Regionen zu erstellen und den Compiler über die Parallelität entscheiden zu lassen
  • Verwendung der OpenACC-Schleifen-Direktive und -Klauseln zur Parallelisierung von Schleifen und zur Angabe der Schleifenverteilung, des Kollapses, der Reduzierung und der Kacheln
  • Verwendung von OpenACC-Direktiven und -Klauseln zur Verwaltung von Datenbewegungen und Datenregionen
  • Verwendung der OpenACC-Update-Direktive und -Klauseln zur Synchronisierung von Daten zwischen dem Host und dem Gerät
  • Verwendung der OpenACC-Cache-Direktive und -Klauseln zur Verbesserung der Wiederverwendung und Lokalisierung von Daten
  • Verwendung der OpenACC-Routine-Direktive und -Klauseln zur Erstellung von Gerätefunktionen und zur Angabe des Funktionstyps und der Vektorlänge
  • Verwendung der OpenACC-Wartedirektive und -Klauseln zur Synchronisierung von Ereignissen und Abhängigkeiten

OpenACC-API

  • Verstehen der Rolle von OpenACC API im Host-Programm
  • Verwendung von OpenACC API zur Abfrage von Geräteinformationen und -fähigkeiten
  • Verwendung von OpenACC API zum Setzen von Gerätenummer und Gerätetyp
  • Verwendung von OpenACC API zur Behandlung von Fehlern und Ausnahmen
  • Verwendung von OpenACC API zum Erstellen und Synchronisieren von Ereignissen

OpenACC-Bibliotheken und Interoperabilität

  • Verstehen der Rolle von OpenACC-Bibliotheken und Interoperabilitätsfunktionen im Geräteprogramm
  • Verwendung von OpenACC-Bibliotheken, wie z. B. math, random und complex, zur Durchführung allgemeiner Aufgaben und Operationen
  • Verwendung von OpenACC-Interoperabilitätsfunktionen wie deviceptr, use_device und acc_memcpy zur Integration von OpenACC mit anderen Programmiermodellen wie CUDA, OpenMP und MPI
  • Verwendung von OpenACC-Interoperabilitätsfunktionen wie host_data und declare zur Integration von OpenACC mit GPU-Bibliotheken wie cuBLAS und cuFFT

OpenACC-Werkzeuge

  • Verstehen der Rolle von OpenACC-Tools im Entwicklungsprozess
  • Verwendung von OpenACC-Tools zum Profilieren und Debuggen von OpenACC-Programmen und zum Erkennen von Leistungsengpässen und -möglichkeiten
  • Verwendung von OpenACC-Tools wie PGI Compiler, NVIDIA Nsight Systems und Allinea Forge zur Messung und Verbesserung der Ausführungszeit und Ressourcennutzung

Optimierung

  • Verstehen der Faktoren, die die Leistung von OpenACC-Programmen beeinflussen
  • Verwendung von OpenACC-Direktiven und -Klauseln zur Optimierung der Datenlokalität und zur Reduzierung von Datentransfers
  • Verwendung von OpenACC-Direktiven und -Klauseln zur Optimierung von Schleifenparallelität und -fusion
  • Verwendung von OpenACC-Direktiven und -Klauseln zur Optimierung der Kernelparallelität und der Fusion
  • Verwendung von OpenACC-Direktiven und -Klauseln zur Optimierung von Vektorisierung und Auto-Tuning

Zusammenfassung und nächste Schritte

Voraussetzungen

  • Kenntnisse der Sprache C/C++ oder Fortran und der Konzepte der parallelen Programmierung
  • Grundkenntnisse der Computerarchitektur und der Speicherhierarchie
  • Erfahrung im Umgang mit Befehlszeilentools und Code-Editoren

Zielgruppe

  • Entwickler, die lernen wollen, wie man mit OpenACC heterogene Geräte programmiert und deren Parallelität ausnutzt
  • Entwickler, die portablen und skalierbaren Code schreiben möchten, der auf verschiedenen Plattformen und Geräten ausgeführt werden kann
  • Programmierer, die die High-Level-Aspekte der heterogenen Programmierung erforschen und die Produktivität ihres Codes optimieren möchten
 28 Stunden

Teilnehmerzahl



Preis je Teilnehmer

Erfahrungsberichte (1)

Kombinierte Kurse

GPU Programming with CUDA

28 Stunden

GPU Programming - OpenCL vs CUDA vs ROCm

28 Stunden

AMD GPU Programming

28 Stunden

ROCm for Windows

21 Stunden

Verwandte Kategorien