Status do Cluster
Partição poligono
Partição principal para jobs interativos, batch, MPI e perfis do JupyterHub.
Partição poseidon
Nó host disponível para uso controlado via QoS host.
JupyterHub
Notebooks executam em 1 nó. Para múltiplos nós, utilize Dask ou jobs batch via SLURM.
Fairshare
Mesmo acesso técnico para internos e externos, com prioridade de uso definida por fairshare institucional.
Infraestrutura do Cluster
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.
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
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 |
|---|---|
| Processadores | 2 × Intel Xeon Hexacore BX80621E52620 2.0 GHz |
| Núcleos reais no servidor | 12 |
| Placa-mãe | Intel DBS2400SC |
| Memória RAM | 64 GB Kingston ECC (4 × 16 GB) |
| Armazenamento | 5 × HD 1 TB Seagate série enterprise |
| Gabinete | Nilko para rack 3U |
| Fonte | Certificaçã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ó |
|---|---|
| Processador | Intel i7 3770 3.4 GHz |
| Placa-mãe | Intel DH77EB |
| Memória RAM | 32 GB Kingston (4 × 8 GB) |
| Fonte | Certificaçã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
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.
SLURM
Submissão de jobs, contas, partições, QoS e comandos básicos para execução em lote e interativa.
IGWN-CVMFS
Uso do ambiente da comunidade IGWN via CVMFS, incluindo execução por SLURM e teste interativo.
JupyterHub
Uso do JupyterHub com perfis prontos de recursos, kernels e monitoramento pelo SLURM.
JupyterLab
Criação do seu próprio ambiente, alocação de nó e acesso remoto ao JupyterLab com túnel SSH.
VNC
Acesso gráfico remoto ao cluster para aplicações visuais e uso assistido do navegador no servidor.
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.
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
userinterno e 20% para userexterno.
QoS para notebooks no JupyterHub
| QoS / Perfil | Uso | CPU | Memória | Tempo máximo | Nós |
|---|---|---|---|---|---|
| interactive | Notebook leve e interativo | até 4 | até 16G | 04:00:00 | 1 |
| small | Notebook pequeno | até 4 | até 16G | 2 dias | 1 |
| medium | Notebook de produção em 1 nó | até 8 | até 28G | 5 dias | 1 |
| large | Notebook intensivo em 1 nó | até 8 | até 28G | 7 dias | 1 |
| long | Notebook longo em 1 nó | até 8 | até 28G | 10 dias | 1 |
| host | Uso controlado do nó host | até 4 | até 16G | 08:00:00 | 1 |
Filas batch para uso com sbatch e srun
| QoS | Tipo de uso | Limites de recursos | Limites por usuário | Observação |
|---|---|---|---|---|
| batch_short | Job curto em 1 nó | 1 nó, até 8 CPU, até 28G, até 1 dia | até 6 jobs rodando e 12 submetidos | Ideal para testes, varreduras de parâmetros e programas independentes |
| batch_medium | Produção em 1 nó | 1 nó, até 8 CPU, até 28G, até 5 dias | até 6 jobs rodando e 12 submetidos | Uso geral em lote, incluindo campanhas com múltiplas submissões |
| batch_long | Job longo em 1 nó | 1 nó, até 8 CPU, até 28G, até 10 dias | até 3 jobs rodando e 6 submetidos | Mais permissivo que o padrão, mas ainda controlado para jobs longos |
| mpi_short | MPI / paralelo curto | até 4 nós, até 2 dias | até 2 jobs rodando e 4 submetidos | Execução paralela distribuída de curta duração |
| mpi_medium | MPI / paralelo médio | até 8 nós, até 5 dias | até 2 jobs rodando e 4 submetidos | Produção paralela com múltiplos nós |
| mpi_long | MPI / paralelo longo | até 8 nós, até 10 dias | até 1 job rodando e 2 submetidos | Jobs distribuídos longos e mais controlados |
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
Uso do IGWN-CVMFS no Cluster
Exemplo com script SLURM
- Conecte ao head node.
- Crie um diretório de trabalho.
- Crie um arquivo Python de teste.
- 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.
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 |
|---|---|---|---|---|
| Interactive | 2 | 8G | 4h | Uso interativo |
| Small | 4 | 16G | 2 dias | Notebook pequeno |
| Medium | 8 | 28G | 5 dias | Produção em 1 nó |
| Large | 8 | 28G | 7 dias | Notebook intensivo em 1 nó |
| Long | 8 | 28G | 10 dias | Notebook longo em 1 nó |
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)"
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
- Abra
http://localhost:8000no navegador local. - Faça login com seu usuário e senha do cluster.
- 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.
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)"
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
Downloads dos arquivos originais
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.