使用Slurm REST API(解析器v0.0.40)无法提交GRES值的咨询
问题
通过Slurm REST API(版本0.0.40)提交作业时,尝试在请求的job对象中设置gres参数,但请求返回警告提示该字段被忽略。同时time_limit参数也触发了类型不匹配警告。
请求详情:
url: /slurm/0.0.40/job/submit method: POST data: { "script":"#!/bin/bash \n nvidia-smi", "job": { "environment": ["PATH=/bin/:/usr/bin/:/sbin/"], "gres":"gpu:2", "time_limit": 120, "name":"test-gpu", "standard_output":"output/slurmout-%j.out", "current_working_directory":".../slurmapis/5fcceebe-f538-40fa-99c4-66faa71945f7" } }
返回的响应警告:
{..."warnings":[ { "description":"Expected OpenAPI type=object (Slurm type=dictionary) but got OpenAPI type=integer (Slurm type=64 bit integer)", "source":"#/job/time_limit/" }, { "description":"Ignoring unknown field ""gres"" of type string in DATA_PARSER_JOB_DESC_MSG", "source":"#/job/gres/" } ]...}
询问:该功能是否未开放?是否有可行替代方案?
解答
关于GRES功能的支持情况
Slurm REST API 0.0.40版本确实未开放在job对象中直接设置gres字段的功能,这个版本的API schema里没有定义该字段,所以解析器会直接忽略传入的gres参数,这是版本局限性导致的。
可行替代方案
在提交脚本中嵌入SBATCH指令:
直接在作业脚本开头添加#SBATCH --gres=gpu:2,Slurm会识别该指令并分配对应的GPU资源,无需在API请求中额外设置。修改后的脚本示例:#!/bin/bash #SBATCH --gres=gpu:2 nvidia-smi升级Slurm REST API版本:
从0.0.45版本开始,Slurm REST API已经支持在job对象中设置gres字段。升级后注意调整参数格式,比如time_limit需要改为对象格式("time_limit": {"seconds": 120}),可以同时消除之前的类型警告。通过
sbatch命令提交作业:
如果无法升级API,可以直接在服务器上调用sbatch命令提交作业。先生成包含SBATCH指令的脚本文件,再执行sbatch <脚本路径>,这种方式完全兼容所有Slurm参数,包括GRES设置。
额外提示:消除time_limit警告
0.0.40版本的API要求time_limit为对象类型,而非整数,正确的参数格式应为:
"time_limit": {"seconds": 120}
内容的提问来源于stack exchange,提问作者Prasanna
相关产品推荐
相关产品推荐

