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 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