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 (2)

Cours à venir

Catégories Similaires