Portal institucional do Cluster HPC

Guias de acesso, políticas de filas, perfis de JupyterHub, execução em lote com SLURM, MPI e uso de software científico no cluster do LMC².

23 nós de computação na partição poligono
1 nó host na partição poseidon
8 CPU e até 28G seguros por nó em jobs single-node
80 / 20 prioridade por fairshare entre internos e externos

Status do Cluster

Operacional

Partição poligono

Partição principal para jobs interativos, batch, MPI e perfis do JupyterHub.

Operacional

Partição poseidon

Nó host disponível para uso controlado via QoS host.

Política ativa

JupyterHub

Notebooks executam em 1 nó. Para múltiplos nós, utilize Dask ou jobs batch via SLURM.

Política ativa

Fairshare

Mesmo acesso técnico para internos e externos, com prioridade de uso definida por fairshare institucional.

Infraestrutura do Cluster

Visão geral

O cluster é voltado para simulações computacionais e totaliza 104 núcleos reais de processamento, 208 threads e aproximadamente 800 GB de memória RAM distribuídos na infraestrutura. O ambiente é composto por 24 máquinas: 1 servidor e 23 nós de cálculo baseados em processadores Intel i7.

Capacidade agregada

Resumo de hardware

  • 24 máquinas no total
  • 1 servidor de controle e serviços
  • 23 nós dedicados a cálculos
  • 104 núcleos reais e 208 threads
  • ~800 GB de RAM no cluster
Topologia

Organização lógica

  • poligono: partição principal para jobs e notebooks
  • poseidon: partição do nó host para uso controlado
  • Ambiente multiusuário com SLURM, JupyterHub e acesso remoto
  • Suporte a execução interativa, batch, MPI e Dask

Servidor Intel Xeon

Componente Especificação
Processadores2 × Intel Xeon Hexacore BX80621E52620 2.0 GHz
Núcleos reais no servidor12
Placa-mãeIntel DBS2400SC
Memória RAM64 GB Kingston ECC (4 × 16 GB)
Armazenamento5 × HD 1 TB Seagate série enterprise
GabineteNilko para rack 3U
FonteCertificação 80+

Nós de cálculo

Os 23 nós de cálculo possuem configuração homogênea, adequada para execução distribuída e submissão de jobs via SLURM.

Componente Especificação de cada nó
ProcessadorIntel i7 3770 3.4 GHz
Placa-mãeIntel DH77EB
Memória RAM32 GB Kingston (4 × 8 GB)
FonteCertificação 80+

Outros equipamentos

  • 1 Rack Womer 42U
  • 1 Switch Gigabit Ethernet com 24 portas
  • 1 No-break APC SUA-3000BR

O Laboratório

O Laboratório de Multiprocessamento Computacional e Científico (LMC²) é uma infraestrutura multiusuária vinculada à Escola de Ciências e Tecnologia da UFRN, dedicada ao suporte a atividades de pesquisa científica e tecnológica que demandam computação de alto desempenho.

Finalidade

Apoiar pesquisas, simulações, processamento numérico e formação de recursos humanos em computação científica.

Infraestrutura

Cluster de multiprocessamento, armazenamento, rede e ambientes de software científico para diferentes perfis de uso.

Coordenação

Coordenador: Prof. Léo Gouvêa Medeiros
Vice-Coordenador: Prof. Ronai Machado Lisboa

Primeiro acesso

Acesso Geral

O acesso ao cluster é feito remotamente via SSH. Em vários serviços web, o acesso local é realizado com redirecionamento de porta.

ssh seu_usuario@nome_do_servidor -p porta
  • Use sua conta institucional ou conta previamente cadastrada no cluster.
  • Para trabalhos longos, prefira executar programas pelos nós de computação, não diretamente no nó de login.
  • Para notebooks Jupyter, interfaces web e VNC, utilize sempre túnel SSH.
  • Você receberá no seu e-mail as informações: usuário, servidor e porta de acesso.

Guias rápidos

Escolha abaixo o manual mais adequado para o seu fluxo de trabalho.

Filas e jobs

SLURM

Submissão de jobs, contas, partições, QoS e comandos básicos para execução em lote e interativa.

Softwares científicos

IGWN-CVMFS

Uso do ambiente da comunidade IGWN via CVMFS, incluindo execução por SLURM e teste interativo.

Notebook web

JupyterHub

Uso do JupyterHub com perfis prontos de recursos, kernels e monitoramento pelo SLURM.

Notebook manual

JupyterLab

Criação do seu próprio ambiente, alocação de nó e acesso remoto ao JupyterLab com túnel SSH.

Ambiente gráfico

VNC

Acesso gráfico remoto ao cluster para aplicações visuais e uso assistido do navegador no servidor.

Manual

Uso do SLURM no Cluster

O SLURM é o sistema de filas do cluster. Ele controla a submissão, o agendamento e a execução dos jobs nos nós de computação.

Partições: poligono para processamento geral e paralelo. poseidon para uso controlado do nó host via QoS host.

Contas de usuário

  • userinterno: usuários internos
  • userexterno: usuários externos
  • userhost: acesso ao host

Política institucional de acesso

Usuários internos e externos possuem os mesmos QoS e os mesmos perfis técnicos de uso. A diferença de prioridade entre os grupos é implementada por fairshare, com peso institucional de 80% para userinterno e 20% para userexterno.

QoS para notebooks no JupyterHub

QoS / Perfil Uso CPU Memória Tempo máximo Nós
interactiveNotebook leve e interativoaté 4até 16G04:00:001
smallNotebook pequenoaté 4até 16G2 dias1
mediumNotebook de produção em 1 nóaté 8até 28G5 dias1
largeNotebook intensivo em 1 nóaté 8até 28G7 dias1
longNotebook longo em 1 nóaté 8até 28G10 dias1
hostUso controlado do nó hostaté 4até 16G08:00:001
Os perfis do JupyterHub executam notebooks em um único nó. Para escalar além de um nó, recomenda-se usar Dask ou submeter jobs batch/MPI com SLURM.

Filas batch para uso com sbatch e srun

QoS Tipo de uso Limites de recursos Limites por usuário Observação
batch_shortJob curto em 1 nó1 nó, até 8 CPU, até 28G, até 1 diaaté 6 jobs rodando e 12 submetidosIdeal para testes, varreduras de parâmetros e programas independentes
batch_mediumProdução em 1 nó1 nó, até 8 CPU, até 28G, até 5 diasaté 6 jobs rodando e 12 submetidosUso geral em lote, incluindo campanhas com múltiplas submissões
batch_longJob longo em 1 nó1 nó, até 8 CPU, até 28G, até 10 diasaté 3 jobs rodando e 6 submetidosMais permissivo que o padrão, mas ainda controlado para jobs longos
mpi_shortMPI / paralelo curtoaté 4 nós, até 2 diasaté 2 jobs rodando e 4 submetidosExecução paralela distribuída de curta duração
mpi_mediumMPI / paralelo médioaté 8 nós, até 5 diasaté 2 jobs rodando e 4 submetidosProdução paralela com múltiplos nós
mpi_longMPI / paralelo longoaté 8 nós, até 10 diasaté 1 job rodando e 2 submetidosJobs distribuídos longos e mais controlados
As filas batch_short e batch_medium foram configuradas de forma mais permissiva para permitir que usuários submetam 4 programas independentes ou mais quando houver recursos disponíveis no cluster. Em situações de concorrência, a prioridade continua sendo regulada por fairshare.

Exemplo de script sbatch para job Python em um nó

#!/bin/bash
#SBATCH --job-name=python_job
#SBATCH --output=saida_%j.txt
#SBATCH --error=erro_%j.txt
#SBATCH --partition=poligono
#SBATCH --account=userinterno
#SBATCH --qos=batch_medium
#SBATCH --nodes=1
#SBATCH --cpus-per-task=8
#SBATCH --mem=28G
#SBATCH --time=2-00:00:00

python script.py

Exemplo de script sbatch para job MPI

#!/bin/bash
#SBATCH --job-name=mpi_job
#SBATCH --output=saida_%j.txt
#SBATCH --error=erro_%j.txt
#SBATCH --partition=poligono
#SBATCH --account=userinterno
#SBATCH --qos=mpi_medium
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=8
#SBATCH --time=2-00:00:00

module load openmpi
mpirun ./programa_mpi

Exemplo simples de job curto com sbatch

#!/bin/bash
#SBATCH --job-name=meu_job
#SBATCH --output=saida_%j.txt
#SBATCH --error=erro_%j.txt
#SBATCH --partition=poligono
#SBATCH --account=userinterno
#SBATCH --qos=batch_short
#SBATCH --nodes=1
#SBATCH --cpus-per-task=4
#SBATCH --mem=16G
#SBATCH --time=04:00:00

echo "Rodando no node:"
hostname

Exemplo de campanha com vários programas independentes

#!/bin/bash
#SBATCH --job-name=varredura
#SBATCH --output=saida_%j.txt
#SBATCH --error=erro_%j.txt
#SBATCH --partition=poligono
#SBATCH --account=userinterno
#SBATCH --qos=batch_medium
#SBATCH --nodes=1
#SBATCH --cpus-per-task=4
#SBATCH --mem=16G
#SBATCH --time=08:00:00

python programa.py --parametro "$1"

Um usuário pode submeter várias execuções independentes alterando parâmetros, por exemplo:

sbatch --wrap="python programa.py --parametro 10" --partition=poligono --account=userinterno --qos=batch_medium --cpus-per-task=4 --mem=16G --time=08:00:00
sbatch --wrap="python programa.py --parametro 20" --partition=poligono --account=userinterno --qos=batch_medium --cpus-per-task=4 --mem=16G --time=08:00:00
sbatch --wrap="python programa.py --parametro 30" --partition=poligono --account=userinterno --qos=batch_medium --cpus-per-task=4 --mem=16G --time=08:00:00
sbatch --wrap="python programa.py --parametro 40" --partition=poligono --account=userinterno --qos=batch_medium --cpus-per-task=4 --mem=16G --time=08:00:00

Para estudos paramétricos, também é recomendável o uso de job arrays do SLURM.

Envio do trabalho

sbatch meuPrograma.sh

Execução interativa

srun --partition=poligono --qos=interactive --cpus-per-task=2 --mem=8G --time=02:00:00 --pty bash

Comandos úteis

squeue -u $USER
scancel <JOBID>
sacct -j <JOBID>
sinfo
Manual

Uso do IGWN-CVMFS no Cluster

Atenção: O CVMFS está ativo, mas depende da rede e pode ficar intermitente. Nada impede que você crie seu ambiente baseado no IGWN.

Exemplo com script SLURM

  1. Conecte ao head node.
  2. Crie um diretório de trabalho.
  3. Crie um arquivo Python de teste.
  4. Crie um script SLURM apontando para o Python do CVMFS.
ssh seu_usuario@nome_do_servidor -p porta

mkdir -p ~/Projetos/diretorio_trabalho
cd ~/Projetos/diretorio_trabalho
import numpy as np
print('NumPy OK:', np.__version__)
#!/bin/bash
#SBATCH --job-name=teste_cvmfs
#SBATCH --output=saida_%j.txt
#SBATCH --partition=poligono
#SBATCH --qos=interactive
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --mem=8G
#SBATCH --time=00:30:00

/cvmfs/software.igwn.org/conda/envs/igwn-py310/bin/python teste.py

Submissão e acompanhamento

sbatch job.slurm
squeue -u seu_usuario
cat saida_<JOBID>.txt

Uso interativo

srun --partition=poligono --qos=interactive --nodelist=prtnode23 \
--ntasks=1 --cpus-per-task=2 --mem=2G --time=00:30:00 --pty bash

ls /cvmfs/software.igwn.org
/cvmfs/software.igwn.org/conda/envs/igwn-py310/bin/python

Uso pelo JupyterHub

ssh -L 8000:localhost:8000 seu_usuario@nome_do_servidor -p porta

No navegador local, acesse http://localhost:8000 e selecione um kernel IGWN disponível: igwn-py310, igwn-py311.

Manual

JupyterHub no Cluster HPC

O JupyterHub oferece uma interface web para notebooks Python executados nos nós de computação, integrados ao SLURM.

Perfis de recursos

Perfil CPU Memória Tempo Observação
Interactive28G4hUso interativo
Small416G2 diasNotebook pequeno
Medium828G5 diasProdução em 1 nó
Large828G7 diasNotebook intensivo em 1 nó
Long828G10 diasNotebook longo em 1 nó
Para paralelização mais avançada ou uso de múltiplos nós, recomenda-se o uso de Dask ou o envio de jobs via scripts SLURM.

Criação de ambiente e kernel

ssh -L 8000:localhost:8000 seu_usuario@nome_do_servidor -p porta

mkdir -p ~/Projetos/seu_diretorio
cd ~/Projetos/seu_diretorio

uv venv --python=3.12
source .venv/bin/activate
uv pip install pandas numpy matplotlib scikit-learn ipykernel notebook jupyterlab
python -m ipykernel install --user --name seu_diretorio --display-name "Python (seu_diretorio)"
Para utilização dos pipelines da colaboração LVK, ative o CVMFS e utilize o conda.
ssh -L 8000:localhost:8000 seu_usuario@nome_do_servidor -p porta

cvmfs_config probe
source /cvmfs/software.igwn.org/conda/etc/profile.d/conda.sh
conda activate igwn-py310

Acesso no navegador local

  1. Abra http://localhost:8000 no navegador local.
  2. Faça login com seu usuário e senha do cluster.
  3. Clique em Start e aguarde o job iniciar em um nó de computação.

Monitoramento

squeue -u $USER

Encerramento

No navegador, use Control Panel → Stop My Server ao finalizar.

Manual

Acesso remoto ao JupyterLab

Este fluxo é útil quando você quer controlar manualmente o ambiente Python, o nó de computação e a sessão do JupyterLab.

1. Criar ambiente virtual

uv init Jupyter
cd Jupyter
uv venv --python=3.10.8
source .venv/bin/activate
uv pip install jupyterlab notebook ipykernel scipy numpy matplotlib getdist
uv add jupyterlab notebook ipykernel scipy numpy matplotlib getdist

2. Solicitar um nó via SLURM

srun --partition=poligono --qos=interactive --ntasks=1 --cpus-per-task=4 --mem=8G --time=02:00:00 --pty bash

3. Ativar o ambiente e iniciar o JupyterLab

source ~/Documents/Jupyter/.venv/bin/activate
jupyter lab --no-browser --ip=0.0.0.0 --port=8888

4. Abrir o túnel SSH na máquina local

ssh -L 8888:prtnode01:8888 -p porta usuario@nome_do_servidor

Troque prtnode01 pelo nó onde o JupyterLab estiver executando e ajuste a porta caso não use 8888.

5. Abrir no navegador

http://localhost:8888/lab?token=SEU_TOKEN

Execução paralela

srun --partition=poligono --qos=mpi_short --nodes=2 --ntasks-per-node=4 --time=02:00:00 --pty bash

Script SLURM para automatizar

#!/bin/bash
#SBATCH --job-name=meu_job
#SBATCH --partition=poligono
#SBATCH --account=userinterno
#SBATCH --qos=batch_short
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=4
#SBATCH --mem=16G
#SBATCH --time=02:00:00

source ~/Documents/Jupyter/.venv/bin/activate
jupyter lab --no-browser --ip=0.0.0.0 --port=8888 &

Troca de kernel

uv pip install ipykernel
python -m ipykernel install --user --name meu_kernel --display-name "Python 3.11 (meu_kernel)"
Manual

Acesso ao Cluster via VNC

O VNC permite usar um ambiente gráfico remoto. A experiência costuma ser mais lenta do que o uso via terminal, mas é útil para aplicações visuais.

Pré-requisitos

  • Conta ativa no cluster
  • Usuário e senha
  • Cliente VNC na sua máquina local, como RealVNC, TightVNC, TigerVNC ou Screen Share no macOS

1. Entrar via SSH

ssh -p porta seu_usuario@nome_do_servidor

2. Iniciar o servidor VNC

vncserver -list
vncserver :3

Se o display :3 estiver livre, o servidor VNC ficará tipicamente associado à porta 5903.

3. Criar o túnel SSH

ssh -p porta -L 5903:localhost:5903 seu_usuario@nome_do_servidor

4. Abrir o cliente VNC na máquina local

vnc://localhost:5903

5. Encerrar a sessão

vncserver -kill :3

Manter o Jupyter vivo com tmux

tmux new -s jupyter
cd ~/Documents/diretorio_de_trabalho
source .venv/bin/activate
jupyter lab --no-browser --ip=127.0.0.1 --port=8888

Depois, use Ctrl+b e depois d para destacar a sessão sem matar o processo. Para retornar:

tmux attach -t jupyter
Sempre encerre o servidor VNC quando terminar seus jobs para evitar uso desnecessário de recursos.

Downloads dos arquivos originais

SLURM

Arquivo original do manual em formato Word.

Baixar .docx

IGWN-CVMFS

Arquivo original do manual em formato Word.

Baixar .docx

JupyterHub

Arquivo original do manual em formato Word.

Baixar .docx

JupyterLab

Arquivo original do manual em formato Word.

Baixar .docx

VNC

Arquivo original do manual em formato Word.

Baixar .docx

Contato

Escola de Ciências e Tecnologia – UFRN
Natal – RN, Brasil

Para suporte de acesso, políticas de uso e credenciamento, entre em contato com a coordenação do laboratório pelos canais institucionais.