SLURM: nome de saída padrão personalizado

6

Ao executar uma tarefa do SLURM usando sbatch , o slurm produz um arquivo de saída padrão que se parece com slurm-102432.out (slurm-jobid.out). Gostaria de personalizar isso para (yyyymmddhhmmss-jobid-jobname.txt). Como faço para fazer isso?

Em geral, como incluo variáveis computadas no sbatch argument -o ?

Eu tentei o seguinte no meu script.sh

#SBATCH -p core
#SBATCH -n 6
#SBATCH -t 1:00:00
#SBATCH -J indexing
#SBATCH -o "/home/user/slurm/$(date +%Y%m%d%H%M%S)-$(SLURM_JOB_ID)-indexing.txt"

mas isso não funcionou. A localização do arquivo estava correta no novo diretório, mas o nome do arquivo era apenas a linha literal $(date +%Y%m%d%H%M%S)-$(SLURM_JOB_ID)-indexing.txt .

Então, estou procurando uma maneira de salvar o arquivo de saída padrão em um diretório /home/user/slurm/ com um nome de arquivo assim: 20160526093322-10453-indexing.txt

    
por rmf 26.05.2016 / 16:40

2 respostas

7

Você não pode, pelo menos não do jeito que você quer fazer. Aqueles #SBATCH lines são comentários shell que por acaso são interpretados pelo comando sbatch , você não pode executar código shell neles.

Além disso, a opção sbatch -o compreende apenas um conjunto muito limitado de símbolos de substituição (veja as extrações de página man abaixo).

Provavelmente, o mais próximo que você pode chegar do que deseja é executar sbatch em um script de wrapper que acrescenta o ID do trabalho, o Nome do trabalho e a data atual & tempo em um arquivo de texto (por exemplo, timestamp<TAB>jobid<TAB>jobname ) e, em seguida, use esse após a conclusão da execução do trabalho para renomear o arquivo de saída.

tempo_t ou segundos desde a época, ou seja, date +%s , é o formato de data / hora mais útil em um script. Ele pode ser facilmente impresso de qualquer maneira, sem a necessidade de analisá-lo primeiro.

Não seria difícil escrever um script que fosse iterado por esse arquivo de texto e renomeado os arquivos de saída para cada jobid que não estivesse mais em execução (verifique com squeue -t BF,CA,CD,F,NF,PR,TO ) E ainda não tivesse sido renomeado.

FYI, a página man de sbatch diz:

-o, --output=

Instruct Slurm to connect the batch script's standard output directly to the file name specified in the "filename pattern". By default both standard output and standard error are directed to the same file. For job arrays, the default file name is slurm-%A_%a.out, %A is replaced by the job ID and %a with the array index. For other jobs, the default file name is slurm-%j.out, where the %j is replaced by the job ID. See the --input option for filename specification options.

E, para -i , diz:

-i, --input=

Instruct Slurm to connect the batch script's standard input directly to the file name specified in the "filename pattern". By default, /dev/null is open on the batch script's standard input and both standard output and standard error are directed to a file of the name slurm-%j.out, where the %j is replaced with the job allocation number, as described below.

The filename pattern may contain one or more replacement symbols, which are a percent sign % followed by a letter (e.g. %j).

Supported replacement symbols are:

%A Job array's master job allocation number.
%a Job array ID (index) number.
%j Job allocation number.
%N Node name. Only one file is created, so %N will be replaced
   by the name of the first node in the job, which is the one
   that runs the script.
%u User name.
    
por 27.05.2016 / 05:37
1

A documentação do comando sbatch fornece uma lista abrangente das substituições de caracteres permitidas: na página do manual do sbatch

filename pattern sbatch allows for a filename pattern to contain one or more replacement symbols, which are a percent sign "%" followed by a letter (e.g. %j).

\ Do not process any of the replacement symbols.

%% The character "%".

%A Job array's master job allocation number.

%a Job array ID (index) number.

%J jobid.stepid of the running job. (e.g. "128.0")

%j jobid of the running job.

%N short hostname. This will create a separate IO file per node.

%n Node identifier relative to current job (e.g. "0" is the first node of the running job) This will create a separate IO file per node.

%s stepid of the running job.

%t task identifier (rank) relative to current job. This will create a separate IO file per task.

%u User name.

%x Job name.

A number placed between the percent character and format specifier may be used to zero-pad the result in the IO filename. This number is ignored if the format specifier corresponds to non-numeric data (%N for example).

Some examples of how the format string may be used for a 4 task job step with a Job ID of 128 and step id of 0 are included below:

job%J.out

job128.0.out

job%4j.out

job0128.out

job%j-%2t.out

job128-00.out, job128-01.out, ...

    
por 09.05.2018 / 12:57