R é uma linguagem de programação multi-paradigma, dinâmica, fracamente tipada, voltada à manipulação, análise e visualização de dados. Foi criado originalmente por Ross Ihaka e por Robert Gentleman no departamento de Estatística da Universidade de Auckland, Nova Zelândia.
Este exemplo é apropriado para a execução de scripts simples que não foram desenvolvidos para utilizar paralelismo, dessa forma, é recomendado que o arquivo .srm tenha os seguintes parâmetros para a submissão do job, substituindo:
entrada.R
pelo nome do seu arquivo de entrada;saida.out
pelo nome do seu arquivo de saída.
#!/bin/bash
#SBATCH --job-name=RSERIAL # Nome do job
#SBATCH --partition=medium # Fila (medium/long/gpu)
#SBATCH --nodes=1 # Número de nós utilizados
#SBATCH --ntasks-per-node=1 # Número de processos em cada nó
#SBATCH --cpus-per-task=1 # Número de CPUs (cores) utilizada por cada processo
# Arquivo de entrada
ARQINP="entrada.R"
# Arquivo de saída
ARQOUT="saida.out"
# Nó de execução
echo "Nó de Execução ${SLURM_JOB_NODELIST}"
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
ulimit -s unlimited
# Diretório de execução
cd $SLURM_SUBMIT_DIR
echo "Diretório de Execução: $SLURM_SUBMIT_DIR"
echo "Entrada: $ARQINP"
echo "Iniciando R - " `date`
Rscript ${ARQINP} > ${ARQOUT}
echo "Job Concluído - " `date`
Este exemplo é voltado para execução de script em vários cores de um único nó , dessa forma, é recomendado que o arquivo .srm tenha os seguintes parâmetros para a submissão do job, substituindo:
entrada.R
pelo nome do seu arquivo de entrada;saida.out
pelo nome do seu arquivo de saída;--cpus-per-task=4
pela quantidade de cores utilizados (máximo 12).
#!/bin/bash
#SBATCH --job-name=R-MULTINODE # Nome do job
#SBATCH --partition=medium # Fila (medium/long/gpu)
#SBATCH --nodes=2 # Número de nós utilizados
#SBATCH --ntasks-per-node=12 # Número de processos em cada nó
#SBATCH --cpus-per-task=1 # Número de CPUs (cores) utilizada por cada processo
# Arquivo de entrada
## A entrada abaixo está configurada para 4 CPUs
ARQINP="entrada.R"
# Arquivo de saída
ARQOUT="saida.out"
# Nó de execução
echo "Nó de Execução ${SLURM_JOB_NODELIST}"
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
ulimit -s unlimited
# Diretório de execução
cd $SLURM_SUBMIT_DIR
echo "Diretório de Execução: $SLURM_SUBMIT_DIR"
echo "Entrada: $ARQINP"
echo "Iniciando R - " `date`
Rscript --vanilla ${ARQINP} > ${ARQOUT}
echo "Job Concluído - " `date`
Este exemplo é voltado para execução de script em vários nós de um único nó , dessa forma, é recomendado que o arquivo .srm tenha os seguintes parâmetros para a submissão do job, substituindo:
entrada.R
pelo nome do seu arquivo de entrada;saida.out
pelo nome do seu arquivo de saída;--nodes=2
pela quantidade de nós utilizados (mínimo 2).
#!/bin/bash
#SBATCH --job-name=R-MULTINODE # Nome do job
#SBATCH --partition=medium # Fila (medium/long/gpu)
#SBATCH --nodes=2 # Número de nós utilizados
#SBATCH --ntasks-per-node=12 # Número de processos em cada nó
#SBATCH --cpus-per-task=1 # Número de CPUs (cores) utilizada por cada processo
# Arquivo de entrada
ARQINP="entrada.R"
# Arquivo de saída
ARQOUT="saida.out"
# Nó de execução
echo "Nó de Execução ${SLURM_JOB_NODELIST}"
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
ulimit -s unlimited
# Diretório de execução
cd $SLURM_SUBMIT_DIR
echo "Diretório de Execução: $SLURM_SUBMIT_DIR"
echo "Entrada: $ARQINP"
echo "Iniciando R - " `date`
mpirun -n 1 Rscript --vanilla ${ARQINP} > ${ARQOUT}
echo "Job Concluído - " `date`