1 pontos por GN⁺ 2 시간 전 | Ainda não há comentários. | Compartilhar no WhatsApp
  • O MareNostrum V da Universidade Politécnica da Catalunha, em Barcelona, é um dos 15 maiores supercomputadores do mundo, uma infraestrutura pública de pesquisa de €200 milhões que realiza computação distribuída em 8.000 nós
  • Não é um único computador de alto desempenho, mas um sistema distribuído em que milhares de computadores independentes estão conectados por uma topologia fat-tree InfiniBand NDR200, permitindo que qualquer nó se comunique com a mesma latência mínima
  • O envio de jobs é feito por meio do gerenciador de carga de trabalho SLURM, colocando tarefas na fila do agendador com scripts em lote que especificam solicitação de recursos, limite de tempo e orçamento do projeto
  • Como opera em um ambiente air-gapped sem acesso à internet externa, é preciso preparar com antecedência as bibliotecas e os datasets necessários, e às vezes a extração dos resultados vira mais gargalo do que a computação em si
  • É um recurso público oferecido gratuitamente a pesquisadores; instituições espanholas podem acessá-lo via RES, e em toda a Europa o acesso é possível pelos editais periódicos da EuroHPC Joint Undertaking

Arquitetura: a rede é o computador

  • O maior equívoco em HPC é achar que se está alugando um único computador superpoderoso, quando na prática a estrutura consiste em submeter trabalho de forma distribuída para milhares de computadores independentes
  • Para evitar, na computação distribuída, o problema de GPUs ficarem ociosas esperando transferência de dados, o MareNostrum V monta a malha InfiniBand NDR200 em uma topologia fat-tree
    • Em redes comuns, surgem gargalos de banda quando vários computadores compartilham o mesmo switch
    • A topologia fat-tree aumenta a largura de banda dos links conforme se sobe na hierarquia da rede, garantindo largura de banda non-blocking
    • Qualquer um dos 8.000 nós pode se comunicar com a mesma latência mínima

Configuração das partições de computação

  • Partição de uso geral (GPP): projetada para cargas de CPU altamente paralelas, com 6.408 nós equipados cada um com 112 núcleos Intel Sapphire Rapids, alcançando desempenho de pico combinado de 45.9 PFlops
  • Partição acelerada (ACC): projetada para usos específicos como treinamento de IA e dinâmica molecular, com 1.120 nós equipados cada um com 4 GPUs NVIDIA H100 SXM, com desempenho de pico de 260 PFlops
    • Considerando um preço de varejo de cerca de US$ 25.000 por H100, só o custo das GPUs ultrapassa US$ 110 milhões
  • Nós de login (Login Nodes): ponto inicial de entrada via SSH, destinados apenas a tarefas leves como mover arquivos, compilar código e enviar scripts de job; não são para computação

Infraestrutura quântica

  • O MareNostrum 5 integra física e logicamente o primeiro computador quântico da Espanha
    • Inclui um sistema quântico baseado em portas digitais e o recozedor quântico supercondutor MareNostrum-Ona
  • As unidades de processamento quântico (QPU) não substituem o supercomputador clássico; elas funcionam como aceleradores especializados
  • Ao descarregar em hardware quântico problemas de otimização ou simulações de química quântica difíceis até para GPUs H100, o sistema se torna uma potência de computação híbrida clássico-quântica em larga escala

Air gap, cotas e a realidade operacional de HPC

  • Air gap: é possível acessar por SSH de fora, mas os nós de computação não têm acesso à internet externa
    • Não é possível usar pip install, wget nem conectar a repositórios externos do HuggingFace
    • Tudo o que o script precisar deve ser baixado e compilado com antecedência e preparado no diretório de armazenamento
    • Os administradores fornecem a maior parte das bibliotecas e softwares por meio do sistema module
  • Movimentação de dados: entrada e saída de dados são feitas pelo nó de login com scp ou rsync
    • Como o cálculo em si pode ser muito rápido, o processo de extrair os resultados concluídos para a máquina local às vezes se torna o gargalo
  • Limites e cotas: cada projeto recebe um determinado orçamento de tempo de CPU, e há limites rígidos para a quantidade de jobs simultâneos ou em espera por usuário
    • É obrigatório definir um limite de wall-time rígido para todos os jobs
    • Se o tempo solicitado for excedido mesmo que por 1 segundo, o agendador encerra o processo imediatamente
  • Logging: depois do envio do job, não há saída ao vivo no terminal; todo stdout e stderr é redirecionado automaticamente para arquivos de log, como sim_12345.out e sim_12345.err
    • Após a conclusão ou falha do job, o resultado e a depuração são verificados analisando esses arquivos de texto
    • O status dos jobs enviados pode ser monitorado com squeue ou tail -f

Gerenciador de carga de trabalho SLURM

  • Depois da aprovação da alocação de pesquisa e do login por SSH, o que aparece é um prompt de terminal Linux completamente comum
  • Como milhares de pesquisadores usam o sistema ao mesmo tempo, executar scripts pesados diretamente no terminal pode derrubar o nó de login e render um e-mail de advertência dos administradores do sistema
  • SLURM (Simple Linux Utility for Resource Management): software open source de escalonamento de jobs; ao especificar em um script Bash o hardware necessário, o ambiente de software e o código a executar, ele coloca o job na fila, executa quando o hardware fica disponível e depois libera os nós
  • Principais diretivas #SBATCH:
    • --nodes: número de máquinas físicas necessárias
    • --ntasks: número total de processos MPI (tasks) a serem criados; o SLURM cuida da distribuição entre os nós
    • --time: limite rígido de tempo de relógio; se excedido, o job é encerrado imediatamente
    • --account: ID do projeto do qual será descontado o tempo de CPU
    • --qos: Quality of Service ou fila específica, por exemplo uma fila de debug que oferece acesso rápido, mas com limite curto de execução

Exemplo prático: orquestração de sweep com OpenFOAM

  • Para prever downforce aerodinâmico com um modelo substituto de ML, era necessário executar 50 simulações de CFD (dinâmica dos fluidos computacional) de alta fidelidade para 50 malhas 3D diferentes
  • Exemplo de script de job SLURM para um único caso CFD em OpenFOAM na partição de uso geral:
    • Recursos especificados com opções como --nodes=1, --ntasks=6, --time=00:30:00
    • Carregamento do ambiente com module load OpenFOAM/11-foss-2023a
    • Execução sequencial de surfaceFeatureExtract, blockMesh, decomposePar, snappyHexMesh, potentialFoam, simpleFoam e reconstructPar com srun --mpi=pmix
  • Em vez de enviar manualmente os 50 casos, foram usadas dependências (dependency) do SLURM para encadear cada job após o anterior
    • Com sbatch --dependency=afterany:$PREV_JOB_ID, os 50 jobs foram colocados na fila em poucos segundos
    • Até a manhã seguinte, as 50 avaliações aerodinâmicas já tinham sido processadas e registradas em log, prontas para conversão em tensores para o treinamento de ML

Limites da paralelização: a Lei de Amdahl

  • O motivo para solicitar apenas 6 tasks em uma simulação CFD, apesar de cada nó ter 112 núcleos, é a Lei de Amdahl
  • Todo programa tem uma fração serial que não pode ser paralelizada, e o ganho teórico de velocidade é rigidamente limitado por essa fração
    • Fórmula: S = 1 / ((1−p) + p/N), em que S é o ganho total de velocidade, p é a fração paralelizável e N é o número de núcleos do processador
    • Mesmo que apenas 5% do código seja serial, o ganho teórico máximo continua sendo de 20x, ainda que se usem todos os núcleos do MareNostrum V
  • Ao dividir tasks entre núcleos demais, aumenta o overhead de comunicação pela rede InfiniBand
    • Se o envio de condições de contorno entre núcleos consome mais tempo do que o cálculo real, adicionar hardware pode até piorar a velocidade
  • Em simulações de sistemas pequenos (N=100), o runtime aumenta depois de 16 threads; só em escalas grandes (N=10k+) o hardware fica totalmente produtivo
  • Escrever código para supercomputadores é um exercício de gerenciar a relação entre computação e comunicação

Como obter acesso

  • Apesar do custo do hardware, o acesso ao MareNostrum V é gratuito para pesquisadores, e o tempo de computação é tratado como um recurso científico financiado com recursos públicos
  • Pesquisadores vinculados a instituições espanholas podem se candidatar pela Rede Espanhola de Supercomputação (RES)
  • Pesquisadores de toda a Europa podem se candidatar pelos editais periódicos de acesso da EuroHPC Joint Undertaking
    • A modalidade Development Access foi criada para projetos de portabilidade de código ou benchmarking de modelos de ML, o que a torna mais acessível para cientistas de dados

Ainda não há comentários.

Ainda não há comentários.