Pular para conteúdo

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>