SLURM/sbatch:将数组 ID 作为可执行文件的输入参数传递

SLURM/sbatch: pass array ID as input argument of an executable

我是 SLURM 的新手,我想做一些非常自然的事情:我有一个编译的 C 程序,off.exe,它接受一个变量作为输入,我想 运行 它并行执行了几次,每次输入参数的值都不同。 我想我可以使用 %a 数组迭代器作为输入:

#!/bin/bash

#SBATCH --partition=regular1,regular2
#SBATCH --time=12:00:00                                         # walltime
#SBATCH --ntasks=1                                              # number of processor cores (i.e. tasks)
#SBATCH --mem-per-cpu=512M                                      # memory per CPU core
#SBATCH --job-name="ISM"                                        # job name
#SBATCH --array=1-60                                            # job array. The item identifier is %a
#SBATCH --output=Polarization_%a_v0.4.txt                       # output file. %A is the job ID

srun ./off.exe %a

但它不起作用(好像输入参数始终为零!)。 有人可以帮我吗?

$a%j 等是 文件名 的替换符号,例如 Slurm 记录的输出和错误文件的名称。对于您的作业数组,您需要使用 Slurm 的输出环境变量之一,可能是 $SLURM_ARRAY_TASK_ID。您可以在 sbatch.

的联机帮助页中找到完整列表