The Pulse
AMD illustra i trasferimenti DMA avviati dalla GPU per carichi di lavoro multi-GPU
AMD afferma che, nei test con messaggi di grandi dimensioni, i trasferimenti avviati dalla GPU tramite motori di copia dedicati hanno eguagliato o superato la larghezza di banda predefinita di RCCL, usando meno unità di calcolo. La funzionalità è disponibile in RCCL e rocSHMEM a partire da ROCm 10.1, ma è necessario compilare il codice sorgente.

I kernel GPU possono ora avviare trasferimenti tra dispositivi usando motori di copia dedicati nelle librerie RCCL e rocSHMEM di AMD. L’azienda afferma che i test condotti su otto GPU Instinct MI350X hanno mostrato una larghezza di banda comparabile o superiore, con messaggi di grandi dimensioni, rispetto alle operazioni RCCL predefinite, usando una sola unità di calcolo anziché 64.
La funzionalità è disponibile nelle librerie a partire da ROCm 10.1, ma gli utenti devono compilarle dal codice sorgente. In un post tecnico del 13 novembre, AMD ha descritto il meccanismo e i risultati dei benchmark per la comunicazione all’interno di un nodo GPU.
Separare la copia dal calcolo
Il DMA di sistema avviato dalla GPU, o SDMA, permette a un kernel GPU in esecuzione di inviare comandi di trasferimento, mentre motori dedicati eseguono la copia. Le unità di calcolo coordinano l’operazione, invece di occuparsi direttamente dello spostamento dei dati.
Il post mette a confronto questo approccio con la comunicazione GPU load/store, in cui sono le unità di calcolo a eseguire la copia, e con l’SDMA avviato dall’host, in cui è la CPU a iniziare il trasferimento. AMD afferma che affidare il lavoro di copia a motori dedicati lascia più risorse di calcolo disponibili per i kernel che combinano calcolo e comunicazione.
A un livello più basso, i comandi vengono inseriti in un buffer circolare e un meccanismo doorbell ne attiva l’elaborazione da parte di un motore SDMA. RCCL e rocSHMEM preparano internamente i pacchetti per le operazioni avviate dal dispositivo, senza richiedere ai kernel del dispositivo di gestire direttamente questi dettagli.
Risultati con due librerie
Per il confronto con RCCL, i ricercatori hanno misurato la larghezza di banda del bus in funzione della dimensione dei messaggi su un singolo nodo con otto GPU MI350X. Hanno confrontato l’implementazione predefinita load/store con l’SDMA avviato dall’host e quello avviato dalla GPU per le operazioni AlltoAll e Allgather.
L’azienda riferisce che entrambe le implementazioni SDMA hanno fornito una larghezza di banda comparabile o leggermente superiore a quella predefinita con le dimensioni dei messaggi più grandi testate. Le configurazioni SDMA usavano la registrazione della memoria simmetrica, mentre l’implementazione predefinita non la usava.
Per AlltoAll, il backend SDMA avviato dalla GPU è stato usato per messaggi superiori a 32 MiB; per quelli più piccoli sono state usate operazioni vector load/store. Per Allgather, il backend è stato usato per messaggi di almeno 512 KiB.
AMD ha inoltre confrontato la larghezza di banda di AlltoAll in rocSHMEM su otto GPU MI350X con SDMA abilitato e disabilitato. Il test con SDMA abilitato usava una unità di calcolo e un wavefront; quello con SDMA disabilitato usava una unità di calcolo e 16 wavefront. La configurazione abilitata ha fornito una larghezza di banda nettamente superiore, secondo il post.
Dimensione dei messaggi e configurazione
In un benchmark separato di rocSHMEM putnbi tra due GPU MI350X, l’azienda afferma che una sola unità di calcolo ha raggiunto una larghezza di banda simile con SDMA attivo o disattivo a 128 KiB, anche se a quella dimensione più unità di calcolo con SDMA disattivato potevano raggiungere una larghezza di banda superiore. Per messaggi di almeno 512 KiB, l’SDMA abilitato ha fornito la larghezza di banda più alta tra le configurazioni testate.
L’implementazione attuale di rocSHMEM non usa SDMA per messaggi inferiori a 128 KiB. A 64 KiB, la configurazione con quattro wavefront ha superato quella con un solo wavefront sul percorso load/store, afferma il post.
Per usare la funzionalità, gli utenti devono scaricare RCCL o rocSHMEM da GitHub e compilare il codice sorgente. Il supporto di RCCL per il networking avviato dalla GPU richiede la registrazione della memoria simmetrica e cuMem, mentre il backend SDMA viene abilitato tramite una variabile d’ambiente.
Gli ingegneri di AMD hanno ripetuto gli esperimenti da cinque a sette volte e hanno riportato un solo insieme di risultati, poiché i risultati erano stabili tra un’esecuzione e l’altra. I risultati di RCCL si basavano su una versione di sviluppo della libreria con ROCm 7.0.2.2.0-16-9428210; i test di rocSHMEM usavano ROCm 10.1.0.
Fonte
Notizie correlate
- TurboPairFormer accelera fino a 1,73× l’addestramento di OpenFold3 nei test
- AMD aggiunge l’acceleratore MI450X e comunica i risultati di inferenza di MI455X
- AMD rende generalmente disponibili i processori EPYC di sesta generazione per server
- I ricavi Data Center di AMD balzano del 97% grazie alle vendite di Instinct ed EPYC
- NVIDIA aggiunge l’inventario dei carichi di lavoro IA al runtime della piattaforma GPU