Retour aux cours
AI022 Professional

Guide de programmation AMD HIP

Un manuel technique complet sur l'interface Heterogeneous-compute Interface for Portability (HIP). Il fournit une API Runtime C++ et un langage de noyau permettant aux développeurs de créer des applications portables pour les GPU AMD et NVIDIA à partir d'un seul code source. Ce guide couvre l'installation, la configuration de l'environnement, les modèles de programmation, l'allocation de mémoire et les outils pour migrer du code CUDA vers HIP.

4.9
12.0h
841 étudiants
0 j'aime
Intelligence Artificielle
Commencer à apprendre

Aperçu du cours

📚 Résumé du contenu

Un manuel technique complet sur l'Interface de calcul hétérogène pour la portabilité (HIP). Il fournit une API Runtime C++ et un langage de noyau permettant aux développeurs de créer des applications portables pour les GPU AMD et NVIDIA à partir d'un seul code source. Ce guide couvre l'installation, la configuration de l'environnement, les modèles de programmation, l'allocation de mémoire et les outils de migration du code CUDA vers HIP.

Maîtrisez le développement GPU portable : une seule source pour les plateformes AMD et NVIDIA.

Auteur : Advanced Micro Devices, Inc. (AMD)

Remerciements : AMD, le logo AMD Arrow, AMD Instinct, Radeon, ROCm et leurs combinaisons sont des marques déposées d'Advanced Micro Devices, Inc. Linux est une marque déposée de Linus Torvalds. PCIe est une marque déposée de PCI-SIG Corporation.

🎯 Objectifs d'apprentissage

  1. Définir les fonctionnalités principales et les avantages de la plateforme HIP.
  2. Démontrer comment accéder et interroger l'environnement HIP à l'aide d'outils système.
  3. Expliquer la relation architecturale entre la portabilité HIP et sa technologie de compilation.
  4. Exécuter les installations spécifiques aux plateformes pour les environnements NVIDIA et AMD.
  5. Coordonner le processus de construction multi-repertoire pour compiler HIP à partir du code source.
  6. Valider une installation réussie à l'aide d'outils de configuration et de vérification système.
  7. Configurer et gérer la mémoire GPU en utilisant l'allocation HIP, les contrôles de cohérence et la visibilité de la mémoire hôte sans copie.
  8. Développer des noyaux haute performance à l’aide de qualificateurs de fonctions/variables HIP spécifiques, de types vectoriels et de primitives de synchronisation.
  9. Mettre en œuvre des algorithmes parallèles avancés en utilisant les fonctions d’entrelacement de warp, de vote, de ballot et de groupes coopératifs.
  10. Automatiser la traduction du code CUDA vers HIP à l’aide des outils HIPIFY et gérer les conversions de projets in situ.

🔹 Leçon 1 : Introduction à la portabilité et à l'architecture HIP

Aperçu : Cette leçon aborde les aspects fondamentaux de l'Interface de calcul hétérogène pour la portabilité (HIP). Elle se concentre sur les fonctionnalités essentielles définissant HIP, les méthodes principales d'accès à l'environnement HIP et la technologie de compilation sous-jacente qui permet une portabilité transparente entre différentes architectures GPU (AMD et NVIDIA).

Objectifs d'apprentissage :

  • Définir les fonctionnalités principales et les avantages de la plateforme HIP.
  • Démontrer comment accéder et interroger l'environnement HIP à l'aide d'outils système.
  • Expliquer la relation architecturale entre la portabilité HIP et sa technologie de compilation.

🔹 Leçon 2 : Installation et vérification de l'environnement HIP

Aperçu : Cette leçon fournit un guide technique pour configurer l’environnement HIP (Interface de calcul hétérogène pour la portabilité) sur différentes plates-formes matérielles. Elle couvre les étapes d’installation spécifiques aux backends AMD et NVIDIA, le processus complexe de construction du runtime HIP à partir des dépôts sources, ainsi que les procédures de vérification finale afin d’assurer la préparation du système au développement GPU.

Objectifs d'apprentissage :

  • Exécuter les installations spécifiques aux plateformes pour les environnements NVIDIA et AMD.
  • Coordonner le processus de construction multi-repertoires pour compiler HIP à partir du code source.
  • Valider une installation réussie à l’aide d’outils de configuration système et d’outils de vérification.

🔹 Leçon 3 : Modèle de programmation HIP et approfondissement de l’API

Aperçu : Cette leçon propose une exploration complète du modèle de programmation HIP (Interface de calcul hétérogène pour la portabilité). Elle couvre l’API fondamentale pour la gestion de la mémoire et l’exécution des noyaux, les subtilités du langage de noyau HIP (y compris les qualificateurs et variables intégrées), ainsi que des fonctionnalités avancées telles que les primitives de niveau warp, les groupes coopératifs et les intrinsèques mathématiques spécialisées.

Objectifs d'apprentissage :

  • Configurer et gérer la mémoire GPU à l’aide de l’allocation HIP, des contrôles de cohérence et de la visibilité de la mémoire hôte sans copie.
  • Développer des noyaux haute performance à l’aide de qualificateurs de fonctions/variables HIP spécifiques, de types vectoriels et de primitives de synchronisation.
  • Mettre en œuvre des algorithmes parallèles avancés en utilisant les fonctions d’entrelacement de warp, de vote, de ballot et de groupes coopératifs.

🔹 Leçon 4 : Migration et portage d'applications CUDA vers HIP

Aperçu : Cette leçon traite du processus systématique de migration du code source CUDA vers la plateforme HIP (Interface de calcul hétérogène pour la portabilité). Elle détaille l’utilisation d’outils automatisés comme HIPIFY, les stratégies de conversion de projet, l’identification des comportements spécifiques aux compilateurs selon la plateforme (HIP-Clang vs. NVIDIA) et la gestion des différences architecturales.

Objectifs d'apprentissage :

  • Automatiser la traduction du code CUDA vers HIP à l’aide des outils HIPIFY et gérer les conversions de projets in situ.
  • Différencier les plateformes cibles AMD et NVIDIA ainsi que leurs compilateurs à l’aide de macros de préprocesseur et d’interrogations d’environnement.
  • Implémenter des vérifications de fonctionnalités architecturales (HIP_ARCH) et appliquer des correctifs pour des fonctions CUDA spécialisées comme memcpyToSymbol.