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 ROCm ?
- Qu'est-ce que HIP ?
- ROCm vs CUDA vs OpenCL
- Aperçu des fonctionnalités et de l'architecture de ROCm et HIP
- Configuration de l'environnement de développement
Premiers pas
- Création d'un nouveau projet ROCm à l'aide de Visual Studio Code
- Exploration de la structure du projet et des fichiers
- Compilation et exécution du programme
- Affichage de la sortie à l'aide de printf et fprintf
API ROCm
- Compréhension du rôle de l'API ROCm dans le programme hôte
- Utilisation de l'API ROCm pour interroger les informations et les capacités du dispositif
- Utilisation de l'API ROCm pour allouer et libérer de la mémoire sur le dispositif
- Utilisation de l'API ROCm pour transférer des données entre l'hôte et le dispositif
- Utilisation de l'API ROCm pour lancer des kernels et synchroniser les threads
- Utilisation de l'API ROCm pour gérer les erreurs et les exceptions
Langage HIP
- Compréhension du rôle du langage HIP dans le programme périphérique
- Utilisation du langage HIP pour écrire des kernels exécutés sur le GPU et manipuler les données
- Utilisation des types de données, qualificateurs, opérateurs et expressions HIP
- Utilisation des fonctions intégrées, variables et bibliothèques HIP pour réaliser des tâches et opérations courantes
Modèle mémoire ROCm et HIP
- Compréhension de la différence entre les modèles mémoire de l'hôte et du dispositif
- Utilisation des espaces mémoire ROCm et HIP, tels que global, partagé, constant et local
- Utilisation des objets mémoire ROCm et HIP, tels que les pointeurs, les tableaux, les textures et les surfaces
- Utilisation des modes d'accès mémoire ROCm et HIP, tels que lecture seule, écriture seule, lecture-écriture, etc.
- Utilisation du modèle de cohérence mémoire et des mécanismes de synchronisation ROCm et HIP
Modèle d'exécution ROCm et HIP
- Compréhension de la différence entre les modèles d'exécution de l'hôte et du dispositif
- Utilisation des threads, blocs et grilles ROCm et HIP pour définir le parallélisme
- Utilisation des fonctions de thread ROCm et HIP, telles que hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x, etc.
- Utilisation des fonctions de bloc ROCm et HIP, telles que __syncthreads, __threadfence_block, etc.
- Utilisation des fonctions de grille ROCm et HIP, telles que hipGridDim_x, hipGridSync, groupes coopératifs, etc.
Débogage
- Compréhension des erreurs et bugs courants dans les programmes ROCm et HIP
- Utilisation du débogueur de Visual Studio Code pour inspecter les variables, points d'arrêt, pile d'appels, etc.
- Utilisation de ROCm Debugger pour déboguer les programmes ROCm et HIP sur les dispositifs AMD
- Utilisation de ROCm Profiler pour analyser les programmes ROCm et HIP sur les dispositifs AMD
Optimisation
- Compréhension des facteurs affectant les performances des programmes ROCm et HIP
- Utilisation des techniques de consolidation (coalescing) ROCm et HIP pour améliorer le débit mémoire
- Utilisation des techniques de mise en cache et de préchargement ROCm et HIP pour réduire la latence mémoire
- Utilisation des techniques de mémoire partagée et mémoire locale ROCm et HIP pour optimiser les accès mémoire et la bande passante
- Utilisation de l'outillage de profilage ROCm et HIP pour mesurer et améliorer le temps d'exécution et l'utilisation des ressources
Synthèse et prochaines étapes
Pré requis
- Une compréhension du langage C/C++ et des concepts de programmation parallèle
- Des connaissances de base en architecture informatique et hiérarchie mémoire
- De l'expérience avec les outils en ligne de commande et les éditeurs de code
Public cible
- Développeurs souhaitant apprendre à utiliser ROCm et HIP pour programmer les GPU AMD et tirer parti de leur parallélisme
- Développeurs souhaitant écrire du code performant et évolutif capable de s'exécuter sur différents dispositifs AMD
- Programmateurs souhaitant explorer les aspects bas niveau de la programmation GPU et optimiser les performances de leur code
28 Heures