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
- Configuration de l'environnement de développement
Démarrage
- 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 des directives parallel pour créer des régions parallèles
- Utilisation des directives kernels pour le parallélisme géré par le compilateur
- Utilisation des directives loop pour paralléliser les boucles
- Gestion du transfert de données avec les directives data
- Synchronisation des données avec les directives update
- Amélioration de la réutilisation des données avec les directives cache
- Création de fonctions device 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 des périphériques
- Définir le nombre et le type de périphérique
- Gestion des erreurs et exceptions
- Création et synchronisation d'é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 des programmes OpenACC
- Analyse des performances avec les compilateurs 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 noyaux et de la fusion
- Optimisation de la vectorisation et du réglage automatique
Résumé et étapes suivantes
Pré requis
- Une compréhension de la programmation parallèle et des langages C/C++ ou Fortran
- Des connaissances de base en architecture informatique et hiérarchie de mémoire
- Expérience avec les outils en ligne de commande et les éditeurs de code
Public cible
- Développeurs qui souhaitent apprendre à utiliser OpenACC pour programmer des appareils hétérogènes et exploiter leur parallélisme
- Développeurs qui souhaitent écrire du code portable et évolutif qui peut s'exécuter sur différentes plateformes et appareils
- Programmateurs qui souhaitent explorer les aspects de haut niveau de la programmation hétérogène et optimiser la productivité de leur code
28 Heures