Projeto de computação Exascale: Pagoda atualiza a programação PGAS com estruturas de dados escaláveis e comunicação agressivamente assíncrona
31 de agosto de 2023
31 de agosto de 2023 – O Projeto Pagoda pesquisa e desenvolve software que os programadores usam para implementar aplicativos de alto desempenho usando o modelo Partitioned Global Address Space (PGAS). O projeto é financiado principalmente pelo Exascale Computing Project (ECP) e interage com projetos parceiros na indústria, governo e academia. [1]
PGAS é um modelo de programação que suporta um espaço de endereço compartilhado globalmente para melhorar a produtividade e, ao mesmo tempo, distinguir entre acessos de dados locais e remotos para fornecer oportunidades de otimização. Essa distinção facilita o acesso a dados em um ambiente de computação heterogêneo distribuído, ao mesmo tempo em que adota a consciência dos custos de comunicação não uniformes. Para o programador, o PGAS oferece o melhor dos dois mundos, onde eles podem simplesmente alocar suas estruturas de dados na memória e usá-las de forma transparente em dispositivos de CPU e GPU, ou podem localizar explicitamente os dados próximos ao hardware computacional para evitar transferências de dados dispendiosas ( em termos de maior tempo de execução e consumo de energia) que limitariam o desempenho e a escalabilidade. Isso torna o PGAS uma excelente estrutura para muitas aplicações que precisam maximizar o desempenho e oferecer suporte à escalabilidade em arquiteturas paralelas de grande escala, como os supercomputadores exascale DOE.
O driver do aplicativo
Muitas aplicações científicas envolvem atualizações assíncronas de estruturas de dados irregulares, como malhas adaptativas, matrizes esparsas, tabelas hash, histogramas, gráficos e filas de trabalho dinâmicas.
Às vezes, o programador conhece o suficiente sobre a estrutura de dados para determinar a maneira mais eficiente de explorar a localidade da memória. O modelo PGAS permite ao programador gerenciar explicitamente o posicionamento dessas estruturas de dados para otimizar o desempenho, digamos, na memória de uma GPU discreta. Alternativamente, o programador pode não se importar realmente. Nesse caso, o que eles querem mesmo é acessar os dados e continuar com a computação. Neste cenário de acesso e prosseguimento, o modelo de memória PGAS suporta naturalmente o acesso conveniente aos dados.
Infelizmente, nem todos os acessos à memória são tão fáceis de categorizar. O modelo PGAS fornece aos programadores as ferramentas necessárias para resolver problemas complicados de acesso a dados onde o desempenho no acesso aos dados é realmente importante, mas o movimento de dados é demasiado complexo e irregular para ser previsível.
Introdução Técnica
A proliferação da computação heterogênea e a complexidade associada às ofertas de hardware de vários fornecedores introduzem uma explosão combinatória na diversidade de plataformas. Do ponto de vista do programador, cada datacenter e supercomputador pode exigir otimizações muito específicas no posicionamento de dados para alcançar alto desempenho. Para ajudar o programador a enfrentar esse desafio de portabilidade combinatória, a pilha de software Pagoda fornece uma camada de comunicação portátil, GASNet, e as camadas de produtividade UPC++ e Berkeley UPC (Figura 1).
GASNet-EX
GASNet-EX é uma atualização da base de código e sistema de comunicação GASNet-1 PGAS de 20 anos. Como parte desta atualização, as interfaces GASNet foram reprojetadas para acomodar as necessidades emergentes de supercomputação em exaescala e oferecer suporte a serviços de comunicação para uma variedade de modelos de programação PGAS em arquiteturas HPC atuais e futuras. Este esforço inclui uma revisão da implementação juntamente com uma grande reformulação das interfaces de software.
Os objetivos motivadores deste redesenho, juntamente com a compatibilidade retroativa para clientes GASNet-1 incluem:
A compatibilidade é importante porque o GASNet foi adotado por vários projetos (Figura 2). A estreita correspondência semântica das APIs GASNet-EX com os requisitos do cliente e os recursos de hardware geralmente produz melhor desempenho do que as bibliotecas concorrentes devido à sua implementação direta nas APIs nativas para redes de interesse em HPC.
Paul Hargrove, engenheiro de sistemas de computação 5 na divisão de Matemática Aplicada e Pesquisa Computacional (AMCR) do Laboratório Nacional Lawrence Berkeley (Berkeley Lab) e PI do projeto ECP Pagoda observou que as mudanças indicadas por '-EX' abordam como os aplicativos e HPC foram mudou nos últimos 20 anos. Por exemplo, os tipos de memória são importantes para expressar como os acessos remotos à memória (RMA) agora incluem entradas e saídas de/para a memória da GPU.