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
.
的联机帮助页中找到完整列表
我是 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
.