使用C API进行Slurm作业扩展

时间:2016-09-26 09:30:04

标签: slurm

我几个月前将此问题发送给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

0 个答案:

没有答案