【发布时间】:2016-03-30 12:41:53
【问题描述】:
我想将每个节点的任务数设置为 slurm 中的变量,例如:#SBATCH --ntasks-per-node=s*2; (s 是每个节点的套接字数,我将它作为参数传递给我的程序)。代码如下: test.c 文件的一部分:
if (argc < 3)
{
fprintf(stderr, "Usage: mpiexec program <#sockets>\n");
exit(1);
}
s = atoi(argv[1]);
bash 脚本(slurm):
#!/bin/bash
#SBATCH --job-name=test
#SBATCH --time=00:30:00
#SBATCH --account=1234
#SBATCH --output=./test.out
#SBATCH --nodes=4
#SBATCH --mem-per-cpu=3900M
#SBATCH --ntasks-per-node=s*2 ???
#SBATCH --exclusive
source /cluster/bin/jobsetup
module load intel/2015.3
module load openmpi.intel/1.8.6
cd ~/filedir
mpirun --map-by ppr:2:socket --report-bindings ./test 4 > ./test
如果我将 ntasks-per-node 设置为 8 之类的固定数量,它可以正常工作。但是如何根据传递给程序的参数来设置它呢? 如有任何帮助,我将不胜感激。
【问题讨论】: