Cluster Coaraci

Cluster Computacional de Alto Desempenho - Coaraci

Introdução

O Cluster Coaraci foi adquirido através de recursos do projeto multiusuário da FAPESP - 2013/08293-7.

Responsável

  • Prof. Dr. Munir Salomão Skaf

Localização

Instituto de Física Gleb Wataghin (IFGW) - Centro de Computação John David Rogers (CCJDR) - Data Center

Publicações

É imperativo o agradecimento à FAPESP, incluindo os números dos processos, em todas as publicações cujos resultados tenham sido alcançados com o auxílio da Coaraci, ainda que apenas parcialmente. Favor incluir a seguinte frase nos Agradecimentos:

Agradecemos o uso do cluster Coaraci (Fapesp Proc. 2019/17874-0) e ao Center for Computing in Engineering and Sciences at Unicamp (Fapesp Proc. 2013/08293-7).

We thank the Coaraci Supercomputer for computer time (Fapesp grant #2019/17874-0) and the Center for Computing in Engineering and Sciences at Unicamp (Fapesp grant #2013/08293-7).

Headnode

1 (um) servidor Dell EMC PowerEdge R6525 configurado com:

  • 2 (dois) processadores AMD EPYC 7282;
  • 256GB de memória DDR4
  • 2 (dois) SSDs de 480GB em RAID1;
  • 2 (duas) portas Gigabit Ethernet;
  • 2 (duas) portas Mellanox InfiniBand ConnectX.

Login Node

1 (um) servidor Dell EMC PowerEdge R6525 configurado com:

  • 1 (um) processador AMD EPYC 7282;
  • 64GB de memória DDR4;
  • 2 (dois) SSDs de 480GB em RAID1;
  • 2 (duas) portas Gigabit Ethernet;
  • 2 (duas) portas Mellanox InfiniBand ConnectX.

Nós Computacionais

Tipo A) 256 (duzentos e cinquenta e seis) servidores Dell EMC PowerEdge C6525 configurados com:

  • 2 (dois) processadores AMD EPYC 7402;
  • 128GB de memória DDR4;
  • 1 (um) SSD M.2 de 480GB;
  • 1 (uma) porta Gigabit Ethernet;
  • 1 (uma) porta Mellanox InfiniBand ConnectX.

Tipo B) 14 (quatorze) servidores Dell EMC PowerEdge R7525 configurados com:

  • 2 (dois) processadores AMD EPYC 7402;
  • 128GB de memória DDR4;
  • 1 (um) SSD SATA de 480GB;
  • 3 (três) GPUs NVIDIA A30;
  • 2 (duas) portas Gigabit Ethernet;
  • 1 (uma) porta Mellanox InfiniBand ConnectX.

Tipo C) 1 (um) servidor Dell EMC PowerEdge R6525 configurado com:

  • 2 (dois) processadores AMD EPYC 7402;
  • 2TB de memória DDR4;
  • 4 (um) HDDs SATA de 12TB;
  • 2 (duas) portas Gigabit Ethernet;
  • 1 (uma) porta Mellanox InfiniBand ConnectX.

Tipo D) 1 (um) servidor Dell EMC PowerEdge R7525 configurado com:

  • 1 (um) processador AMD EPYC 7282;
  • 64GB de memória DDR4;
  • 2 (dois) SSDs SATA de 480GB em RAID1;
  • 1 (uma) GPU NVIDIA Tesla T4;
  • 4 (quatro) portas Gigabit Ethernet;

Storage

2 (dois) servidores Dell EMC PowerEdge R7525 configurados com:

  • 2 (dois) processadores AMD EPYC 7402;
  • 256GB de memória DDR4;
  • 2 (dois) SSDs de 480GB em RAID1;
  • 4 (quatro) portas Gigabit Ethernet;
  • 2 (duas) portas Mellanox InfiniBand ConnectX.

1 (um) Dell EMC PowerVault ME5084 configurado com:

  • 80 (oitenta) HDDs NLSAS de 16TB;
  • 4 (quatro) SSDs SAS de 3.84TB.

Usuários externos ao CEPID CCES: para submissão de projetos clique aqui

Usuários que fazem parte do CEPID CCES: para solicitar acesso ao cluster, clique aqui

Para solicitar Suporte Técnico, clique aqui

Login

O acesso ao cluster será realizado através de um servidor de entrada chamado gate.ifi.unicamp.br que é nossa porta de entrada pra rede interna do IFGW. Este acesso é feito através de uma conexão SSH (Secure Shell). Estabelecendo esta conexão o próximo passo é uma nova conexão para o Cluster Coaraci.

Em um terminal digite:

ssh Este endereço para e-mail está protegido contra spambots. Você precisa habilitar o JavaScript para visualizá-lo.

Com a conexão estabelecida com o servidor gate.ifi.unicamp.br execute:

ssh Este endereço para e-mail está protegido contra spambots. Você precisa habilitar o JavaScript para visualizá-lo.

A partir do nó principal os jobs poderão ser enviados através do sistema de filas. As instruções de utilização podem ser consultadas em Submetendo e Gerenciando Jobs.

Dúvidas ou suporte no acesso

Em caso de dúvidas, dificuldades ou problemas, entre em contato com a equipe técnica através do formulário de contato.

Arquivos e Armazenamento

O diretório padrão do usuário é construído da seguinte forma:

/home/users/<usuário>/

Ex: /home/users/hpc_user/

Esta área possui 931 TB de espaço disponível que são compartilhados entre todos os usuários. Os usuários não devem ultrapassar o limite de 5TB

Há uma outra área de trabalho destinada ao armazenamento temporário de dados, que está disponível em ‘/scratch/local/’.

O /scratch/local/’ é uma área de trabalho com 480GB de espaço disponível nos nós computacionais. Esta área está disponível em cada nó, portanto ele só é acessível no próprio nó. O principal benefício do uso desse scratch é o desempenho já que o mesmo se localiza no próprio nó.

AVISO: arquivos importantes devem ser movidos para o diretório ‘/home/’ que possui um nível maior de segurança. Os usuários são responsáveis pelos seus arquivos no /home/, não fazemos backup desses dados.

Exemplo de submissão de jobs

  • A primeira linha informa ao SLURM que o Shell escolhido pelo usuário para rodar o job é o Bash (“/bin/bash”);
  • A segunda linha indica o número de núcleos para este job
  • A terceira linha indica o nome do seu job
  • A variável $SLURM_SUBMIT_DIR tem por valor padrão o diretório onde o job foi submetido. Logo após seguem os comandos para a execução do job propriamente dito;
  • Variáveis de ambiente necessárias à execução do job devem ser declaradas/exportadas antes do job.

Exemplo da submissão de um batch job:

[hpc@coaraci ~]$ sbatch script.slurm

Exemplo de submissão pra fila par48-i ou par48-x

### INFORME A QTDE DE CORES POR NODE QUE VOCE PRECISA NO -n
#SBATCH -n 20
#SBATCH --job-name nome_do_job

### NESTA FILA É PERMITIDO APENAS 1 node
#SBATCH --nodes 1

### ALTERAR A FILA DE ACORDO COM O SEU PERFIL (par48-x ou par48-i)
#SBATCH --partition par48-?
#SBATCH -o par48out.txt
#SBATCH -e par48err.txt

### Abaixo o exemplo de envio de emails
#SBATCH --mail-user=Este endereço para e-mail está protegido contra spambots. Você precisa habilitar o JavaScript para visualizá-lo.
#SBATCH --mail-type=ALL
cd $SLURM_SUBMIT_DIR

#### Prepare o ambiente com os devidos módulos #########
# hwloc faz parte das variáveis de ambiente gerais do cluster
module load hwloc
module load gnu12
module load openmpi4

#### Exporte as variaveis relevantes para o job ########
export OMP_NUM_THREADS=1

#### Execução do job ####
mpirun -np $SLURM_NTASKS prime 200000 > teste.out

Exemplo de submissão pra fila par480-i ou par480-x

#!/bin/bash

# INFORME A QTDE DE CORES POR NODE QUE VOCE PRECISA NO -n
#SBATCH -n 48
#SBATCH --job-name nome_do_job

### NESTA FILA SÃO PERMITIDOS DE 2 À 10 NODES
#SBATCH --nodes 10

### ALTERAR A FILA DE ACORDO COM O SEU PERFIL (par480-x ou par480-i)
#SBATCH --partition par480-?
#SBATCH -o par480out.txt
#SBATCH -e par480err.txt

### Abaixo o exemplo de envio de emails
#SBATCH --mail-user=Este endereço para e-mail está protegido contra spambots. Você precisa habilitar o JavaScript para visualizá-lo.
#SBATCH --mail-type=ALL

cd $SLURM_SUBMIT_DIR

#### Prepare o ambiente com os devidos módulos #########
# hwloc faz parte das variáveis de ambiente gerais do cluster
module load hwloc
module load gnu12
module load openmpi4

#### Exporte as variaveis relevantes para o job ########
export OMP_NUM_THREADS=1

#### Execução do job ####
mpirun -np $SLURM_NTASKS prime 200000 > teste.out

Exemplo de submissão pra fila gpu-i ou gpu-x

#!/bin/bash

### INFORME A QTDE DE CORES POR NODE QUE VOCE PRECISA NO -n
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=10
#SBATCH --job-name=gpu_stress
### alterar a fila de acordo com seu perfil (gpu-x ou gpu-i)
#SBATCH -p gpu-i
#SBATCH --time 2:00:00
#SBATCH --gpus 3
#SBATCH -o gpu_stress.o
#SBATCH -e gpu_stress.e

### Abaixo o exemplo de envio de emails
#SBATCH --mail-user=Este endereço para e-mail está protegido contra spambots. Você precisa habilitar o JavaScript para visualizá-lo.
#SBATCH --mail-type=ALL
# Intel oneAPI
module purge
module load cuda

# hwloc
module load hwloc

export I_MPI_DEBUG=5
export I_MPI_PIN=1
export I_MPI_PIN_DOMAIN=numa

# Fabrics control
module load ucx
export I_MPI_FABRICS=ofi
export FI_PROVIDER=mlx
export I_MPI_OFI_PROVIDER=${FI_PROVIDER}

# OpenMP
export OMP_NUM_THREADS=24
export MKL_NUM_THREADS=24

time srun ./gpu_burn -tc 1750

Exemplo – fila paralela

#!/bin/bash

### INFORME A QTDE DE CORES POR NODE QUE VOCE PRECISA NO -n
#SBATCH -n 48
#SBATCH --job-name=teste

### Nesta fila são permitidos o uso de 11 à 28 nodes
#SBATCH --nodes=20
#SBATCH --partition=paralela
#SBATCH -o out.txt
#SBATCH -e err.txt

### Abaixo o exemplo de envio de emails
#SBATCH --mail-user=Este endereço para e-mail está protegido contra spambots. Você precisa habilitar o JavaScript para visualizá-lo.
#SBATCH --mail-type=ALL
cd $SLURM_SUBMIT_DIR

#### Prepare o ambiente com os devidos módulos #########
# hwloc faz parte das variáveis de ambiente gerais do cluster
module load hwloc
module load gnu12
module load openmpi4

#### Exporte as variaveis relevantes para o job ########
export OMP_NUM_THREADS=48

#### Execução do job ####
mpirun -np $SLURM_NTASKS prime 200000 > teste.out

Exemplo – fila serial

#!/bin/bash

### INFORME A QTDE DE CORES POR NODE QUE VOCE PRECISA NO -n
#SBATCH -n 1
#SBATCH --job-name=teste

### Nesta fila são permitidos o uso de 1 node e 1 core
#SBATCH --nodes=1
#SBATCH --partition=serial
#SBATCH -o out.txt
#SBATCH -e err.txt

### Abaixo o exemplo de envio de emails
#SBATCH --mail-user=Este endereço para e-mail está protegido contra spambots. Você precisa habilitar o JavaScript para visualizá-lo.
#SBATCH --mail-type=ALL
cd $SLURM_SUBMIT_DIR

#### Prepare o ambiente com os devidos módulos #########
# hwloc faz parte das variáveis de ambiente gerais do cluster
module load hwloc
module load gnu12
module load openmpi4

#### Exporte as variaveis relevantes para o job ########
export OMP_NUM_THREADS=1

#### Execução do job ####
mpirun -np 1 prime > teste.out

Exemplo – fila teste

#!/bin/bash

### INFORME A QTDE DE CORES POR NODE QUE VOCE PRECISA NO -n
#SBATCH -n 48
#SBATCH --job-name=teste

### Nesta fila são permitidos o uso de 11 à 28 nodes
#SBATCH --nodes=2
#SBATCH --partition=teste
#SBATCH -o out.txt
#SBATCH -e err.txt

### Abaixo o exemplo de envio de emails
#SBATCH --mail-user=Este endereço para e-mail está protegido contra spambots. Você precisa habilitar o JavaScript para visualizá-lo.
#SBATCH --mail-type=ALL
cd $SLURM_SUBMIT_DIR

#### Prepare o ambiente com os devidos módulos #########
# hwloc faz parte das variáveis de ambiente gerais do cluster
module load hwloc
module load gnu12
module load openmpi4

#### Exporte as variaveis relevantes para o job ########
export OMP_NUM_THREADS=48

#### Execução do job ####
mpirun -np $SLURM_NTASKS prime > teste.out

Exemplo – Job interativo

É executado como um “batch job”, porém o terminal do usuário é conectado ao host de execução, similar a uma sessão de login. A partir daí o usuário envia as opções do script de job como comandos individuais, o que facilita ao usuário depurar um script com problemas

Para submeter um job interativo basta executar o comando abaixo:

[hpc@coaraci ~]$ srun -p par48-? -N1 -n48 --pty bash

Para encerrar o job interativo, basta sair do terminal com o comando “exit”.

Outras opções podem ser utilizadas no comando “srun”, referência completa (em inglês): [https://slurm.schedmd.com/srun.html].

Exemplo – Utilizando o /scratch

#!/bin/bash
### INFORME A QTDE DE CORES POR NODE QUE VOCE PRECISA NO -n
#SBATCH --nodes=1

## ntasks-per-node = quantidade de processos por node
#SBATCH --ntasks-per-node=16
##
## time = quantidade de tempo
#SBATCH --time=30:00:00
##
## Nome do job . Aparece na saida do comando 'squeue' .
## E recomendado, mas nao necesssario, que o nome do job
## seja o mesmo que o nome do arquivo de input
#SBATCH --job-name=Job_name
##
## Consulte https://slurm.schedmd.com/sbatch.html para mais informacoes sobre ## as diretivas acima.

echo -e "\n## Job iniciado em $(date +'%d-%m-%Y as %T') #####################\n"

## Variavel com o diretorio de scratch do job
## Consulte https://slurm.schedmd.com/sbatch.html#lbAH> para mais informacoes
## sobre as variaveis de ambiente do SLURM.
SCRATCH=/scratch/local
WRKDIR=$SCRATCH/$SLURM_JOB_ID


## O nome dos arquivos de input e output sao baseados no
## nome do job (linha "#SBATCH --jobname=XX" acima).
## Observe que nao e obrigatorio esta forma de nomear os arquivos.
INP=$SLURM_JOB_NAME".inp"
OUT=$SLURM_JOB_NAME".out"


## O diretorio onde o job sera executado sera apagado, por padrao, ao
## final do mesmo.
## Se desejar que nao seja apagado, substitua Y por N.
APAGA_SCRATCH=Y


## Informacoes do job impressos no arquivo de saida.
echo -e "\n## Jobs ativos de $USER: \n"
squeue -a --user=$USER
echo -e "\n## Node de execucao do job: $(hostname -s) \n"
echo -e "\n## Numero de tarefas para este job: $SLURM_NTASKS \n"

#########################################
##------- Inicio do trabalho ----- #
#########################################
## Configura o ambiente de execucao do software.
module load @SOFTWARE_MODULE@


## Informacoes sobre o ambiente de execucao impressos no arquivo de saida.
echo -e "\n ## Diretorio de submissao do job: $SLURM_SUBMIT_DIR \n"
echo -e "\n ## Diretorio de scratch do job: $WRKDIR \n"
echo -e "\n ## Arquivo de input: $INP \n"

## Cria o diretorio de scratch para o job.
mkdir -p $WRKDIR

## Transfere os inputs e arquivos necessarios para o diretorio de scratch
cd $SLURM_SUBMIT_DIR
cp $INP $WRKDIR/
cd $WRKDIR

## Execucao do software
mpirun ./mysoftware < $INP > $OUT

## Copia o diretorio de scratch para o diretorio original do job.
cp -r $WRKDIR/ $SLURM_SUBMIT_DIR/

## Apaga o diretorio de scratch do job.
if [ x"$APAGA_SCRATCH" = x"Y" ]; then
     rm -rf $WRKDIR
else
     echo -e "\nO diretorio \e[00;31m$WRKDIR\e[00m deve ser removido manualmente"
     echo -e "para evitar problemas para outros jobs e/ou usuarios. \n"
fi

echo -e "\n ## Job finalizado em $(date +'%d-%m-%Y as %T') ###################"

Nós de Processamento

Os nós desse cluster estão nomeados no formato “rXnXX”, onde rX corresponde ao rack que o nó se encontra e o nXX seu número. Ex: “r1n01”

O cluster Coaraci possui 4 (quatro) tipos de nós listados abaixo (ver Nós Computacionais):

Hostname Tipo de máquina

r1n[01-56],r2n[01-56],r3n[01-32],r4n[01-56],r5n[01-56]

A

r1gn[01-04],r2gn[01-03],r4gn[01-03],r5gn[01-04]

B

r2fat

C

vdi

D

Redes

Os nós estão conectados a 3 redes distintas que são relacionadas apenas para completude das informações:

  1. Gigabit Ethernet;
  2. IPMI;
  3. Infiniband.

A rede IPMI é utilizada pelos procedimentos administrativos do cluster via protocolo IPMI, enquanto as redes GbE e Infiniband são utilizadas para trocas de dados entre os nós e também mensagens MPI.

Politicas de uso

Obrigado por usar o Supercomputador Coaraci! Desejamos sucesso em sua pesquisa. É imperativo o agradecimento à FAPESP, incluindo os números dos processos, em todas as publicações cujos resultados tenham sido alcançados com o auxílio da Coaraci, ainda que apenas parcialmente. Favor incluir a seguinte frase nos Agradecimentos:

“Agradecemos o uso do cluster Coaraci (Fapesp Proc. 2019/17874-0) e ao Center for Computing in Engineering and Sciences at Unicamp (Fapesp Proc. 2013/08293-7).”

“We thank the Coaraci Supercomputer for computer time (Fapesp grant #2019/17874-0) and the Center for Computing in Engineering and Sciences at Unicamp (Fapesp grant #2013/08293-7).”

Para completo acesso as políticas de uso clique aqui

Filas disponíveis:

Usuários do CEPID / CCES

Filas

Cores

WallTime

Quantidade de nós

Máximo de Jobs

par48-i

1 node / 48 cores

72 hs

56

5

par480-i

10 nodes / 480 cores

48 hs

88

2

paralela

28 nodes / 1344 cores

72 hs

112

2

fat

1 node / 48 cores e 2TB RAM

72 hs

1

2

gpu-i

1 node / 3 gpus

168 hs

14

5

Exemplos de submissão de jobs para usuários CEPID / CCES clique aqui

Projetos Externos

Filas

Cores

WallTime

Quantidade de nós

Máximo de Jobs

par48-x

1 node / 48 cores

72 hs

56

5

par480-x

10 nodes / 480 cores

48 hs

88

2

gpu-x

1 node / 3 gpus

168 hs

14

3

Exemplos de submissão de jobs para usuários de Projetos Externos clique aqui

Para suporte técnico clique aqui

Softwares

O sistema tem um grande conjunto de softwares instalados de acordo com as necessidades dos usuários. Os softwares disponíveis em produção deste guia estão listados abaixo.

Todos os softwares, compiladores e bibliotecas pré-instalados no cluster estão disponíveis em ‘/opt/ohpc/pub/’ e ‘/opt/spack/share/spack/modules/linux-oracle8-x86_64’.

Compiladores

A família de compiladores CUDA, GNU e Intel e suas respectivas ferramentas, estão disponíveis nas seguintes versões:

CUDA

Versão 12.1
Module: ‘cuda/12.1-gcc-12.2.0-pig3lo5’

GNU

Versão 8.5.0.
Binários: ‘gcc’, ‘gfortran’ e ‘g++’
Versão 12.2.0
Binários: ‘gcc’, ‘gfortran’ e ‘g++’
Module: ‘gnu12/12.2.0’

Intel oneAPI

Versão 2023.1.0:
Module: ‘intel/2023.1.0’

Bibliotecas de Transferência de Mensagem

As bibliotecas MPI pré-instalados no cluster são as seguintes:

Intel MPI

Versão 2021.9.0 compilada com Intel oneAPI 2023.1:
Module: ‘impi/2021.9.0’

OpenMPI

OpenMPI é uma biblioteca de troca de mensagens de código aberto implementada pela OpenMPI Project
Versão 4.1.4 compilada com GNU 12.2.0:
Module: ‘openmpi4/4.1.4’

MPICH

MPICH é outra biblioteca de troca de mensagens aberta existente:
Versão 3.4 compilada com GNU 12.2.0
Module: ‘mpich/3.4.3-ucx’

Bibliotecas Matemáticas

Estão pré-instalados no cluster as seguintes bibliotecas:

FFTW

Essa biblioteca são sub-rotinas para cálculo das transformadas rápida e discreta de Fourier,
além de transformadas discretas do seno e cosseno e transformadas de Hartley.
Versão 3.3.10 compilada com GNU 12.2.0:
Module: ‘fftw/3.3.10’

HDF5

Hierarchical Data Format nome para um conjunto de formatos de arquivos e bibliotecas criadas para organização e armazenamento de grandes quantidades de dados numéricos.
Versão 1.10.8 compilada com GNU 12.2.0:
Module: ‘hdf5/1.10.8’

Intel MKL

Versão 2023.1 compilada com Intel oneAPI 2023.1:
Module: ‘mkl/2023.1.0’

NetCDF

Network Common Data Form (netCDF) é um conjunto de bibliotecas de softwares criadas para melhor organização de dados científicos.
Versão 4.9.0 compilada com GNU 12.2.0:
Module: ‘netcdf/4.9.0’

OpenBLAS

O BLAS (Basic Linear Algebra Subprograms) são rotinas que fornecem blocos de construção padrão para a realização de operações básicas vetoriais e matriciais.
Versão 0.3.21 compilada com GNU 12.2.0:
Module: ‘openblas/0.3.21’

PnetCDF

PnetCDF é uma bilbioteca de E/S (entrada/saída) paralelo de alta desempenho para acessar arquivos compatíveis com NetCDF.
Versão 1.12.3 compilada com GNU 12.2.0:
Module: ‘pnetcdf/1.12.3’

ScaLAPACK

O Scalable LAPACK é uma biblioteca de rotinas de alto desempenho para álgebra linear baseada no LAPACK. Versão 2.2.0 compilada com GNU 12.2.0:
Module: ‘scalapack/2.2.0’

Submetendo e Gerenciando Jobs

O cluster Coaraci conta com o sistema de filas instalado para submeter e administrar jobs via scripts.

Para que os recursos computacionais sejam divididos de maneira razoável entre todos os usuários, é necessária uma forma de organizar e priorizar as requisições de uso, comumente chamadas de “jobs”. Para isso, o cluster conta com o sistema de filas SLURM para gerenciar os jobs que serão executados, respeitando as políticas estabelecidas. O SLURM trabalha com o conceito de filas, que são estruturas para classificar e agrupar os jobs e nós computacionais sob critérios como: número de processadores requisitados, quantidade de nós, quantidade de memória RAM, tempo de processamento e assim por diante. Na configuração atual, estão configuradas partições com ordem de prioridade e em que apenas alguns grupos de usuários têm acesso a algumas delas (na seção Filas temos mais detalhes).

É possível exibir as filas do sistema e os seus status com o comando:

[hpc@coaraci ~]$ sinfo -a

O acesso via SSH aos nós é controlado pelo sistema de filas, ou seja, usuários comuns só serão permitidos acessar os nós se houver(em) job(s) em execução nestes nós.

Diretivas e Variáveis do Job

Dentro dos jobs existem algumas instruções que são dedicadas ao SLURM, entre outras coisas para instruí-lo onde, como e por quanto tempo rodar. Essas instruções são chamadas diretivas, e estão nas linhas que se iniciam com: “#SBATCH”. O SLURM irá considerar todas as diretivas até que encontre uma linha executável, depois deste ponto, será ignorada qualquer outra diretiva.

Diretivas comuns são:

#SBATCH –job-name=<nome> → Nome do job
#SBATCH –ntasks=<número> → Número total de núcleos
#SBATCH –time=<dias-hh:mm:ss> → Tempo de execução (dias-hh:mm:ss)
#SBATCH –partition=<fila> → Fila onde o job será alocado

Além disso, quando o job é submetido, o SLURM coloca à disposição do job algumas variáveis de ambiente que tem o intuito de facilitar algumas operações. Algumas delas, por exemplo são:

$SLURM_JOB_NODELIST → esta variável contém a lista de nós e núcleos que foram alocadas ao job, é útil, por exemplo para ser usada como parâmetro para o “mpirun”:

mpirun -machinefile $SLURM_JOB_NODELIST ./meuprograma

$SLURM_SUBMIT_DIR → esta variável aponta para o diretório de onde o script foi submetido.

$SLURM_JOB_NAME → contém o nome especificado na diretiva “#SBATCH –job-name=”

A lista completa de diretivas, opções e variáveis pode ser encontrada em (em Inglês): https://slurm.schedmd.com/sbatch.html#lbAH.

Filas

As filas são o que permitem um bom desempenho, distribuição e agendamento de uso de recursos. No Coaraci temos apenas as filas configuradas listadas abaixo:

Usuários CEPID/CCES

Filas

Cores

WallTime

Quantidade de nós

Máximo de Jobs

par48-i

1 node / 48 cores

72 hs

56

5

par480-1

10 nodes / 480 cores

48 hs

88

2

paralela

28 nodes / 1344 cores

72 hs

112

2

fat

1 node / 48 cores e 2TB de RAM

72 hs

1

2

gpu-i

1 node / 3 gpus

168 hs

15

5

teste

2 nodes 96 cores

30 min

2

1

serial

1 node 1 core

72 hs

5

48

Projetos Externos

Filas

Cores

WallTime

Quantidade de nós

Máximo de Jobs

par48-x

1 node / 48 cores

72 hs

56

5

par480-x

10 nodes / 480 cores

48 hs

88

2

gpu-i

1 nodes / 1 gpu

168 hs

14

3

teste

2 nodes 96 cores

30 min

2

1

serial

1 node 1 core

72 hs

5

48

Variáveis de Ambiente

Em ambientes de computação de alto desempenho é comum que haja diversos compiladores e bibliotecas diferentes para a mesma rotina. Por exemplo, para compilação de códigos Fortran e MPI, temos disponíveis “gfortran” e “mpifort”. Além dessa variação de softwares que desempenham a mesma função, também é comum “colecionar” diferentes versões de compiladores, bibliotecas e softwares. Com isso, surge a necessidade de selecionar quais arquivos queremos que o sistema operacional disponibilize para o uso, de acordo com a atividade que iremos desempenhar. No cluster Coaraci está disponível uma lista com todas as bibliotecas e compiladores presentes na máquina, basta o usuário selecionar quais ferramentas ele irá utilizar. Essa seleção é feita por sessão, ou seja, a cada job, as ferramentas devem ser selecionadas, e ao final do job, elas voltam ao valor padrão de “nenhuma seleção”. O comando utilizado para este gerenciamento é o “module” , ele pode listar, carregar, descarregar ou substituir uma ferramenta dentre as disponíveis.

Os módulos de variáveis de ambiente que você necessita podem ser carregados manualmente na linha de comando. Ainda assim, é mais conveniente incluir os módulos para serem carregados nos scripts de submissão que você utilizar (veja Submetendo e Administrando Jobs e alguns exemplos que seguem). Outra possibilidade é modificar o seu “.bash_profile” para carregar os módulos automaticamente no login (não esqueça de descarregar os módulos se há algum conflito com algum outro módulo que você precisa para um software específico).

Os módulos de variáveis atualmente disponíveis são:

[hpc@coaraci ~]$ module avail

A sintaxe do module é:

  • module av, avail– lista todos os módulos disponíveis;
  • module list – lista todos os módulos atualmente em uso;
  • module show <caminho_do_módulo> – mostra o conteúdo do arquivo do módulo;
  • module add, load <caminho_do_módulo> – carrega as configurações e prepara o ambiente de acordo com o módulo selecionado;
  • module rm, unload <caminho_do_módulo> – remove as configurações específicas deste módulo;
  • module purge – remove todos os módulos carregados ;
  • module help – exibe todos os subcomandos do module.

Referência completa (em inglês):
https://lmod.readthedocs.io/en/latest/010_user.html

Ex:

Cenário 1: Compilar um programa utilizando o GCC 12.2.0, para esta compilação o usuário deve carregar o módulo do compilador com o comando:

[hpc@coaraci ~]$ module add gnu12/12.2.0

Cenário 2: O usuário deseja remover todos os módulos já carregados:

[hpc@coaraci ~]$ module purge

Como posso instalar um software em minha área de trabalho no cluster?

Você pode instalar livremente softwares em sua área de trabalho. Caso necessite de alguma biblioteca ou dependência específica, abra um chamado para a equipe de HPC através do link:
http://os.ifi.unicamp.br/
É importante ressaltar que o usuário é responsável legalmente pelas licenças dos softwares que utiliza.

Como transferir arquivos entre os clusters e máquinas externas?

Para acessar externamente (fora da Unicamp) o cluster, faça da seguinte forma:

Utilizando Terminal Linux:

– Realize um túnel ssh através da Gate, abrindo um terminal e digitando: ssh Este endereço para e-mail está protegido contra spambots. Você precisa habilitar o JavaScript para visualizá-lo. -NL 50022:nomedocluster.ifi.unicamp.br:22
Digite sua senha (senha da gate).

A partir daí o terminal parecerá ficar travado com o cursor piscando. Isto é normal e significa que foi aberto o túnel. Deixe este terminal aberto (não faça logout) e abra um novo terminal.

Com o novo terminal aberto você deve digitar o seguinte comando para copiar arquivos do cluster para seu computador: (farei um exemplo prático copiando o arquivo “exemplo.dat” que está na sua área do cluster para o “/root” do seu computador)

scp -P 50022 nomedousuario@localhost:/home/nomedousuario/exemplo.dat /root
Digite sua senha do cluster.(se a senha estiver correta o arquivo será copiado).

Para copiar arquivos de sua máquina para o cluster, apenas inverta o comando, por exemplo:

scp -P 50022 /root/exemplo.dat nomedousuario@localhost:/home/nomedousuario
Digite sua senha (se a senha estiver correta o arquivo será copiado).

Para encerrarmos o acesso, volte no primeiro terminal (túnel) e encerre-o com um ctrl+c.

Utilizando Windows (Putty + Filezilla)

O Windows não possui acesso nativo através do protocolo SSH. Portanto deve-se baixar e instalar um aplicativo cliente SSH (Putty), bem como um cliente SCP ou SFTP, como por exemplo o WinSCP ou Filezilla. Abaixo mostramos os passos para a conexão com o cluster utilizando o Putty + Filezilla.

No Putty preencha os campos:
hostname: gate.ifi.unicamp.br
port: 22
connection type: SSH

Do lado esquerdo há uma árvore de opões chamado Category:
– Expanda a opção: Connection -> SSH -> TUNELL
– No campo Source Port digite: 50022
– Em destination digite: nomedocluster.ifi.unicamp.br:22
– Clique no botão ADD
– Marque a opção: Local

– Realize a conexão clicando no botão: OPEN
– Digite sua senha da Gate
Se tudo correu bem você estará conectado à Gate realizando um Túnel.

Depois de baixado e instalado, abra o Filezilla.

Preencha os campos:
host: sftp://localhost
username: seuusuario
password: suasenhadocluster
port: 50022

Clique no botão de conexão. A partir daí você estará conectado, bastando realizar as transferências de arquivo entre o cluster e sua máquina, ou vice versa.

Conectar no filezilla a partir do putty

  • Configuração no PuTTY:
    • Abra o PuTTY.
    • No campo Host Name (or IP address), insira o endereço do seu jump host (gate.ifi.unicamp.br). O port padrão para SSH é 22.
    • Vá até Connection > SSH > Tunnels.
    • Em Source port, coloque uma porta local para redirecionar (por exemplo, 8080). Esta será a porta pela qual você vai acessar o servidor coaraci.ifi.unicamp.br através do túnel SSH.
    • Em Destination, coloque o hostname e a porta do servidor final (no caso, coaraci..ifi.unicamp.br:22, que é o endereço de destino e a porta SSH).
    • Selecione a opção Local para indicar que este é um túnel local.
    • Clique em Add para adicionar o túnel.

  • Configuração do ProxyJump (via PuTTY):
    PuTTY não tem um campo direto para configurar o ProxyJump, mas o túnel SSH criado no passo anterior serve ao mesmo propósito. O PuTTY irá usar a primeira conexão SSH (gate.ifi.unicamp.br) para encaminhar o tráfego para a coaraci.

  • Salvar a Sessão:
    • Volte à tela inicial do PuTTY e, no campo Saved Sessions, digite um nome (ex: Gate Jump) e clique em Save para salvar a configuração.

  • Conectar via Jump Host:
    • Clique em Open para conectar-se ao gate.ifi.unicamp.br . Quando a conexão for bem-sucedida, você estará dentro da máquina gate.ifi.unicamp.br, e o túnel SSH estará pronto para redirecionar a comunicação para coaraci.

Passos para configurar o FileZilla:

  1. Abra o FileZilla.

  2. Vá para “Site Manager”:
    • No FileZilla, clique em Arquivo > Gerenciador de Sites.

  3. Configuração do novo site:
    • Host: localhost (como você configurou o túnel no PuTTY, vai acessar o servidor final localmente pela porta que você escolheu no PuTTY, por exemplo, 8080).
    • Protocolo: Selecione SFTP – SSH File Transfer Protocol.
    • Logon Type: Selecione Normal.
    • User: O usuário da máquina coaraci
    • Password: A senha do usuário ou a chave privada que você utiliza para autenticação no servidor coaraci.

  4. Configuração do túnel SSH no FileZilla:
    • O FileZilla vai se conectar a localhost:8080 (o endereço do túnel criado no PuTTY) e encaminhar o tráfego SSH para coaraci através da gate.

  5. Conectar ao servidor:
    • Clique em Conectar e o FileZilla irá acessar a coaraci usando o túnel SSH estabelecido com o jump host.