Progetto Exascale Computing: Pagoda aggiorna la programmazione PGAS con strutture dati scalabili e comunicazione aggressivamente asincrona
31 agosto 2023
31 agosto 2023 — Il progetto Pagoda ricerca e sviluppa software che i programmatori utilizzano per implementare applicazioni ad alte prestazioni utilizzando il modello Partitioned Global Address Space (PGAS). Il progetto è finanziato principalmente dall'Exascale Computing Project (ECP) e interagisce con progetti partner nell'industria, nel governo e nel mondo accademico. [1]
PGAS è un modello di programmazione che supporta uno spazio di indirizzi condiviso a livello globale per migliorare la produttività distinguendo tra accessi ai dati locali e remoti per fornire opportunità di ottimizzazione. Questa distinzione facilita l'accesso ai dati in un ambiente informatico distribuito ed eterogeneo, pur tenendo conto dei costi di comunicazione non uniformi. Per il programmatore, PGAS offre il meglio di entrambi i mondi in cui possono semplicemente allocare le proprie strutture dati in memoria e utilizzarle in modo trasparente su dispositivi CPU e GPU, oppure possono localizzare esplicitamente i dati vicino all'hardware di calcolo per evitare costosi trasferimenti di dati ( in termini di maggiore autonomia e consumo energetico) che limiterebbe prestazioni e scalabilità. Ciò rende PGAS un framework eccellente per molte applicazioni che necessitano di massimizzare le prestazioni e supportare la scalabilità su architetture parallele su larga scala come i supercomputer exascale DOE.
Il driver dell'applicazione
Molte applicazioni scientifiche implicano aggiornamenti asincroni a strutture di dati irregolari come mesh adattive, matrici sparse, tabelle hash, istogrammi, grafici e code di lavoro dinamiche.
A volte il programmatore conosce abbastanza la struttura dei dati per determinare il modo più efficiente per sfruttare la località della memoria. Il modello PGAS consente al programmatore di gestire esplicitamente il posizionamento di queste strutture dati per ottimizzare le prestazioni, ad esempio nella memoria di una GPU discreta. In alternativa, al programmatore potrebbe non interessare davvero. In questo caso, ciò che vogliono veramente è accedere ai dati e continuare con il calcolo. In questo scenario di accesso e procedura, il modello di memoria PGAS supporta naturalmente un comodo accesso ai dati.
Sfortunatamente, non tutti gli accessi alla memoria sono così facili da classificare. Il modello PGAS offre ai programmatori gli strumenti di cui hanno bisogno per affrontare complicati problemi di accesso ai dati in cui le prestazioni nell'accesso ai dati sono davvero importanti, ma il movimento dei dati è troppo complesso e irregolare per essere prevedibile.
Introduzione tecnica
La proliferazione dell'elaborazione eterogenea e la complessità associata delle offerte hardware di più fornitori introducono un'esplosione combinatoria nella diversità delle piattaforme. Dal punto di vista del programmatore, ogni data center e supercomputer può richiedere ottimizzazioni molto specifiche nel posizionamento dei dati per ottenere prestazioni elevate. Per assistere il programmatore nell'affrontare questa sfida di portabilità combinatoria, lo stack software Pagoda fornisce un livello di comunicazione portatile, GASNet, e i livelli di produttività UPC++ e Berkeley UPC (Figura 1).
GASNet-EX
GASNet-EX è un aggiornamento del codebase e del sistema di comunicazione GASNet-1 PGAS vecchio di 20 anni. Nell’ambito di questo aggiornamento, le interfacce GASNet sono state riprogettate per soddisfare le esigenze emergenti del supercalcolo exascala e supportare servizi di comunicazione per una varietà di modelli di programmazione PGAS sulle architetture HPC attuali e future. Questo sforzo include una revisione dell'implementazione insieme a questa importante riprogettazione delle interfacce software.
Gli obiettivi motivanti di questa riprogettazione, insieme alla compatibilità con le versioni precedenti per i client GASNet-1, includono:
La compatibilità è importante perché GASNet è stata adottata da numerosi progetti (Figura 2). La stretta corrispondenza semantica delle API GASNet-EX con i requisiti del cliente e le capacità hardware spesso produce prestazioni migliori rispetto alle librerie concorrenti grazie alla sua implementazione diretta sulle API native per le reti di interesse nell'HPC.
Paul Hargrove, ingegnere di sistema informatico 5 della divisione Applied Mathematics and Computational Research (AMCR) presso il Lawrence Berkeley National Laboratory (Berkeley Lab) e PI del progetto ECP Pagoda, ha osservato che le modifiche contrassegnate da "-EX" riguardano il modo in cui le applicazioni e l'HPC hanno cambiato negli ultimi 20 anni. Ad esempio, i tipi di memoria sono importanti per esprimere il modo in cui gli accessi alla memoria remota (RMA) ora includono get e put nella/dalla memoria della GPU.