Prenez contact avec nous

Plan du cours

Introduction

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

Premiers pas

  • Création d'un projet OpenACC dans Visual Studio Code
  • Exploration de la structure du projet et des fichiers
  • Compilation et exécution du programme
  • Affichage de la sortie avec printf et fprintf

Directives et clauses OpenACC

  • Comprendre les directives et les clauses OpenACC
  • Utilisation des directives parallèles pour créer des régions parallèles
  • Utilisation des directives kernels pour le parallélisme géré par le compilateur
  • Utilisation des directives de boucle pour paralléliser les boucles
  • Gestion des mouvements de données avec les directives de données
  • Synchronisation des données avec les directives de mise à jour
  • Amélioration de la réutilisation des données avec les directives de cache
  • Création de fonctions de dispositif avec les directives de routine
  • Synchronisation des événements avec les directives d'attente

API OpenACC

  • Compréhension du rôle de l'API OpenACC
  • Interrogation des informations et des capacités du dispositif
  • Définir le numéro et le type de dispositif
  • Gestion des erreurs et des exceptions
  • Création et synchronisation des événements

Bibliothèques et interopérabilité OpenACC

  • Compréhension des bibliothèques OpenACC et de l'interopérabilité
  • Utilisation des bibliothèques mathématiques, aléatoires et complexes
  • Intégration avec d'autres modèles (CUDA, OpenMP, MPI)
  • Intégration avec les bibliothèques GPU (cuBLAS, cuFFT)

Outils OpenACC

  • Compréhension des outils OpenACC dans le développement
  • Profiling et débogage des programmes OpenACC
  • Analyse des performances avec le compilateur PGI, NVIDIA Nsight Systems, Allinea Forge

Optimisation

  • Facteurs influençant les performances des programmes OpenACC
  • Optimisation de la localité des données et réduction des transferts
  • Optimisation du parallélisme des boucles et de la fusion
  • Optimisation du parallélisme des kernels et de la fusion
  • Optimisation de la vectorisation et de l'auto-réglage

Résumé et prochaines étapes

Pré requis

  • Une compréhension des langages C/C++ ou Fortran et des concepts de programmation parallèle
  • Des connaissances de base en architecture informatique et hiérarchie de mémoire
  • Une expérience avec les outils en ligne de commande et les éditeurs de code

Audience

  • Développeurs qui souhaitent apprendre à utiliser OpenACC pour programmer des dispositifs hétérogènes et exploiter leur parallélisme
  • Développeurs qui souhaitent écrire un code portable et évolutif pouvant s'exécuter sur différentes plateformes et dispositifs
  • 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

Cours à venir

Catégories Similaires