Merci d'avoir envoyé votre demande ! Un membre de notre équipe vous contactera sous peu.
Merci d'avoir envoyé votre réservation ! Un membre de notre équipe vous contactera sous peu.
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