Skip to main content

Lucas M. Schnorr
Associate Professor

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çãoT01T02T03T04
AEstudar/Avaliar rastreio MPIXX
BEstudar/Avaliar rastreio OpenMPXX
CEstudar/Avaliar rastreio CUDAXX
DMétodo de integração de rastrosXX
EAvaliação com benchmarksXXXX
FRelatóriosX

# 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.