Bolsa de Iniciação Científica 2024/2025
Table of Contents
#
Rastreamento de Aplicações Paralelas
Evoluções recentes entre as máquinas mais rápidas do mundo (https://top500.org) confirmam a tendência de nível massivo de paralelismo e heterogeneidade de hardware. Por exemplo, o supercomputador Leonardo (https://www.top500.org/system/180128/) é composto por 3456 nós com 1 CPU Intel Xeon com 32 núcleos e 4 GPUs NVidia Ampere e 1536 nós com 2 Intel Sapphire CPUs Rapids com 56 núcleos. O supercomputador Summit (https://www.top500.org/system/179397/) é composto por 4608 nós consistindo em 2 CPUs IBM POWER9 com 22 núcleos e 6 GPUs Nvidia Tesla. No Brasil, o supercomputador Pégaso possui mais de 250 nós computacionais, cada um equipado com 2 processadores AMD EPYC 7513 e 8 aceleradoras NVIDIA A100 80GB. Infelizmente, o nível de complexidade observado nestas máquinas atinge, assim como seu desempenho, uma escala sem precedentes. Um desafio em particular é o rastreamento do comportamento de aplicações paralelas que se executam sobre esses tipos de plataformas heterogêneas. Um rastro consiste no registro de uma série de eventos que representam o comportamento da aplicação paralela. O problema é que em geral a aplicação híbrida, envolvendo MPI+CUDA ou MPI+OpenMP, possui diferentes informações independentes que devem ser rastreadas dependendo da mecanismo de programação (MPI, CUDA ou OpenMP). O problema é integrar o rastreio dessas informações coletadas de maneira independente para que se possa conduzir uma análise de desempenho satisfatória empregando métricas de eficiência cite:hill2008amdahl. Essa proposta de trabalho foca em aplicações paralelas que fazem uso de múltiplas aceleradoras GPU em vários nós computacionais.
Objetivos: O objetivo envolve coletar dados de rastreamento do comportamento de aplicações paralelas quando estas (1) fazem uso de aceleradoras GPU e quando estas (2) fazem uso de múltiplos nós computacionais. Em seguida, (3) integrar os rastros de execução de maneira a permitir uma análise de desempenho unificada.
#
Descrição das atividades a serem executadas pela bolsista
O método de trabalho é por experimentos computacionais. Na fase de projeto experimental, o bolsista deve instrumentar manualmente o código da aplicação paralela, em pontos significativos, de maneira a permitir capturar a duração das regiões de código mais relevantes. As sondas podem também ser inseridas por intermédio de rastreadores já existentes tais como ScoreP/akypuera para MPI, plugins OMPT para OpenMP e da biblioteca CUDA para aceleradoras GPU. Ao executar a aplicação medida na plataforma paralela, estas sondas gerarão eventos que serão registrados em arquivos. Os arquivos são então tratados utilizando ferramentas modernas de ciência de dados para a obtenção de um registro unificado do comportamento da aplicação paralela.
Atividades do bolsista: O bolsista deve realizar experimentos computacionais em um cluster de computadores acessados de maneira remota por SSH. O rastreamento de aplicações paralelas é a peça inicial que permite a coleta de conhecimento necessário para análise de desempenho. Esta atividade envolve A/ estudar e avaliar experimentalmente rastreadores focados em MPI (ScoreP e akypuera); B/ estudar e avaliar experimentalmente rastreadores focados em OpenMP que fazem uso da API OMPT; C/ estudar e avaliar experimentalmente rastreadores focados em CUDA, a partir das ferramentas da NVIDIA; D/ propor um método baseado em ciência de dados na Linguagem de Programação R com o pacote tidyversepara integrar os dados oriundos desses três tipos de rastreadores para aplicações paralelas que empregam diferentes combinações de API de programação paralela; E/ avaliar as melhorias propostas em estudos de caso sintéticos e reais com o emprego de benchmarks e aplicações paralelas. Pretende-se que esta atividade seja feita em plataformas multi-core com aceleradores do Parque Computacional de Alto Desempenho (PCAD). F/ O bolsista deve também escrever relatórios dos experimentos com resultados.
Ambiente de desenvolvimento: É realizado em ambiente Linux, tanto no computador do bolsista quando nos servidores do Parque Computacional de Alto Desempenho (PCAD) do Instituto de Informática. A programação se dá nas linguagens C, Shell (bash) e R. Os experimentos serão conduzidos no PCAD com scripts SLURM escritos em bash. A gestão do projeto se dá através de OrgMode e GIT. Os relatórios, apresentações e artigos serão escritos em OrgMode e Latex. O local é a Sala 205 do Prédio 43413 do Instituto de Informática. O horário diurno é a combinar.
#
Cronograma de atividades da bolsista
A Tabela abaixo detalha as atividades mapeadas ao longo de um ano, por trimestre. Os códigos das atividades foram apresentados na seção da metodologia.
Ativ. | Descrição | T01 | T02 | T03 | T04 |
---|---|---|---|---|---|
A | Estudar/Avaliar rastreio MPI | X | X | ||
B | Estudar/Avaliar rastreio OpenMP | X | X | ||
C | Estudar/Avaliar rastreio CUDA | X | X | ||
D | Método de integração de rastros | X | X | ||
E | Avaliação com benchmarks | X | X | X | X |
F | Relatórios | X |
#
Resultados esperados
Espera-se que com a realização das atividades nós possamos obter um método rigoroso de integração de dados de rastreamento de múltiplas origens, permitindo uma análise de desempenho de aplicações paralelas de maneira integrada.