我正在使用 Slurm 运行一些包含输出文件的代码。当我使用
#SBATCH --array=1-10%1
时,代码运行顺利,并且输出文件(例如,#1、#2、#3 等)出现在相应的文件夹中。但是,当使用 #SBATCH --array=1-10%5
时,则不会(例如,仅 #2、#5 和 #6)。你知道这可能是什么吗?
工作代码是:
#!/bin/bash
#SBATCH --nodes=1
#SBATCH --time=24-00:00:00
#SBATCH --mem-per-cpu=5gb
#SBATCH --partition=some_partition
#SBATCH --array=1-10%1
# Print out some information about the running environment
hostname
echo "Starting at $(date)"
echo "Running on hosts: $SLURM_NODELIST"
echo "Running on $SLURM_NNODES nodes."
echo "Running on $SLURM_NPROCS processors."
echo "Current working directory is $(pwd)"
# Export environment variable
export MY_VARIABLE=1234
# Run exec.exe with srun
./exec.exe
echo "Program finished with exit code $? at: $(date)"
更改同时提交的数组数量会导致代码运行不稳定。
在不了解
exec.exe
正在做什么的情况下很难准确回答,但是当作业在数组中所有作业共用的目录中写入(临时)文件时,经常会观察到这种行为。
您可以尝试为数组中的每个作业创建一个工作目录,添加以下行:
mkdir $SLURM_ARRAY_TASK_ID && cd $SLURM_ARRAY_TASK_ID
开始之前
exec.exe
。