Após a criação da conta no CENAPAD-UFC, o usuário encontra em seu diretório, a pasta exemplo/PI. Nela estão os arquivos que usaremos como exemplo para descrever o processo de submissão de jobs MPI.
Dentro da pasta exemplo/PI, está o arquivo pi.c. Esse arquivo é um programa simples escrito em C com chamadas MPI para calcular o valor do número Pi através de métodos de Monte Carlo. Para compilar o arquivo, o comando é o seguinte:
[NomeDeUsuário@padufc0 PI]$ mpicc pi.c -o pi
Temos agora o binário do arquivo pi.c pronto para execução.
Para execução de jobs no cluster, eles devem ser submetidos ao gerenciador de filas SLURM. Existem dois comandos para isso: srun e sbatch. O srun é o mais simples funciona de maneira semelhante ao mpirun. Já o sbatch permite o uso scripts com a descrição dos jobs. Optamos em utilizar o sbatch porque ele facilita a gerência de jobs em execução por parte do usuário. Para submeter um job utilizando o sbatch, precisamos escrever antes um script. O arquivo pi.srm é um exemplo de script para submissão da aplicação “pi”. Abaixo vemos o arquivo pi.srm.
#!/bin/bash
#SBATCH -J MPI-PI # Nome do job
#SBATCH -p medium # Fila (medium/long/gpu)
#SBATCH -n 20 # Numero de processos MPI (threads)
cd $SLURM_SUBMIT_DIR # Diretório do qual o sbatch foi chamado
echo "-----------------------------------------"
ulimit -s unlimited
ulimit -a
echo "-----------------------------------------"
srun --resv-ports ./pi
echo "-----------------------------------------"
date
Para submeter um job a fila do SLURM execute o comando abaixo. A saída Submitted batch job indica o número de identificação do job (JOBID), neste exemplo 700.
[NomeDeUsuário@padufc0 PI]$ sbatch pi.srm
Submitted batch job 700
Para visualizar o andamento do job podemos executar o comando squeue que retorna todos os job da(s) sua(s) fila(s) de execução.
[NomeDeUsuário@padufc0 PI]$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
700 medium MPI-PI NomeDeUsuário R 0:18 4 padufc[26-29]
Para cancelar o job, temos o comando scancel que recebe com parâmetro o identificador do job (JOBID).
[NomeDeUsuário@padufc0 PI]$ scancel 700
A saída padrão do job é escrita no arquivo slurm-ID.out, no qual ID representa o identificador do job. No exemplo, a saída do programa “pi” está no arquivo slurm-700.out.