AMD ha rilasciato AOMP 17.0-1 come la versione più recente di questo compilatore open source incentrato sulla fornitura del più recente supporto di offload OpenMP per i prodotti di accelerazione Radeon e Instinct.

AOMP è un insieme di patch trasportate sopra l’ultimo stato LLVM/Clang upstream. Gli ingegneri AMD continuano a lavorare sull’upstreaming dei loro vari miglioramenti a LLVM, mentre per coloro che desiderano il supporto migliore e all’avanguardia hanno AOMP per sfruttare le migliori capacità del dispositivo OpenMP in questo momento.

AOMP 17.0-1 si basa sullo stato dell’upstream LLVM/Clang all’inizio di questo mese ed è costruito con i sorgenti ROCm 5.4.4 di AMD. Notevole con questo aggiornamento è il passaggio al plug-in di nuova generazione per impostazione predefinita, che a sua volta dovrebbe produrre significativi miglioramenti delle prestazioni di OpenMP.


L’annuncio di rilascio menziona quanto segue modifiche per AOMP 17.0-1:

-Passa al plug-in nextgen come impostazione predefinita. Ciò ha mostrato significativi miglioramenti delle prestazioni. Per ripristinare il vecchio plugin imposta LIBOMPTARGET_NEXTGEN_PLUGINS=OFF.

-Passa da hostrpc a hostexec. hostexec è una significativa riscrittura di hostrpc. Il dispositivo hostexec_invoke è ora scritto in OpenMP per la portabilità su altre piattaforme. I nomi del wrapper (stub) per eseguire una funzione host sono stati modificati in hostexec() e hostexec_(). hostexec utilizza anche una variabile globale per trovare il buffer del payload di trasferimento invece degli argomenti impliciti del kernel AMD. Ciò supporterà la portabilità di hostexec, printf e fprintf su altre piattaforme. L’aggiornamento a questo dispositivo globale viene effettuato con servizi variabili globali nel plug-in di nuova generazione.

-Viene fornito un esempio sull’uso di hostexec per eseguire MPI_Send e MPI_Recv in una regione di destinazione. Questo esempio dimostra come i proprietari della libreria possono creare un file di intestazione supplementare per consentire l’esecuzione trasparente dell’host delle funzioni della libreria selezionata all’interno di una regione di destinazione OpenMP con la stessa interfaccia host. Ciò elimina la necessità di eventuali modifiche all’origine nel codice utente quando si desidera eseguire l’host da una regione di destinazione. Prima di hostexec, gli utenti dovevano in genere terminare la loro regione di destinazione, eseguire una funzione solo host, quindi avviare un’altra regione di destinazione. Questa funzione aumenta in modo significativo le capacità di calcolo per uso generale di OpenMP su piattaforme GPGPU.

-Il supporto del target OMPT è incompleto con il plug-in nextgen. Per utilizzare OMPT, imposta la variabile d’ambiente LIBOMPTARGET_NEXTGEN_PLUGINS=OFF.

-Imposta GPU_MAX_HW_QUEUES in gpurun

-Le aree critiche create tramite la direttiva critical sono ora più efficienti: rilassando la semantica dei blocchi e combinandolo con l’uso delle barriere di acquisizione e rilascio, possiamo limitare lo svuotamento delle cache della GPU a ogni volta che il blocco viene acquisito invece che a ogni controllo del blocco.

-Quando si integrano le funzioni chiamate dal kernel, sposta le allocazioni per i loro argomenti nel blocco di ingresso del kernel invece di lasciarle al punto di avvio.

-Rispetta la variabile di ambiente per forzare le esecuzioni sincrone della regione di destinazione. Disponibile tramite OMPX_FORCE_SYNC_REGIONS=1.

Download di AOMP 17.0-1 e ulteriori dettagli su GitHub inclusi i binari RHEL/Debian per completare i sorgenti.

Categories: IT Info