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

如何通过Microsoft HPC Pack API编程设置「Prefer Nodes With」

如何通过HPC API编程实现「Prefer Nodes With」设置

「Prefer Nodes With」本质是让作业优先调度到具备特定属性(比如GPU、大内存、自定义标签)的节点上,用HPC API实现的话,有两种实用方式:

方法1:用现成的节点组

如果你已经在集群里把符合要求的节点归成了一个节点组(比如叫「HighMemNodes」),直接关联这个组就行:

// 前提:已经拿到IScheduler实例和要配置的作业对象ISchedulerJob
ISchedulerJob job = ...;
string targetGroup = "HighMemNodes"; // 替换成你的节点组名称

// 把节点组设为作业优先选择的组
job.AddNodeGroup(targetGroup);
// 可选:设置亲和性策略,确保优先用这个组的节点
job.Affinity = NodeAffinity.Preferred;

方法2:直接筛选节点属性

如果没提前建节点组,也可以直接通过节点的属性来筛选目标节点,设为作业的优先节点:

第一步:找出符合条件的节点

先查询集群里满足属性要求的节点,比如筛选带GPU的节点:

IScheduler scheduler = new Scheduler();
scheduler.Connect("你的集群头节点名称");

// 筛选条件:自定义属性里GPU值为True的节点
string filter = "CustomProperties['GPU'] = 'True'";
ISchedulerCollection targetNodes = scheduler.GetNodes(filter, false);

第二步:把这些节点设为作业优先节点

把查到的节点逐个添加到作业的优先列表里:

foreach (ISchedulerNode node in targetNodes)
{
    job.AddPreferredNode(node.Name);
}

// 也可以直接用逗号分隔节点名设置PreferredNodes属性
// job.PreferredNodes = "Node01,Node02,Node03";

注意点

  • Affinity属性决定了优先级强度:设为NodeAffinity.Preferred时,目标节点优先,但没可用的话会用其他节点;如果设为NodeAffinity.Required,那作业只能在目标节点可用时才会运行。
  • 节点的自定义属性可以在HPC管理器UI里提前配置,也能用ISchedulerNode.SetCustomProperty代码添加。

内容的提问来源于stack exchange,提问作者Jon Barker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:18:13