Este tutorial mostra como executar scripts Python em um cluster HPC que usa o SLURM como sistema de gerenciamento de recursos.
Você aprenderá a:
Criar e usar ambientes virtuais Python corretamente dentro do cluster.
Entender as diferenças entre salloc, srun e sbatch.
Executar scripts Python de forma interativa ou via jobs em lote (batch).
salloc Solicita recursos e abre uma sessão interativa no nó alocado.
Testar código, criar ambientes virtuais, depurar.
srun Executa um comando dentro de uma alocação.
Rodar scripts dentro de salloc ou de um script batch.
sbatch Submete um script de job para execução em lote.
Execuções automatizadas ou longas.
A forma mais segura e recomendada é criar e ativar o ambiente virtual Python dentro de uma sessão interativa (`salloc`), garantindo que ele seja compatível com os nós de execução.
Solicite recursos temporários para configurar e testar seu ambiente:
salloc --ntasks=1 --mem=8G -c 4 --time=01:00:00
Após alguns segundos (ou minutos, dependendo da fila), você será conectado a um nó de computação.
Dentro da sessão interativa:
module load python-3.7.7-gcc-8.3.0-nc74ha5
Para listar versões disponíveis:
module avail Python
Crie o ambiente dentro do seu diretório pessoal (exemplo: `$HOME/env_cluster`):
python -m venv $HOME/env_cluster
source $HOME/env_cluster/bin/activate
Você verá algo como:
(env_cluster) user@node001:~$
Isso indica que o ambiente está ativo.
Agora você pode instalar qualquer pacote Python com `pip`:
pip install numpy pandas torch
ou
pip install tensorflow scikit-learn
Quando terminar, desative o ambiente:
deactivate
Você pode sair da sessão interativa com:
exit
Existem duas formas principais de executar seu código no SLURM: interativamente ou em modo batch
Ideal para testes ou jobs curtos.
1. Abra uma sessão interativa:
salloc --ntasks=1 --mem=8G -c 4 --time=01:00:00
2. Dentro da sessão
module load python-3.7.7-gcc-8.3.0-nc74ha5
source $HOME/env_cluster/bin/activate
srun python $HOME/test_dir/test.py
Dica: Você pode repetir o comando `srun` quantas vezes quiser enquanto a sessão estiver ativa.3. Para saber se está numa sessão ativa
echo $SLURM_JOB_ID
Ideal para jobs longos, automáticos ou em produção.
1. Crie um arquivo `test_slurm.sh` com o seguinte conteúdo:
#!/bin/bash
#SBATCH --job-name=test_job
#SBATCH --ntasks=1
#SBATCH --mem=16G
#SBATCH -c 8
#SBATCH --time=02:00:00
#SBATCH --output=job_output.txt
#SBATCH --error=job_error.txt
# Carregar módulo Python
module load Python/3.10
# Ativar ambiente virtual
source $HOME/env_cluster/bin/activate
# Executar script Python
srun python $HOME/test_dir/test.py
2. Submeta o job à fila do SLURM:
sbatch test_slurm.sh
3. Verifique o status
squeue
4. Após a execução, veja os resultados:
cat job_output.txt
cat job_error.txt