Plan du cours

Introduction

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

Prise en main

  • 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

  • Compréhension des directives et clauses OpenACC
  • Utilisation de directives parallèles pour créer des régions parallèles
  • Utilisation de directives kernels pour une parallélisme géré par le compilateur
  • Utilisation de directives loop pour la parallélisation des boucles
  • Gestion du déplacement de données avec les directives data
  • Synchronisation des données avec les directives update
  • Amélioration de l'utilisation en mémoire cache avec les directives cache
  • Création de fonctions d'appareil avec les directives routine
  • Synchronisation des événements avec les directives wait

API OpenACC

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

Bibliothèques OpenACC et interopérabilité

  • 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 en développement
  • Profiling et débogage de programmes OpenACC
  • Analyse des performances avec PGI Compiler, NVIDIA Nsight Systems, Allinea Forge

Optimisation

  • Facteurs affectant les performances des programmes OpenACC
  • Optimisation de la localité des données et réduction des transferts
  • Optimisation du parallélisme et de la fusion des boucles
  • Optimisation du parallélisme et de la fusion des noyaux
  • Optimisation de la vectorisation et de l'auto-optimisation

Bilan et prochaines étapes

Pré requis

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

Audience

  • Développeurs souhaitant apprendre à utiliser OpenACC pour programmer des appareils hétérogènes et exploiter leur parallélisme
  • Développeurs souhaitant écrire un code portable et évolutif qui peut s'exécuter sur différentes plates-formes et appareils
  • Programmeurs souhaitant explorer les aspects de haut niveau de la programmation hétérogène et optimiser leur productivité en matière de code
 28 Heures

Nombre de participants


Prix ​​par Participant

Cours à venir

Catégories Similaires