Ir para o conteúdo

HPE Apollo 2000

Projetos

Se você chegou a essa página devido a um projeto com alocação de recursos (por exemplo, SINCADA), comece pelo guia para projetos.

O Cluster Apollo possui 28 nós computacionais e oferece um total de 1072 cores físicos. Seus nós são equipados com processadores Intel Xeon Skylake 5120 2.2GHz (apl01-16) e Intel Xeon Gold 5320 2.20GHz (apl17-28).

Os 28 nós computacionais do Cluster Apollo são da família de servidores HPE ProLiant, sendo 16 do modelo XL170r e 12 do modelo XL220n. Atualmente, o número de cores disponíveis é de 2144 - com o HT[1] ativo nos nós de computação.

Características de cada servidor

Modelo # Cores (HT)[1] RAM OS Hosts
HPE Proliant XL170r 56 128 GB Rocky Linux 9.5 apl[01-16]
HPE Proliant XL220n 104 256 GB Rocky Linux 9.5 apl[17-28]

[1] A tecnologia Hyper-Threading (HT) está habilitada em todos os nós do cluster.

Características do cluster (consolidado)

# Nodes # Cores Total de ram Instalado em
16 896 1.5TB Abr-2019
12 624 3TB Jul-2023

O Cluster Apollo é gerenciado pelo Slurm v24.05.5.

Filesystem

O Cluster Apollo conta com um sistema de arquivos de alta performance Lustre, disponível em /scratch e /data e acessível pelos nós de computação. O "Home" dos usuários e a área de longo prazo dos projetos (/mnt/cl/prj/<sigla>) estão acessíveis no nó de login, no Open OnDemand e no Jupyter, e são fornecidos através de NFS.

Essas áreas de armazenamento devem ser utilizadas da seguinte forma:

Scratch: Estrutura montada a partir do diretório /scratch/users/<username>. Utilizado para armazenar os arquivos da execução de um job (entrada, intermediários, saída etc). Área temporária, com limpeza automática. Variável de ambiente $SCRATCH.

Data: Estrutura montada a partir do diretório /data. Também é Lustre, para dados de trabalho HPC que precisam ser lidos e escritos pelos nós de computação. Acesso sob demanda. Não é o arquivo permanente do projeto.

Scripts: Estrutura montada a partir do diretório /scripts/<username>. Área otimizada para scripts, códigos e ambientes Conda usados nos jobs. Variável de ambiente $SCRIPTS.

Home: Estrutura montada a partir do diretório /home/<username>. Arquivos pessoais e configurações. Variável de ambiente $HOME.

Projeto (NAS): Estrutura montada a partir do diretório /mnt/cl/prj/<sigla>. Área de longo prazo do projeto, em NAS via NFS. Acessível no nó de login, no Open OnDemand e no Jupyter; não está nos nós de computação.

Clique aqui para mais detalhes. O ciclo de cópia entre NAS e scratch está em Projetos.

Atenção

Os nós de computação não acessam $HOME nem /mnt/cl/prj/<sigla>. Copie o necessário para $SCRATCH (ou /data, se o job usar essa área) antes de submeter.

Slurm

Slurm é um sistema de gerenciamento de cluster e agendamento de tarefas de código aberto, tolerante a falhas e altamente escalonável para clusters Linux grandes e pequenos. Slurm não requer modificações no kernel para sua operação e é relativamente independente. Como gerenciador de carga de trabalho de cluster, o Slurm tem três funções principais:

  • alocar acesso exclusivo e/ou não exclusivo aos recursos (nós de computação) aos usuários por um determinado período de tempo para que possam realizar o trabalho.
  • oferecer uma estrutura para iniciar, executar e monitorar o trabalho (normalmente um trabalho paralelo) no conjunto de nós alocados.
  • gerenciar a fila de submissão, arbitrando conflitos entre os pedidos de recursos computacionais.

Partições disponíveis

O cluster Apollo é organizado em diferentes partições (subconjunto de máquinas) para atender a diferentes necessidades.

PARTITION TIMELIMIT NODES NODELIST MaxCPUPerUser
cpu_dev 30:00 25 apl[01-25] 832
cpu_small 12:00:00 25 apl[01-25] 832
cpu 2-00:00:00 25 apl[01-25] 624
cpu_medium 7-00:00:00 25 apl[01-25] 416
cpu_long 30-00:00:00 25 apl[01-25] 312
cpu_bpglsst_small 12:00:00 09 apl[17-25] 832
cpu_bpglsst 2-00:00:00 09 apl[17-25] 624
cpu_bpglsst_medium 7-00:00:00 09 apl[17-25] 416
cpu_bpglsst_long 30-00:00:00 09 apl[17-25] 312

Particularidade dos nós de processamento: apl26, apl27 e apl28

Os nós apl26, apl27 e apl28 possuem atualmente uso exclusivo para execução de Jupyter Notebooks e pipelines de outras plataformas do LIneA e por isso não estão disponíveis nas partitions padrão.

Partition para o BPG LSST

A partition cpu_bpglsst e suas derivadas possuem prioridade sobre as demais na fila de execução, porém com acesso a uma quantidade menor de nós.

Somente membros do BPG LSST poderão submeter jobs nas partitions cpu_bpglsst.

Atenção

Como parte do programa de contribuição in-kind BRA-LIN, o IDAC Brasil possui o compromisso de gerar redshifts fotométricos anualmente para o levantamento LSST, sempre na época que antecede as liberações oficiais dos dados. Nestes períodos, o Cluster Apollo será totalmente ocupado para este propósito por um tempo estimado de algumas horas, mas podendo se estender a alguns dias. Na ocasião, os usuários serão informados com antecência sobre a indisponibilidade do cluster por e-mail. Clique aqui para saber mais sobre a produção de medidas de redshift e o programa de contribuição in-kind BRA-LIN.

Anatomia de um Job

Um Job solicita recursos de computação e especifica os aplicativos a serem iniciados nesses recursos, juntamente com quaisquer dados/opções de entrada e diretivas de saída. O usuário envia a tarefa, geralmente na forma de um script de tarefa em lote, ao agendador em lote. O script de tarefa em lote é composto por quatro componentes principais:

  • O intérprete usado para executar o script
  • Diretivas “#” que transmitem opções de envio padrão.
  • A configuração de variáveis de ambiente e/ou script (se necessário)
  • Os aplicativos a serem executados junto com seus argumentos e opções de entrada.

Aqui está um exemplo de um script em lote que solicita 3 nós na partição "cpu" e inicia 36 tarefas do myApp nos 3 nós alocados:

#!/bin/bash
#SBATCH -N 3
#SBATCH -p cpu
#SBATCH --ntasks 36

srun myApp

Quando a tarefa estiver agendada para execução, o gerenciador de recursos executará o script da tarefa em lote no primeiro nó da alocação.

Especificando Recursos

O Slurm tem sua própria sintaxe para solicitar recursos de computação. Abaixo está uma tabela de resumo de alguns recursos solicitados com frequência e a sintaxe de Slurm para obtê-los. Para obter uma lista completa da sintaxe, execute o comando man sbatch.

Sintaxe Significado
#SBATCH -p partition Define a partição em que o job será executado
#SBATCH -J job_name Define o nome do Job
#SBATCH -n quantidade Define o número total de tarefas da CPU.
#SBATCH -N quantidade Define o número de nós de computação solicitados.

Comandos Básicos do Slurm

Para aprender sobre todas as opções disponíveis para cada comando, insira man enquanto estiver conectado ao ambiente do Cluster.

Comando Definição
sbatch Envia scripts de tarefas para a fila de execução
scancel Cancela um job
scontrol Usado para exibir o estado Slurm (várias opções disponíveis apenas para root)
sinfo Exibir estado de partições e nós
squeue Exibir estado dos jobs
salloc Envia um job para execução ou inicia um trabalho em tempo real

Ambiente de Execução

Para cada tipo de trabalho acima, o usuário tem a capacidade de definir o ambiente de execução. Isso inclui definições de variáveis de ambiente, bem como limites de shell (bash ulimit ou csh limit). sbatch e salloc fornecem a opção --export para transmitir variáveis de ambiente específicas para o ambiente de execução. E também tem a opção --propagate para transmitir limites específicos do shell ao ambiente de execução.

Variáveis de ​​ambiente

A primeira categoria de variáveis de ambiente são aquelas que o Slurm insere no ambiente de execução do trabalho. Eles transmitem ao script da tarefa e informações do aplicativo, como ID da tarefa (SLURM_JOB_ID) e ID da tarefa (SLURM_PROCID). Para obter a lista completa, consulte a seção "OUTPUT ENVIRONMENT VARIABLES" nas páginas sbatch, salloc e srun.

A próxima categoria de variáveis de ambiente são aquelas que o usuário pode definir em seu ambiente para transmitir opções padrão para cada trabalho enviado. Isso inclui opções como o limite do relógio de parede. Para obter a lista completa, consulte a seção "INPUT ENVIRONMENT VARIABLES" nas páginas sbatch, salloc e srun.

Mais Informações ?

Saiba como utilizar o Cluster Apollo em Como Utilizar.
Para maiores informações, entre em contato com o Service Desk.