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 caractéristiques et de l'architecture d'OpenACC
- Configuration de l'environnement de développement
Pour commencer
- Création d'un nouveau projet OpenACC à l'aide du code Visual Studio
- Exploration de la structure et des fichiers du projet
- Compilation et exécution du programme
- Affichage de la sortie à l'aide de printf et fprintf
Directives et clauses OpenACC
- Comprendre le rôle des directives et des clauses OpenACC dans le code de l'hôte et du périphérique
- Utiliser la directive et les clauses OpenACC parallel pour créer des régions parallèles et spécifier le nombre de gangs, de travailleurs et de vecteurs
- Utilisation de la directive et des clauses OpenACC kernels pour créer des régions kernels et laisser le compilateur décider du parallélisme.
- Utilisation de la directive et des clauses OpenACC loop pour paralléliser les boucles et spécifier la distribution, l'effondrement, la réduction et la tuile des boucles.
- Utilisation de la directive et des clauses OpenACC data pour gérer le mouvement des données et les régions de données
- Utilisation de la directive et des clauses de mise à jour OpenACC pour synchroniser les données entre l'hôte et l'appareil
- Utilisation de la directive et des clauses de cache OpenACC pour améliorer la réutilisation et la localité des données
- Utilisation de la directive et des clauses OpenACC routine pour créer des fonctions de périphérique et spécifier le type de fonction et la longueur du vecteur
- Utilisation de la directive et des clauses d'attente OpenACC pour synchroniser les événements et les dépendances.
API OpenACC
- Comprendre le rôle de l'API OpenACC dans le programme hôte
- Utilisation de l'API OpenACC pour demander des informations sur les périphériques et leurs capacités
- Utilisation de l'API OpenACC pour définir le numéro et le type de périphérique
- Utilisation de l'API OpenACC pour gérer les erreurs et les exceptions
- Utilisation de l'API OpenACC pour créer et synchroniser des événements
Bibliothèques OpenACC et interopérabilité
- Comprendre le rôle des bibliothèques OpenACC et des fonctions d'interopérabilité dans le programme de périphérique
- Utiliser les bibliothèques OpenACC, telles que math, random et complex, pour effectuer des tâches et des opérations courantes
- Utiliser les fonctions d'interopérabilité d'OpenACC, telles que deviceptr, use_device et acc_memcpy, pour intégrer OpenACC à d'autres modèles de programmation, tels que CUDA, OpenMP et MPI.
- Utiliser les fonctions d'interopérabilité d'OpenACC, telles que host_data et declare, pour intégrer OpenACC avec les bibliothèques GPU, telles que cuBLAS et cuFFT.
Outils OpenACC
- Comprendre le rôle des outils OpenACC dans le processus de développement
- Utiliser les outils OpenACC pour profiler et déboguer les programmes OpenACC et identifier les goulets d'étranglement et les opportunités en matière de performances
- Utiliser les outils OpenACC, tels que PGI Compiler, NVIDIA Nsight Systems et Allinea Forge, pour mesurer et améliorer le temps d'exécution et l'utilisation des ressources.
Optimisation
- Comprendre les facteurs qui affectent les performances des programmes OpenACC
- Utiliser les directives et clauses OpenACC pour optimiser la localité des données et réduire les transferts de données
- Utiliser les directives et clauses OpenACC pour optimiser le parallélisme et la fusion des boucles
- Utiliser les directives et clauses OpenACC pour optimiser le parallélisme et la fusion des noyaux
- Utilisation des directives et clauses OpenACC pour optimiser la vectorisation et l'auto-tuning
Résumé et prochaines étapes
Pré requis
- Compréhension du langage C/C++ ou Fortran et des concepts de programmation parallèle.
- Connaissance de base de l'architecture des ordinateurs et de la hiérarchie de la mémoire
- Expérience des outils de ligne de commande et des éditeurs de code
Public
- Développeurs souhaitant apprendre à utiliser OpenACC pour programmer des dispositifs hétérogènes et exploiter leur parallélisme.
- Les développeurs qui souhaitent écrire du code portable et évolutif qui peut fonctionner sur différentes plateformes et dispositifs.
- Les 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