Torna ai corsi
AI022 Professional

Guida alla programmazione AMD HIP

Una guida tecnica completa sull'Interfaccia per l'elaborazione eterogenea portabile (HIP). Fornisce un'API di runtime C++ e un linguaggio kernel che permette agli sviluppatori di creare applicazioni portabili per GPU AMD e NVIDIA da un singolo codice sorgente. La guida copre l'installazione, la configurazione dell'ambiente, i modelli di programmazione, l'allocazione della memoria e gli strumenti per il passaggio del codice CUDA a HIP.

4.9
12.0h
841 studenti
0 mi piace
Intelligenza Artificiale
Inizia ad imparare

Panoramica del corso

📚 Riepilogo del contenuto

Un manuale tecnico completo per l'interfaccia Heterogeneous-compute per la portabilità (HIP). Fornisce un'API di runtime C++ e un linguaggio kernel che permette agli sviluppatori di creare applicazioni portabili per GPU AMD e NVIDIA da un'unica base di codice. La guida copre l'installazione, la configurazione dell'ambiente, i modelli di programmazione, l'allocazione della memoria e gli strumenti per convertire il codice CUDA in HIP.

Padroneggia la programmazione GPU portabile: una sola base di codice per entrambe le piattaforme AMD e NVIDIA.

Autore: Advanced Micro Devices, Inc. (AMD)

Ringraziamenti: AMD, il logo AMD Arrow, AMD Instinct, Radeon, ROCm e le loro combinazioni sono marchi registrati di Advanced Micro Devices, Inc. Linux è un marchio registrato di Linus Torvalds. PCIe è un marchio registrato della PCI-SIG Corporation.

🎯 Obiettivi didattici

  1. Definire le caratteristiche principali e i vantaggi offerti dal framework HIP.
  2. Dimostrare come accedere e interrogare l'ambiente HIP tramite strumenti di sistema.
  3. Spiegare il rapporto architetturale tra la portabilità HIP e la sua tecnologia compilatore.
  4. Eseguire installazioni specifiche della piattaforma per ambienti NVIDIA e AMD.
  5. Coordinare il processo di build multi-repository per compilare HIP da codice sorgente.
  6. Verificare un'installazione corretta utilizzando strumenti di configurazione e verifica del sistema.
  7. Configurare e gestire la memoria GPU usando l'allocazione HIP, controlli di coerenza e visibilità della memoria host zero-copy.
  8. Sviluppare kernel ad alte prestazioni usando qualificatori, tipi vettoriali e primitive di sincronizzazione specifiche di HIP.
  9. Implementare algoritmi paralleli avanzati utilizzando funzioni di shuffle, vote, ballot e gruppi cooperativi.
  10. Automatizzare la traduzione del codice CUDA in HIP usando strumenti HIPIFY e gestire conversioni progetto in loco.

🔹 Lezione 1: Introduzione alla portabilità e all'architettura HIP

Panoramica: Questa lezione tratta gli aspetti fondamentali dell'interfaccia Heterogeneous-compute per la portabilità (HIP). Si concentra sulle caratteristiche principali che definiscono HIP, sui metodi principali per accedere all'ambiente HIP e sulla tecnologia del compilatore sottostante che consente una portabilità senza interruzioni tra diverse architetture GPU (AMD e NVIDIA).

Risultati apprendimento:

  • Definire le caratteristiche principali e i vantaggi offerti dal framework HIP.
  • Dimostrare come accedere e interrogare l'ambiente HIP tramite strumenti di sistema.
  • Spiegare il rapporto architetturale tra la portabilità HIP e la sua tecnologia compilatore.

🔹 Lezione 2: Installazione e verifica dell'ambiente HIP

Panoramica: Questa lezione fornisce una guida tecnica per configurare l'ambiente HIP (Heterogeneous-compute Interface for Portability) su diverse piattaforme hardware. Copre i passaggi specifici di installazione per i backend AMD e NVIDIA, il complesso processo di compilazione del runtime HIP da repository sorgente e le procedure finali di verifica per garantire la prontezza del sistema allo sviluppo GPU.

Risultati apprendimento:

  • Eseguire installazioni specifiche della piattaforma per ambienti NVIDIA e AMD.
  • Coordinare il processo di build multi-repository per compilare HIP da codice sorgente.
  • Verificare un'installazione corretta utilizzando strumenti di configurazione e verifica del sistema.

🔹 Lezione 3: Modello di programmazione HIP e approfondimento API

Panoramica: Questa lezione offre un'approfondita esplorazione del modello di programmazione Heterogeneous-Compute Interface for Portability (HIP). Copre l'API fondamentale per la gestione della memoria e l'esecuzione dei kernel, le sfumature del linguaggio kernel HIP (compresi qualificatori e variabili incorporate), e funzionalità avanzate come primitive a livello di warp, gruppi cooperativi e intrinseci matematici specializzati.

Risultati apprendimento:

  • Configurare e gestire la memoria GPU usando l'allocazione HIP, controlli di coerenza e visibilità della memoria host zero-copy.
  • Sviluppare kernel ad alte prestazioni usando qualificatori, tipi vettoriali e primitive di sincronizzazione specifiche di HIP.
  • Implementare algoritmi paralleli avanzati utilizzando funzioni di shuffle, vote, ballot e gruppi cooperativi.

🔹 Lezione 4: Trasferimento e migrazione di applicazioni CUDA in HIP

Panoramica: Questa lezione descrive il processo sistematico di migrazione del codice sorgente CUDA verso il framework HIP (Heterogeneous-Compute Interface for Portability). Dettaglia l'uso di strumenti automatizzati come HIPIFY, strategie per la conversione di progetti, l'identificazione dei comportamenti specifici del compilatore tra piattaforme (HIP-Clang vs. NVIDIA) e la gestione delle differenze architetturali.

Risultati apprendimento:

  • Automatizzare la traduzione del codice CUDA in HIP usando strumenti HIPIFY e gestire conversioni progetto in loco.
  • Differenziare tra piattaforme di destinazione AMD e NVIDIA e tra compilatori usando macro preprocessor e query di ambiente.
  • Implementare controlli per caratteristiche architetturali (HIP_ARCH) e applicare workaround per funzioni CUDA specializzate come memcpyToSymbol.