Visão geral do cluster
A visão geral do cluster pode ser entendido pelos conceitos básicos de como funciona cada componente. Essa página se destina apenas introduzir os conceitos, que serão aprofundados em outras páginas.
Sumário
Fluxo de trabalho do HPC
O primeiro passo é entender como o cluster e executar programas em computadores de alto desempenho funciona.
O uso de HPC para realizar processamento paralelo e de alto desempenho consiste em:
Copiar o experimento para o HPC.
Acessar o nodo de acesso, representado na figura pelo quadrado azul.
Submeter o experimento para o gerenciador de trabalho do HPC, no caso o slurm. Representado na figura pelo retângulo verde.
O gerenciador de trabalho do HPC colocará o trabalho na fila e assim que tiver recursos disponíveis o gerenciador executará o job Representado na figura losango laranja.
A execução do seu experimento será feito em algum nodo de processamento computing node, o nodo escolhido será conforme as especificações do seu experimento. Os nodos de processamentos são representados pelo quadrado vermelhos.
Conceitos fundamentais
Os principais conceitos que precisam serem entendidos são:
Jobs
Quando submete um programa para executar em um computador de processamento chamamos de jobs. Um jobs pode ter os seguintes estados:
PENDING: está na fila para ser executado.
RUNNING: está sendo executado
Partições
sinfo
.Exemplo de sinfo
: Visualizando partições:
odair@c3hpc:~$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
1d up 1-00:00:00 9 idle node[2-7],proc[1-2],pti
7d up 7-00:00:00 2 alloc vti[1-2]
7d up 7-00:00:00 9 idle node[2-7],proc[1-2],pti
... ... ... ...
cpu up 7-00:00:00 9 idle node[2-7],proc[1-2],pti
cpu-long up 30-00:00:0 9 idle node[2-7],proc[1-2],pti
maratona-testing up 15:00 9 idle node[2-7],proc[1-2],pti
maratona up 1-00:00:00 9 idle node[2-7],proc[1-2],pti
odair@c3hpc:~$
Filas
squeue
Exemplo de squeue
odair@c3hpc:~$ squeue -l
Mon Sep 26 23:47:07 2022
JOBID PARTITION NAME USER STATE TIME TIME_LIMI NODES NODELIST(REASON)
12139 gpu exp2 odair RUNNING 3:01 7-00:00:00 1 pti
12142 gpu exp2 odair RUNNING 3:01 7-00:00:00 1 pti
12138 gpu exp2 odair RUNNING 3:04 7-00:00:00 1 pti
12150 maratona exp4 odair PENDING 0:00 1-00:00:00 1 (Resources)
12151 maratona exp4 odair PENDING 0:00 1-00:00:00 1 (Priority)
12149 maratona exp4 odair RUNNING 1:57 1-00:00:00 4 node[6-7],proc[1-2]
12148 maratona exp4 odair RUNNING 2:12 1-00:00:00 4 node[4-7]
12147 maratona exp4 odair RUNNING 2:15 1-00:00:00 3 node[3-5]
12144 maratona exp3 odair RUNNING 2:47 1-00:00:00 1 node3
12143 maratona exp3 odair RUNNING 2:50 1-00:00:00 1 node3
odair@c3hpc:~$
No exemplo mostra trabalhos que estão sendo executados e os que não estão, além do motivo para não estar em execução. O comando squeue -l
mostra de forma longa a saída.
Dica
.bashrc
ou .zshrc
:alias sq="squeue -u ${USER}"
Módulos
Em alguns casos algumas bibliotecas só funcionam em versões especifica do python
ou do cuda
. Para o exemplo veremos qual a versão padrão do python3 e mudara para versão 3.8.4.
Mostrando módulos
module avail
odair@c3hpc:~$ module avail
----------------------- /usr/local/Modules/modulefiles --------------
applications/bazel/0.11.1 libraries/gdrcopy/gcc-6.4.0
applications/cmake/3.11.0 libraries/gdrcopy/gcc-7.3.0
... ...
interpreters/python/3.6.8 libraries/openblas/0.2.20-gcc-6.4.0
interpreters/python/3.8.14 libraries/openblas/0.2.20-gcc-7.3.0
libraries/boost/1.66.0-gcc-6.4.0 libraries/openmpi/4.0.0-gcc-6.4.0
... ...
libraries/cuda/10.1 tools/nvtop/1.0.0-cuda9.0
libraries/cuda/11.0 use.own
Key:
loaded modulepath
odair@c3hpc:~$
Carregando módulos
module load <modulo>
<module>
é o nome do módulo a ser carregado.Exemplo carregando python3 versão 3.8.14
Para demostrar como funciona verificaremos a versão padrão do python3
e carregar a versão 3.8.14
testem@c3hpc:~$ python3 --version # verifica versão do login node
Python 3.9.2
testem@c3hpc:~$ srun python3 --version # verifica versão de um computer node
Python 3.9.2
testem@c3hpc:~$ module load interpreters/python/3.8.14 # carrega python3 versão 3.8.14
testem@c3hpc:~$ python3 --version # verifica versão do login node
Python 3.8.14
testem@c3hpc:~$ srun python3 --version # verifica versão de um computer node
Python 3.8.14
testem@c3hpc:~$
module load interpreters/python/3.8.14
python3
muda. Módulos são uteis principalmente quando se deseja utilizar diferentes versões de cuda e python.Descarregando módulo
module unload <modulo>
Onde modulo
é o nome do módulo.Requisitando módulos e softwares
Para requisitar módulos, novas versões de softwares ou até mesmo a instalação de novas aplicações envie e-mail para c3hpc@c3sl.ufpr.br.