Exemplos de Script de Submissão¶
Programas com uma única thread¶
#!/bin/bash
#SBATCH --job-name=meu_job
#SBATCH --account=conta_do_projeto
#SBATCH --partition=processing
#SBATCH --time=10:00
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
./hello.omp
Programas multithread¶
#!/bin/bash
#SBATCH --job-name=omp_job
#SBATCH --account=conta_do_projeto
#SBATCH --partition=processing
#SBATCH --output=omp_job.txt
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=4
#SBATCH --time=10:00
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
./hello.omp
Programas multiprocessos¶
#!/bin/bash
#SBATCH --job-name=mpi
#SBATCH --account=conta_do_projeto
#SBATCH --partition=processing
#SBATCH --output=mpi_job.txt
#SBATCH --ntasks=4
#SBATCH --time=10:00
mpirun hello.mpi
Programas híbridos (MPI+OpenMP)¶
#!/bin/bash
#SBATCH --job-name=hybrid
#SBATCH --account=conta_do_projeto
#SBATCH --output=hybrid_job.txt
#SBATCH --ntasks=8
#SBATCH --cpus-per-task=5
#SBATCH --nodes=2
#SBATCH --time=10:00
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
mpirun hello_hybrid.mpi
Job Python simples (CPU)¶
Este exemplo mostra como executar um script Python básico usando apenas CPU.
#!/bin/bash
#SBATCH --job-name=python_analise
#SBATCH --account=conta_do_projeto
#SBATCH --partition=processing
#SBATCH --output=python_job_%j.out
#SBATCH --error=python_job_%j.err
#SBATCH --time=01:00:00
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
# Carregar módulo Python
module load python/3.10
# Executar script
python meu_script.py
Job Python com ambiente virtual (CPU)¶
Para projetos que usam pacotes específicos, crie um ambiente virtual:
#!/bin/bash
#SBATCH --job-name=analise_dados
#SBATCH --account=conta_do_projeto
#SBATCH --partition=processing
#SBATCH --output=/scratch/projetos/<seu_projeto>/logs/job_%j.out
#SBATCH --error=/scratch/projetos/<seu_projeto>/logs/job_%j.err
#SBATCH --time=02:00:00
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=4
# Carregar Python
module load python/3.10
# Ativar ambiente virtual
source /home/$USER/meu_ambiente/bin/activate
# Criar diretório de saída se não existir
mkdir -p /scratch/projetos/<seu_projeto>/resultados
# Executar análise
python analise.py --input /scratch/projetos/<seu_projeto>/dados/ --output /scratch/projetos/<seu_projeto>/resultados/
Job Python com múltiplas CPUs¶
Para processamento paralelo usando multiprocessing ou bibliotecas como NumPy/Pandas:
#!/bin/bash
#SBATCH --job-name=processamento_paralelo
#SBATCH --account=conta_do_projeto
#SBATCH --partition=processing
#SBATCH --output=/scratch/projetos/<seu_projeto>/logs/parallel_%j.out
#SBATCH --error=/scratch/projetos/<seu_projeto>/logs/parallel_%j.err
#SBATCH --time=04:00:00
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=16
#SBATCH --mem=32G
# Carregar Python
module load python/3.10
# Ativar ambiente
source ~/venv_ciencia/bin/activate
# Definir threads para bibliotecas NumPy/SciPy
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
export MKL_NUM_THREADS=$SLURM_CPUS_PER_TASK
export OPENBLAS_NUM_THREADS=$SLURM_CPUS_PER_TASK
# Executar com número de processos igual ao número de CPUs
python processamento_paralelo.py --workers $SLURM_CPUS_PER_TASK
Job Python com Conda¶
#!/bin/bash
#SBATCH --job-name=conda_job
#SBATCH --account=conta_do_projeto
#SBATCH --partition=processing
#SBATCH --output=conda_%j.out
#SBATCH --time=02:00:00
#SBATCH --cpus-per-task=8
# Inicializar Conda (ajuste o caminho conforme sua instalação)
source ~/miniconda3/etc/profile.d/conda.sh
# Ativar ambiente Conda
conda activate meu_ambiente
# Executar script
python analise_estatistica.py
Job Python com array de jobs¶
Para executar o mesmo script com diferentes parâmetros:
#!/bin/bash
#SBATCH --job-name=array_python
#SBATCH --account=conta_do_projeto
#SBATCH --partition=processing
#SBATCH --output=/scratch/projetos/<seu_projeto>/logs/array_%A_%a.out
#SBATCH --error=/scratch/projetos/<seu_projeto>/logs/array_%A_%a.err
#SBATCH --array=1-10
#SBATCH --time=01:00:00
#SBATCH --cpus-per-task=2
module load python/3.10
source ~/venv/bin/activate
# Usar SLURM_ARRAY_TASK_ID como parâmetro
python processa_dataset.py --id $SLURM_ARRAY_TASK_ID
Job com ambiente virtual Python e GPU¶
#!/bin/bash
#SBATCH --job-name=deep_learn
#SBATCH --output=gpu_job.txt
#SBATCH --partition=gpu
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=2
#SBATCH --gpus=p100:2
#SBATCH --partition=gpu
#SBATCH --time=10:00
module load cuda/11.8
# usando seu ambiente anaconda
source activate pytorch
python my_app.py
Job com ambiente virtual Python, GPU e arquivos de saída/erro¶
#!/bin/bash
#SBATCH --job-name=deep_learn
#SBATCH --partition=gpu
#SBATCH --account=my_project_account
#SBATCH --time=0-00:10 # Tempo em D-HH:MM, mínimo de 10 minutos
#SBATCH -o my_output_%j.out # Arquivo para o qual STDOUT será escrito, %j insere o jobid
#SBATCH -e my_errors_%j.err # Arquivo para o qual STDERR será escrito, %j insere o jobid
# load modules
module load cuda/11.8
source activate pytorch
# run code
python my_app.py'
Job com Intel MPI¶
#!/bin/bash
#SBATCH --job-name=3D_ABC # Job name
#SBATCH --account=exemple # Project account
#SBATCH --cpus-per-task=20 # Number of cores per task
#SBATCH --export=ALL # Export all environment variables
#SBATCH --nodes=10 # Number of nodes
#SBATCH --ntasks-per-node=2 # Number of tasks per node
#SBATCH --output=slurm-%j.out # Output file name
#SBATCH --partition=standard # Partition (queue)
module purge
module load intel/oneapi/mpi
module load intel/oneapi/compiler
module load ucx/1.14.0-intel
export I_MPI_FABRICS=shm:ofi
export I_MPI_OFI_PROVIDER=mlx
I_MPI_PMI_LIBRARY=/lib64/libpmi2.so srun --mpi=pmi2 </path/to/program> <arguments>