You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SLURM中指定自定义CPU需求?指定不同节点的特定CPU

在SLURM中指定特定节点的特定CPU运行作业

要实现你说的在节点a的CPU0、CPU1,以及节点b的CPU0、CPU2、CPU4、CPU6上运行作业的需求,--cpu-per-task这类参数确实无法直接指定具体CPU编号,你可以通过以下两种常用方式实现:

方法一:使用SLURM原生的--cpu-bind参数

通过--nodelist指定目标节点,再用srun结合--cpu-bind=map_cpu:来绑定具体CPU:

#!/bin/bash
#SBATCH --nodelist=a,b
#SBATCH --ntasks=2  # 对应两个节点的任务数

# 调度任务到节点a,绑定CPU0、CPU1
srun --nodes=1 --nodelist=a --ntasks=1 --cpu-bind=map_cpu:0,1 your_task_command &

# 调度任务到节点b,绑定CPU0、CPU2、CPU4、CPU6
srun --nodes=1 --nodelist=b --ntasks=1 --cpu-bind=map_cpu:0,2,4,6 your_task_command &

wait  # 等待所有任务完成

方法二:结合taskset命令直接指定CPU

taskset是Linux系统工具,可直接指定进程运行的CPU核心,搭配SLURM的节点调度使用:

#!/bin/bash
#SBATCH --nodelist=a,b
#SBATCH --ntasks=2

# 在节点a上绑定CPU0、CPU1运行任务
srun --nodelist=a taskset -c 0,1 your_task_command &

# 在节点b上绑定CPU0、CPU2、CPU4、CPU6运行任务
srun --nodelist=b taskset -c 0,2,4,6 your_task_command &

wait

注意事项

  • 替换your_task_command为你实际要运行的程序或脚本;
  • 如果需要在每个节点上运行多个任务,可调整--ntasks数量并拆分对应的srun命令;
  • 部分集群可能需要管理员开启CPU绑定权限,若遇到权限问题可联系集群管理员。

内容的提问来源于stack exchange,提问作者Dikshant Rajwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 03:52:26