Prenez contact avec nous

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
  • Mise en place 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 capacités du périphérique
  • Utilisation de l'API ROCm pour allouer et libérer de la mémoire sur le périphérique
  • Utilisation de l'API ROCm pour copier des données entre l'hôte et le périphérique
  • 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 qui s'exécutent sur le GPU et manipulent des données
  • Utilisation des types de données, des qualificateurs, des opérateurs et des expressions de HIP
  • Utilisation des fonctions intégrées, des variables et des bibliothèques de HIP pour effectuer des tâches et opérations courantes

Modèle mémoire de ROCm et HIP

  • Compréhension de la différence entre les modèles mémoire de l'hôte et du périphérique
  • Utilisation des espaces mémoire de ROCm et HIP, tels que global, partagé, constant et local
  • Utilisation des objets mémoire de ROCm et HIP, tels que les pointeurs, les tableaux, les textures et les surfaces
  • Utilisation des modes d'accès mémoire de ROCm et HIP, tels que en lecture seule, en écriture seule, en lecture-écriture, etc.
  • Utilisation du modèle de cohérence mémoire et des mécanismes de synchronisation de ROCm et HIP

Modèle d'exécution de ROCm et HIP

  • Compréhension de la différence entre les modèles d'exécution de l'hôte et du périphérique
  • Utilisation des threads, blocs et grilles de ROCm et HIP pour définir le parallélisme
  • Utilisation des fonctions de thread de ROCm et HIP, telles que hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x, etc.
  • Utilisation des fonctions de bloc de ROCm et HIP, telles que __syncthreads, __threadfence_block, etc.
  • Utilisation des fonctions de grille de ROCm et HIP, telles que hipGridDim_x, hipGridSync, groupes coopératifs, etc.

Débogage

  • Compréhension des erreurs et bogies courants dans les programmes ROCm et HIP
  • Utilisation du débogueur de Visual Studio Code pour inspecter les variables, les points d'arrêt, la pile d'appels, etc.
  • Utilisation de ROCm Debugger pour déboguer les programmes ROCm et HIP sur les appareils AMD
  • Utilisation de ROCm Profiler pour analyser les programmes ROCm et HIP sur les appareils AMD

Optimisation

  • Compréhension des facteurs qui affectent les performances des programmes ROCm et HIP
  • Utilisation des techniques de fusion (coalescing) de ROCm et HIP pour améliorer le débit mémoire
  • Utilisation des techniques de mise en cache et de préchargement de ROCm et HIP pour réduire la latence mémoire
  • Utilisation des techniques de mémoire partagée et locale de ROCm et HIP pour optimiser les accès mémoire et la bande passante
  • Utilisation du profilage et des outils de profilage de ROCm et HIP pour mesurer et améliorer le temps d'exécution et l'utilisation des ressources

Résumé et prochaines étapes

Pré requis

  • Compréhension du langage C/C++ et des concepts de programmation parallèle.
  • Connaissances de base en architecture informatique et hiérarchie mémoire.
  • 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 exploiter leur parallélisme.
  • Développeurs souhaitant écrire du code haute performance et évolutif capable de s'exécuter sur différents appareils AMD.
  • Programmeurs souhaitant explorer les aspects basse niveau de la programmation GPU et optimiser les performances de leur code.
 28 Heures

Nombre de participants


Prix par participant

Cours à venir

Catégories Similaires