Guia rápido de submissão

A submissão de jobs pode ser realizado por dois comandos do gerenciador do cluster: srun e sbatch. O comando srun executa na linha de comando e é bloqueante, enquanto o comando sbatch executa um arquivo de configuração e não é bloqueante.

Principais parâmetros de submissão:

  • -p|--partition nome Especifica o nome da partição que o job será executado.

  • -t|--time tempo Especifica um tempo limite para a execução do job. Caso o tempo limite especificado seja maior que o tempo da partição, o job ficará com o estado pendente (PENDING), possivelmente para sempre. Formatos de tempo aceitos: “minutos”, “minutos:segundos”, “horas:minutos:segundos”, “dias-horas”, “dias-horas:minutos” e “dias-horas:minutos:segundos”.

  • -c|--cpus-per-task Especifica a quantidade de core/threads o seu programa utilizará.

  • --mem tamano unidade Especifica quantidade de memória seu programa utilizará.

  • -n NUM_PROCESSOS Especifica o número de processos a serem iniciados.

  • -N NUM_NODOS Especifica que deverão ser alocados pelo menos NUM_NODOS nodos para a execução do job, ou seja, cada nodo vai executar NUM_PROCESSOS dividido por NUM_NODOS.

  • –job-name=NOME Especifica o nome do Job que será executado. Este nome irá aparecer juntamente com o id do job na listagem de jobs do sistema.

  • -e Especifica o redirecionamento do stderr. Exemplo:

-e arquivoErros.txt

  • -o Especifica o redirecionamento do stdout. Caso -e não tenha sido especificado, stderr também será enviado para o arquivo especificado. Exemplo:

-o arquivoSaida.txt ou --output arquivoSaida.txt

Comando srun

O comando srun submete um job para o escalonador, por padrão esse comando é bloqueante. A sintaxe do comando é:
srun executavel

Exemplo: Execução simples do srun

O exemplo submete o programa /cluster/tests/omp/omp para fila de execução do cluster e será executado quando tiver recursos disponíveis.

testem@c3hpc:~$ srun /cluster/tests/omp/omp
Missing arguments
Usage: /cluster/tests/omp/omp [-n|--nprocs] <cpus> [-t|--time] <time>
Examples:
  Example 1: short options: To Execute program with 4 threads during 10 seconds:
        /cluster/tests/omp/omp -n 4 -t 10
  Example 2: long options: To Execute program with 8 threads during 15 seconds:
        /cluster/tests/omp/omp --nprocs 8 --time 15
srun: error: node4: task 0: Exited with exit code 2
testem@c3hpc:~$ srun /cluster/tests/omp/omp --nprocs 4 -t 4
Time 4 Nproc 4
count: 258531857
count: 260249707
count: 262771821
count: 262113384
testem@c3hpc:~$
Para especificar a quantidade de recurso que o job utilizará passe como argumentos antes do programa.
srun <argumentos do srun> executavel

Exemplo: Execução com argumentos srun

No exemplo abaixo, o executável é um programa em openMP que lança 4 threads, mas o srun só disponibiliza duas threads para ser executado. Portanto, as, quatro que as quatros threads tenham aceso a 4 núcleo de processamento é necessário passar o argumento --cpus-per-task 4.

testem@c3hpc:~$ srun --cpus-per-task 2 --mem 16G --partition maratona /cluster/tests/omp/omp --nprocs 4 -t 60
Time 60 Nproc 4
count: 430357224
count: -63444304
count: -21866144
count: -33171848
testem@c3hpc:~$

Comando sbatch

O comando sbatch recebe como argumento um arquivo com as especificações do jobs que será executado. Sbatch é Uma opção mais comum é a utilização de um script, que contém as informações sobre o jobs que serão executados. No script, as opções de execução podem ser definidas utilizando-se o prefixo #SBATCH antes da opção.
#SBATCH --time=1

Abaixo, um exemplo de script que roda a aplicação “meuPrograma” que está no diretório bin. A aplicação irá executar por no máximo 7 dias e é solicitado 1 nodo para a execução.

Para submeter o script, salve-o como meuscript.sh, e execute-o utilizando o comando sbatch. Muitos dos parâmetros do comando srun também são válidos para o sbatch. Os parâmetros passados ao sbatch irão sobrescrever os parâmetros existentes no script sendo executado. Exemplo do comando:
sbatch -o saida.txt meuscript.sh

Modelo de arquivo sbatch

#!/bin/bash
#SBATCH -t 1-10:00:00
#SBATCH --cpus-per-task=NUM_CPUS_POR_PROCESSO
#SBATCH -o ARQUIVO_DE_SAIDA
#SBATCH --job-name=NOME_JOB
#SBATCH -p PARTICAO_ONDE_SERA_EXECUTADO
#SBATCH -n NUM_DE_PROCESSOS
#SBATCH -N NUM_NODOS_NECESSARIOS
srun $HOME/meuPrograma parametro1Programa parametro2Programa
É possível sobrescrever os valores que estão no scripts pela linha de comando. Exemplo:
sbatch -o saida.txt -t 5-00:00:00 meuscript.sh
Note que o comando acima sobrescreve o parâmetro -t que já está presente no meuscript.sh. Isso fará com que o parâmetro no meuscript.sh seja ignorado, sendo assim, ao executar a linha acima, o tempo limite para a execução será de 5 dias. No entanto, recomenda que todos os parâmetros estejam no script e que estes não sejam sobrecarregados pelo sbatch para facilitar a localização de erros e múltiplas execuções de um mesmo script.

Cancelando jobs

Para cancelar um job que está rodando ou que está na fila para execução, utilize o comando scancel. Modo de uso:
scancel jobId

Nota

O jobid pode ser obitido através do comando squeue