Plan du cours

Introduction

  • Qu'est-ce qu'OpenACC ?
  • OpenACC vs OpenCL vs CUDA vs SYCL
  • Aperçu des caractéristiques et de l'architecture d'OpenACC
  • Configuration de l'environnement de développement

Pour commencer

  • Création d'un nouveau projet OpenACC à l'aide du code Visual Studio
  • Exploration de la structure et des fichiers du projet
  • Compilation et exécution du programme
  • Affichage de la sortie à l'aide de printf et fprintf

Directives et clauses OpenACC

  • Comprendre le rôle des directives et des clauses OpenACC dans le code de l'hôte et du périphérique
  • Utiliser la directive et les clauses OpenACC parallel pour créer des régions parallèles et spécifier le nombre de gangs, de travailleurs et de vecteurs
  • Utilisation de la directive et des clauses OpenACC kernels pour créer des régions kernels et laisser le compilateur décider du parallélisme.
  • Utilisation de la directive et des clauses OpenACC loop pour paralléliser les boucles et spécifier la distribution, l'effondrement, la réduction et la tuile des boucles.
  • Utilisation de la directive et des clauses OpenACC data pour gérer le mouvement des données et les régions de données
  • Utilisation de la directive et des clauses de mise à jour OpenACC pour synchroniser les données entre l'hôte et l'appareil
  • Utilisation de la directive et des clauses de cache OpenACC pour améliorer la réutilisation et la localité des données
  • Utilisation de la directive et des clauses OpenACC routine pour créer des fonctions de périphérique et spécifier le type de fonction et la longueur du vecteur
  • Utilisation de la directive et des clauses d'attente OpenACC pour synchroniser les événements et les dépendances.

API OpenACC

  • Comprendre le rôle de l'API OpenACC dans le programme hôte
  • Utilisation de l'API OpenACC pour demander des informations sur les périphériques et leurs capacités
  • Utilisation de l'API OpenACC pour définir le numéro et le type de périphérique
  • Utilisation de l'API OpenACC pour gérer les erreurs et les exceptions
  • Utilisation de l'API OpenACC pour créer et synchroniser des événements

Bibliothèques OpenACC et interopérabilité

  • Comprendre le rôle des bibliothèques OpenACC et des fonctions d'interopérabilité dans le programme de périphérique
  • Utiliser les bibliothèques OpenACC, telles que math, random et complex, pour effectuer des tâches et des opérations courantes
  • Utiliser les fonctions d'interopérabilité d'OpenACC, telles que deviceptr, use_device et acc_memcpy, pour intégrer OpenACC à d'autres modèles de programmation, tels que CUDA, OpenMP et MPI.
  • Utiliser les fonctions d'interopérabilité d'OpenACC, telles que host_data et declare, pour intégrer OpenACC avec les bibliothèques GPU, telles que cuBLAS et cuFFT.

Outils OpenACC

  • Comprendre le rôle des outils OpenACC dans le processus de développement
  • Utiliser les outils OpenACC pour profiler et déboguer les programmes OpenACC et identifier les goulets d'étranglement et les opportunités en matière de performances
  • Utiliser les outils OpenACC, tels que PGI Compiler, NVIDIA Nsight Systems et Allinea Forge, pour mesurer et améliorer le temps d'exécution et l'utilisation des ressources.

Optimisation

  • Comprendre les facteurs qui affectent les performances des programmes OpenACC
  • Utiliser les directives et clauses OpenACC pour optimiser la localité des données et réduire les transferts de données
  • Utiliser les directives et clauses OpenACC pour optimiser le parallélisme et la fusion des boucles
  • Utiliser les directives et clauses OpenACC pour optimiser le parallélisme et la fusion des noyaux
  • Utilisation des directives et clauses OpenACC pour optimiser la vectorisation et l'auto-tuning

Résumé et prochaines étapes

Pré requis

  • Compréhension du langage C/C++ ou Fortran et des concepts de programmation parallèle.
  • Connaissance de base de l'architecture des ordinateurs et de la hiérarchie de la mémoire
  • Expérience des outils de ligne de commande et des éditeurs de code

Public

  • Développeurs souhaitant apprendre à utiliser OpenACC pour programmer des dispositifs hétérogènes et exploiter leur parallélisme.
  • Les développeurs qui souhaitent écrire du code portable et évolutif qui peut fonctionner sur différentes plateformes et dispositifs.
  • Les programmeurs qui souhaitent explorer les aspects de haut niveau de la programmation hétérogène et optimiser la productivité de leur code.
 28 heures

Nombre de participants



Prix par participant

Nos Clients témoignent (1)

Cours Similaires

GPU Programming with OpenCL

28 heures

GPU Programming with CUDA

28 heures

GPU Programming - OpenCL vs CUDA vs ROCm

28 heures

AMD GPU Programming

28 heures

ROCm for Windows

21 heures

Introduction to GPU Programming

21 heures

Catégories Similaires