我几个月前将此问题发送给slurm-dev list,但仍未解决。
问题是:在尝试更改作业大小后,如FAQ所述,我想使用API以编程方式进行。
在更新环境变量的步骤之前,一切似乎都能正常工作。
当我启动应用程序时,这就是我得到的:
$ salloc -N1 mpiexec -n 1 ./jobExpansion
salloc: Granted job allocation 559
srun: error: Only allocated 1 nodes asked for 4
在squeue中,我可以看到分配已经改变,但是srun看不到变化。
我继续调试,如果我执行了:
$ salloc -N1
$ export SLURM_NODELIST=n04,n06,n00,n01
$ export SLURM_NNODES=4
$ mpiexec -n 1 ./jobExpansion
有效。
所以,我不想用完整的代码来压倒,但是,如果你能帮助我,我会在这里粘贴调整大小的部分:
slurm_init_job_desc_msg(&job);
job.user_id = getuid();
job.min_nodes = hostsToExpand;
job.dependency = (char *) malloc(sizeof (char)*20);
sprintf(job.dependency, (char *) "expand:%s", pID);
//$ salloc -N4 --dependency=expand:$SLURM_JOBID
slurm_alloc_msg_ptr = slurm_allocate_resources_blocking(&job, 0, NULL);
//$ scontrol update jobid=$SLURM_JOBID NumNodes=0
slurm_init_job_desc_msg(&job_update);
job_update.job_id = slurm_alloc_msg_ptr->job_id;
job_update.min_nodes = 0;
slurm_update_job(&job_update);
//exit
slurm_kill_job(slurm_alloc_msg_ptr->job_id, 9, 0);
//$ scontrol update jobid=$SLURM_JOBID NumNodes=ALL
slurm_init_job_desc_msg(&job_update);
job_update.job_id = procID;
job_update.min_nodes = INFINITE;
slurm_update_job(&job_update);
所有内容都指出环境变量,但我不确定如何正确更新它们。
谢谢。
EDITED
如果有人想测试我所说的内容,那么这就是存储库:
git clone https://siserte@bitbucket.org/siserte/slurm-job-expansion-test.git