AMReX: una performance
CasaCasa > Blog > AMReX: una performance

AMReX: una performance

Aug 25, 2023

Di Rob Farber

21 agosto 2023

Prestazioni, portabilità e ampia funzionalità sono tutte caratteristiche chiave del framework software AMReX, sviluppato dai ricercatori del Lawrence Berkeley National Laboratory (Berkeley Lab), del National Renewable Energy Laboratory e dell'Argonne National Laboratory come parte del Dipartimento dell'Energia degli Stati Uniti. (Fa)Progetto di calcolo Exascale(ECP) Centro di co-progettazione AMReX.

Il Centro di co-progettazione ECP AMReX garantisce che questo framework software popolare e ampiamente utilizzato per applicazioni AMR (Adaptive Mesh Refinement) massivamente parallele e strutturate a blocchi possa essere eseguito in modo efficiente sui supercomputer DOE. Numerose applicazioni ECP utilizzano AMReX per modellare un'ampia gamma di applicazioni diverse, tra cui la progettazione di acceleratori, l'astrofisica, la combustione, la cosmologia, il flusso multifase e l'energia eolica.

Per affrontare una gamma così ampia di fenomeni fisici, il software deve supportare un’ampia gamma di requisiti algoritmici. Come osservato in “A Survey of Software Implementations Used by Application Codes in the Exascale Computing Project”, AMReX raggiunge questa portabilità della piattaforma attraverso le sue API. Anche altri centri di co-progettazione ECP come il Center for Efficient Exascale Discretizations (CEED) e il Co-design Center for Particle Applications utilizzano questo stesso approccio per garantire la portabilità delle prestazioni.

Dalle CPU alle architetture eterogenee

AMReX era originariamente basato sul precedente framework BoxLib, utilizzato per sviluppare applicazioni AMR. John Bell (Figura 2), ricercatore principale dell'AMReX Co-Design Center e scienziato senior della divisione di matematica applicata e ricerca computazionale del Berkeley Lab, ha spiegato: "Il finanziamento ECP ci ha permesso di riprogettare completamente BoxLib, che è stato progettato per CPU- solo sistemi, per creare AMReX, che fornisce un framework portabile in termini di prestazioni che supporta sia CPU multicore che una serie di diversi acceleratori GPU. AMReX è attualmente utilizzato da una serie diversificata di applicazioni su molti sistemi diversi.”

Per i codici applicativi già basati su BoxLib, il team AMReX ha documentato come migrare i propri codici da BoxLib ad AMReX. (Questa documentazione è disponibile nel repository AMReX in Docs/Migration)

Insieme all'accelerazione GPU, Bell ha osservato: "Una delle caratteristiche chiave della progettazione di AMReX è che separa le strutture dati di base e le operazioni principali su tali strutture dagli algoritmi utilizzati da una particolare applicazione, fornendo agli sviluppatori molta più flessibilità su come risolvere i loro problemi”.

Introduzione alla tecnologia

Gli scienziati utilizzano l’AMR strutturato a blocchi come un “microscopio numerico” per risolvere sistemi di equazioni alle derivate parziali (PDE). AMReX fornisce un framework per lo sviluppo di algoritmi per risolvere questi sistemi, destinati a macchine che vanno dai laptop alle architetture exascale con e senza accelerazione GPU.

Gli scienziati descrivono un'ampia gamma di fenomeni fisici utilizzando le PDE, che sono relazioni tra derivate di quantità diverse che descrivono il sistema. Il vento che soffia su una catena montuosa, la vibrazione di un ponte durante un terremoto e la combustione all'interno di una supernova sono tutti descritti dalle PDE. La risoluzione delle PDE consente agli scienziati di acquisire informazioni sul comportamento dei sistemi complessi. Tuttavia, nella maggior parte dei casi, non esiste una soluzione matematica semplice per un sistema di PDE.

Invece, devono essere risolti utilizzando un computer. Fondamentale per risolvere le PDE su un computer è il modo in cui lo scienziato rappresenta il sistema. Un approccio comune è definire lo stato del sistema in termini di valori su una maglia finita di punti. In questo tipo di approccio basato sulla mesh, quanto più fine è la mesh (ovvero, quanti più punti contiene), tanto migliore è la rappresentazione della soluzione. Gli algoritmi AMR controllano dinamicamente il numero e la posizione dei punti di mesh per ridurre al minimo il costo computazionale risolvendo il problema con sufficiente precisione.

Come osservato in "AMReX: perfezionamento della mesh adattiva strutturato a blocchi per applicazioni multifisiche", gli algoritmi AMR strutturati a blocchi utilizzano una rappresentazione gerarchica della soluzione a più livelli di risoluzione (Figura 1). Ad ogni livello, la soluzione è definita sull'unione di contenitori di dati a quella risoluzione, ciascuno dei quali rappresenta la soluzione su una sottoregione logicamente rettangolare del dominio.