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 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
Erfahrungsberichte (2)
Sehr interaktiv mit verschiedenen Beispielen, mit einer guten Progression in der Komplexität zwischen dem Beginn und dem Ende des Trainings.
Jenny - Andheo
Kurs - GPU Programming with CUDA and Python
Maschinelle Übersetzung
Energie und Humor des Trainers.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Kurs - NVIDIA GPU Programming - Extended
Maschinelle Übersetzung