AMReX: uma performance
LarLar > blog > AMReX: uma performance

AMReX: uma performance

Aug 25, 2023

Por Rob Farber

21 de agosto de 2023

Desempenho, portabilidade e ampla funcionalidade são características principais da estrutura de software AMReX, que foi desenvolvida por pesquisadores do Laboratório Nacional Lawrence Berkeley (Berkeley Lab), do Laboratório Nacional de Energia Renovável e do Laboratório Nacional Argonne como parte do Departamento de Energia dos EUA. (Faz)Projeto de computação Exascale(ECP) Centro de Co-Design AMReX.

O ECP AMReX Co-Design Center garante que esta estrutura de software popular e amplamente utilizada para aplicações de refinamento de malha adaptativa (AMR) massivamente paralelas e estruturadas em blocos possa ser executada com eficiência em supercomputadores DOE. Numerosas aplicações ECP utilizam AMReX para modelar uma ampla gama de aplicações diferentes, incluindo projeto de aceleradores, astrofísica, combustão, cosmologia, fluxo multifásico e energia eólica.

Para abordar uma gama tão ampla de fenômenos físicos, o software deve suportar uma ampla gama de requisitos algorítmicos. Conforme observado em “Uma pesquisa de implementações de software usadas por códigos de aplicativos no projeto de computação Exascale”, a AMReX alcança essa portabilidade de plataforma por meio de suas APIs. Outros centros de co-design de ECP, como o Center for Efficient Exascale Discretizations (CEED) e o Co-design Center for Particle Applications, também utilizam essa mesma abordagem para oferecer portabilidade de desempenho.

De CPUs a Arquiteturas Heterogêneas

AMReX foi originalmente baseado na estrutura BoxLib anterior, que foi usada para desenvolver aplicativos AMR. John Bell (Figura 2), investigador principal do AMReX Co-Design Center e cientista sênior da divisão de Matemática Aplicada e Pesquisa Computacional do Berkeley Lab, explicou: “O financiamento do ECP nos permitiu redesenhar completamente o BoxLib, que foi projetado para CPU- apenas sistemas, para criar AMReX, que fornece uma estrutura portátil de desempenho que suporta CPUs multicore e vários aceleradores de GPU diferentes. AMReX é atualmente usado por um conjunto diversificado de aplicações em muitos sistemas diferentes.”

Para os códigos de aplicativos que já eram baseados no BoxLib, a equipe AMReX documentou como migrar seus códigos do BoxLib para o AMReX. (Esta documentação está disponível no repositório AMReX em Docs/Migration)

Junto com a aceleração da GPU, Bell observou: “Um dos principais recursos de design do AMReX é que ele separa as estruturas de dados básicas e as operações principais nessas estruturas de dados dos algoritmos usados ​​por um aplicativo específico, proporcionando aos desenvolvedores muito mais flexibilidade em como resolver seus problemas.”

Introdução à tecnologia

Os cientistas usam AMR estruturado em blocos como um “microscópio numérico” para resolver sistemas de equações diferenciais parciais (PDEs). AMReX fornece uma estrutura para o desenvolvimento de algoritmos para resolver esses sistemas, visando máquinas que vão desde laptops até arquiteturas exaescale com e sem aceleração de GPU.

Os cientistas descrevem uma ampla gama de fenômenos físicos usando EDPs, que são relações entre derivadas de diferentes quantidades que descrevem o sistema. O vento que flui sobre uma cordilheira, a vibração de uma ponte durante um terremoto e a combustão dentro de uma supernova são todos descritos por EDPs. A resolução de PDEs permite que os cientistas obtenham insights sobre o comportamento de sistemas complexos. Contudo, na maioria dos casos, não existe uma solução matemática fácil para um sistema de EDPs.

Em vez disso, eles devem ser resolvidos usando um computador. Central para resolver EDPs em um computador é como o cientista representa o sistema. Uma abordagem comum é definir o estado do sistema em termos de seus valores em uma malha finita de pontos. Neste tipo de abordagem baseada em malha, quanto mais fina for a malha (ou seja, quanto mais pontos ela contém), melhor será a representação da solução. Os algoritmos AMR controlam dinamicamente o número e a localização dos pontos da malha para minimizar o custo computacional e, ao mesmo tempo, resolver o problema com precisão suficiente.

Conforme observado em “AMReX: Refinamento de malha adaptativa estruturada em bloco para aplicações multifísicas”, os algoritmos AMR estruturados em bloco utilizam uma representação hierárquica da solução em vários níveis de resolução (Figura 1). Em cada nível, a solução é definida na união de contêineres de dados naquela resolução, cada um dos quais representa a solução sobre uma sub-região logicamente retangular do domínio.