Python é uma linguagem de programação de alto nível, interpretada, de script, imperativa, orientada a objetos, funcional, de tipagem dinâmica e forte. Foi lançada por Guido van Rossum em 1991.
Este exemplo é apropriado para a maioria dos casos onde o script Python não foi desenvolvido para utilizar paralelismo, dessa forma, é recomendado que o arquivo .srm tenha os seguintes parâmetros para a submissão do job:
#!/bin/bash
## EXEMPLO DE EXECUÇÃO SERIAL
## OBS: Scripts sem paralelismo utilizam um único core
#SBATCH --job-name=PY3SERIAL # Nome do job
#SBATCH --partition=medium # Fila (medium/long/gpu)
#SBATCH --ntasks=1 # Número de processos
# Arquivo de entrada
INPFILE="serial.py"
# Arquivo de saída
OUTFILE="serial.out"
# Diretório de execução
cd $SLURM_SUBMIT_DIR
echo "Diretório de Execução: $SLURM_SUBMIT_DIR"
# Nó de execução
echo "Nós de Execução: ${SLURM_JOB_NODELIST}"
# Iniciando Python 3
echo "Iniciando Python 3 - " `date`
srun python3.8 ${INPFILE} > ${OUTFILE}
echo "Job Concluído - " `date`
Neste exemplo o script Python utiliza a biblioteca Joblib para execução paralela, dessa forma podemos habilitar vário núcleos de processamento para esta tarefa. Para este tipo de execução recomendado que o arquivo .srm tenha os seguintes parâmetros para a submissão do job:
#!/bin/bash
## EXEMPLO DE EXECUÇÃO PARALELA
## OBS: O script de entrada em python precisa ser desenvolvido
## para utilizar esta funcionalidade.
#SBATCH --job-name=PY3PARALELO # Nome do job
#SBATCH --partition=medium # Fila (medium/long/gpu)
#SBATCH --ntasks=24 # Número de processos
# Arquivo de entrada
INPFILE="paralelo.py"
# Arquivo de saída
OUTFILE="paralelo.out"
# Diretório de execução
cd $SLURM_SUBMIT_DIR
echo "Diretório de Execução: $SLURM_SUBMIT_DIR"
# Nós de execução
echo "Nós de Execução: ${SLURM_JOB_NODELIST}"
# Iniciando Python 3
echo "Iniciando Python 3 - " `date`
srun python3.8 ${INPFILE} ${SLURM_NTASKS} > ${OUTFILE}
echo "Job Concluído - " `date`