Plan du cours

Introduction

  • Qu'est-ce que le ROCm ?
  • Qu'est-ce que HIP ?
  • ROCm vs CUDA vs OpenCL
  • Aperçu des caractéristiques et de l'architecture de ROCm et de HIP
  • ROCm pour ROCm for Windows vs ROCm pour Linux

Installation

  • Installation de ROCm sur Windows
  • Vérifier l'installation et la compatibilité des appareils
  • Mise à jour ou désinstallation de ROCm sur Windows
  • Résolution des problèmes d'installation les plus courants

Pour commencer

  • Création d'un nouveau projet ROCm à l'aide de Visual Studio Code sous Windows
  • Explorer la structure et les fichiers du projet
  • Compilation et exécution du programme
  • Affichage de la sortie à l'aide de printf et fprintf

API ROCm

  • Utilisation de l'API ROCm dans le programme hôte
  • Interroger les informations et les capacités du dispositif
  • Attribution et désattribution de la mémoire du périphérique
  • Copie de données entre l'hôte et le périphérique
  • Lancer des noyaux et synchroniser des threads
  • Gestion des erreurs et des exceptions

Langage HIP

  • Utilisation du langage HIP dans le programme de l'appareil
  • Écriture de noyaux 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
  • Utilisation des fonctions intégrées, des variables et des bibliothèques

Modèle de mémoire ROCm et HIP

  • Utilisation de différents espaces mémoire, tels que global, partagé, constant et local
  • Utilisation de différents objets mémoire, tels que les pointeurs, les tableaux, les textures et les surfaces
  • Utilisation de différents modes d'accès à la mémoire, tels que lecture seule, écriture seule, lecture-écriture, etc.
  • Utilisation du modèle de cohérence de la mémoire et des mécanismes de synchronisation

Modèle d'exécution ROCm et HIP

  • Utilisation de différents modèles d'exécution, tels que les threads, les blocs et les grilles
  • Utilisation des fonctions de thread, telles que hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x, etc.
  • Utilisation des fonctions de bloc, telles que __syncthreads, __threadfence_block, etc.
  • Utilisation de fonctions de grille, telles que hipGridDim_x, hipGridSync, groupes coopératifs, etc.

Débogage

  • Débogage des programmes ROCm et HIP sous Windows
  • Utilisation du débogueur de code Visual Studio pour inspecter les variables, les points d'arrêt, la pile d'appels, etc.
  • Utilisation du débogueur ROCm 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

  • Optimisation des programmes ROCm et HIP sous Windows
  • Utilisation de techniques de coalescence pour améliorer le débit de la mémoire
  • Utilisation de techniques de mise en cache et d'extraction préalable pour réduire la latence de la mémoire
  • Utilisation des techniques de mémoire partagée et de mémoire locale pour optimiser les accès à la mémoire et la bande passante
  • Utilisation d'outils de profilage 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
  • 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
  • Familiarité avec le système d'exploitation Windows et PowerShell

Public

  • Développeurs souhaitant apprendre à installer et à utiliser ROCm sur Windows pour programmer des AMDGPU et exploiter leur parallélisme.
  • Développeurs souhaitant écrire un code performant et évolutif pouvant être exécuté sur différents appareils AMD
  • Les programmeurs qui souhaitent explorer les aspects de bas niveau de la programmation GPU et optimiser les performances de leur code
 21 heures

Nombre de participants


Prix par participant

Nos clients témoignent (2)

Cours à venir