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
Nos clients témoignent (2)
Très interactif avec des exemples variés, avec une bonne progression de la complexité entre le début et la fin de la formation.
Jenny - Andheo
Formation - GPU Programming with CUDA and Python
Traduction automatique
L'énergie et l'humour des formateurs.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Formation - NVIDIA GPU Programming - Extended
Traduction automatique