SLURM 15.08.13是否支持单节点同时运行多任务?
SLURM单节点多任务支持说明
没问题,SLURM 15.08.13版本完全支持单节点同时运行多个任务,你说的单节点16核同时跑两个各占8核的需求完全能实现,下面给你详细拆解清楚:
关于节点状态的解释
你观察到的节点状态变化是SLURM的正常行为:
- 当任务占用节点全部CPU核心时,节点标记为
allocated,表示这个节点的所有资源都被占用,暂时无法接收新任务; - 当任务只占用部分核心时,节点状态变为
mixed,这是SLURM用来标识「节点上既有已分配资源,又有空闲资源」的状态,意味着你还可以继续提交任务到这个节点,直到所有核心被占满。
具体配置与任务提交方法
1. 确认SLURM配置(一般默认已支持)
SLURM默认就支持按核心调度任务,你可以检查集群的slurm.conf里的以下参数:
SelectType=select/cons_res:这是SLURM的资源选择插件,支持按核心、内存等细粒度分配资源;SelectTypeParameters=CR_Core:指定按核心为单位进行资源调度(如果需要同时限制内存,也可以用CR_Core_Memory)。
如果你的集群是默认配置,这些参数应该已经设置好了,不需要额外修改。
2. 提交多任务的方式
方式一:用sbatch分两次提交任务脚本
先写第一个任务的脚本(比如task1.sh):
#!/bin/bash #SBATCH --nodes=1 #SBATCH --ntasks=1 #SBATCH --cpus-per-task=8 #SBATCH --job-name=8core_task1 # 用MPICH启动程序,这里的-n要和cpus-per-task对应 mpiexec -n 8 ./your_mpi_program
再写第二个任务的脚本(task2.sh),内容和上面几乎一样,只需要改job-name为8core_task2。
然后依次执行:
sbatch task1.sh sbatch task2.sh
SLURM会自动把第二个任务调度到同一个节点的剩余8核上,这时节点状态就会变成mixed。
方式二:用srun直接后台启动两个任务
如果你想在同一个终端里一次性启动两个任务,可以用后台运行的方式:
# 启动第一个8核任务,放到后台 srun --nodes=1 --ntasks=1 --cpus-per-task=8 ./your_mpi_program & # 启动第二个8核任务,放到后台 srun --nodes=1 --ntasks=1 --cpus-per-task=8 ./your_mpi_program & # 等待两个任务都完成 wait
这种方式也能实现单节点同时运行两个8核任务。
3. MPICH兼容性说明
你用的MPICH 3.2.1和SLURM 15.08.13兼容性很好,只要通过SLURM的srun或者sbatch来启动MPICH任务,SLURM会正确传递核心分配信息,确保两个任务不会抢占同一核心,运行过程不会有冲突。
内容的提问来源于stack exchange,提问作者user4736751
相关产品推荐
相关产品推荐

