💻 Notas de Aula — Computação de Alto Desempenho (Aula 02)

Resumo

Duas partes: desempenho e arquitetura de MPI (continuação da Aula 01), e uma introdução a dados e aprendizado de máquina aplicados à astronomia.

Informações da aula

Tema: Duas partes — desempenho e arquitetura de MPI (continuação da Aula 01) e introdução a dados e aprendizado de máquina em astronomia. Professores: Prof. Dr. Fernando Roig (parte 1) e Prof.ª Dr.ª Lilianne Nakazono (parte 2)


🎯 Visão geral

Esta aula tem duas partes bem distintas. Na primeira, o Prof. Roig aprofunda o MPI apresentado na Aula 01 — indo do “como programar” para o “como isso se comporta na prática”: latência de comunicação, arquitetura cliente-servidor e onde o desempenho realmente se perde. Na segunda, a Prof.ª Lilianne Nakazono muda de assunto: como os dados chegam até nós em astronomia, e como o aprendizado de máquina processa esses dados para encontrar padrões — uma ponte direta entre HPC (que fornece a capacidade computacional) e ciência de dados (que a usa).

📑 Tópicos abordados

  1. Desempenho e latência em MPI
  2. Arquitetura cliente-servidor
  3. OpenMP vs. MPI: comparação direta
  4. Como os dados chegam em astronomia
  5. Aprendizado de máquina: tipos e fluxo de trabalho

Parte 1 — Desempenho e arquitetura em MPI

Latência e por que MPI é “mais difícil”

Em comparação com o OpenMP (Aula 01), programar em MPI é reconhecidamente mais trabalhoso: como cada processo tem seu próprio espaço de memória isolado, toda comunicação precisa ser explicitada pelo programador (quem envia, quem recebe, o quê, quando) — não existe o “atalho” implícito de ler/escrever uma variável compartilhada. Essa comunicação tem um custo real, a latência: o tempo entre o início do envio de uma mensagem e sua chegada ao destino, que não cai a zero mesmo para mensagens pequenas — existe sempre um custo fixo de “estabelecer a conversa” entre dois processos, antes mesmo de considerar o tempo de transmitir os dados em si.

Arquitetura cliente-servidor

Um padrão comum de organização de processos MPI é o modelo cliente-servidor: um processo (ou pequeno grupo) atua como coordenador — distribuindo trabalho, agregando resultados — enquanto os demais processos (“clientes”) executam tarefas e devolvem resultados ao coordenador. É uma alternativa ao modelo SPMD “simétrico” da Aula 01 (todos os processos rodando o mesmo código de forma equivalente), mais adequada quando o trabalho não se divide em partes de tamanho previsível — por exemplo, quando um processo central precisa distribuir dinamicamente blocos de tarefas conforme os clientes ficam livres.

OpenMP vs. MPI: tabela comparativa

CritérioOpenMPMPI
Unidade de execuçãoThreadProcesso
MemóriaCompartilhada (mesmo espaço de endereçamento)Distribuída (cada processo com memória própria)
ComunicaçãoImplícita (leitura/escrita de variáveis)Explícita (troca de mensagens)
Escopo típicoUm único nó (multi-core)Múltiplos nós (cluster inteiro)
Complexidade de programaçãoMenor — diretivas sobre código sequencial existenteMaior — é preciso projetar toda a comunicação
EscalabilidadeLimitada ao número de núcleos de um nóEscala para milhares de processos/nós

Na prática, os dois não são mutuamente exclusivos: é comum combinar MPI entre nós (memória distribuída) com OpenMP dentro de cada nó (memória compartilhada) — o chamado modelo híbrido MPI+OpenMP, que aproveita o melhor dos dois paradigmas em clusters modernos com nós multi-core.


Parte 2 — Dados e aprendizado de máquina em astronomia

Como os dados chegam em astronomia

Fundamentalmente, um telescópio mede quatro coisas sobre a luz que chega: quanta luz (fluxo), de onde (posição), quando e em que contexto (comprimento de onda, polarização). Instrumentos diferentes observam em diferentes comprimentos de onda e resoluções, o que diversifica enormemente os formatos de dado disponíveis:

  • Imagens brutas — dados em 2D (posição no céu).
  • Espectroscopia — decompõe a luz por comprimento de onda (usada extensivamente em Arqueologia Galáctica, ver GALAH/APOGEE).
  • Fotometria e curvas de luz — brilho medido ao longo do tempo.
  • Cubos de dados — combinações 2D (espaço) + 1D (comprimento de onda ou tempo), comuns em espectroscopia de campo integral.

Esses dados são organizados em catálogos (surveys) — como o GCNS e o GALAH DR4 já usados na minha própria pesquisa (ver Apresentação de Pesquisa). Vale notar que nem todo dado vem de observação direta: simulações numéricas (ver Aula 01) e até textos da literatura científica também são fontes de dado tratáveis computacionalmente.

Aprendizado de máquina: os três tipos

Aprendizado de máquina é, em essência, um algoritmo que ajusta seus próprios parâmetros a partir de dados de treino (e valida esse ajuste em dados de validação) para atingir um objetivo específico. Existem três grandes categorias:

TipoComo aprendeExemplo de uso
SupervisionadoA partir de exemplos já rotulados/classificadosClassificação e regressão (ex.: prever [Fe/H] de uma estrela a partir do espectro)
Não supervisionadoEncontra estrutura nos dados sem rótulosAgrupamento por características em comum (ex.: o próprio t-SNE usado na minha pesquisa)
Por reforçoAprende por tentativa, recompensa e erroOtimização de estratégias/políticas a partir de um objetivo já definido

Conexão direta com a minha pesquisa

O algoritmo t-SNE usado no meu trabalho (ver Apresentação de Pesquisa) é um exemplo direto de aprendizado não supervisionado: ele encontra agrupamentos no espectro estelar sem que eu tenha rotulado previamente nenhuma estrela — os rótulos físicos (Teff, log g, [Fe/H]) só entram depois, como validação.

Fluxo de trabalho de aprendizado de máquina

O processo típico segue uma sequência bem definida:

Isto é: primeiro os dados brutos são reduzidos a atributos (as variáveis relevantes que o modelo de fato vai usar — ex.: o fluxo espectral normalizado, no caso do t-SNE), depois um modelo é escolhido e treinado sobre esses atributos, avaliado por alguma métrica de qualidade (ver as métricas de confiabilidade discutidas na minha pesquisa) e, só então, usado para predizer sobre dados novos.


📌 Conceitos-chave

  • Latência (MPI): custo de tempo fixo para estabelecer comunicação entre processos, independente do tamanho da mensagem.
  • Arquitetura cliente-servidor: um processo coordenador distribui trabalho e agrega resultados de processos “clientes”.
  • MPI+OpenMP híbrido: combina memória distribuída entre nós (MPI) com memória compartilhada dentro de cada nó (OpenMP).
  • Catálogo (survey): conjunto organizado de dados observacionais ou simulados de múltiplos objetos astronômicos.
  • Aprendizado supervisionado / não supervisionado / por reforço: as três grandes famílias de aprendizado de máquina, diferenciadas pelo tipo de sinal de treino disponível.
  • Fluxo de ML: Dados → Atributos → Modelo → Treino → Avaliação → Predição.

❓ Perguntas e discussões da aula

Perguntas (Aula 2)

(nenhuma pergunta registrada ainda)


🔗 Referências e correlatos