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

如何在Windows HPC中运行尽可能多的内存可容纳且各占用全部核心的任务

需求可行性结论

你要求的「仅按内存容量限制调度尽可能多的任务、每个任务占用节点全部核心」的需求在Microsoft HPC Pack 2012中完全可实现,核心是调整调度资源的计量维度,避开默认的核心-内存绑定配额逻辑。

固定全核心、仅按内存调度的配置方案

  • 保持作业UnitType为Node,作业和任务的IsExclusive参数保持为False,基础调度规则不变。
  • 取消用MaximumNumberOfCores限制任务资源的配置,将单个任务的MinimumNumberOfCores和MaximumNumberOfCores均设置为节点的总核心数,比如示例中的12核心节点就统一设为12。该配置会告知调度器每个任务需占用节点全部核心,调度器不会再按核心分片给任务分配资源。
  • 保留EstimatedProcessMemory参数,设置为单个任务的实际总内存占用值(比如示例中的2048MB)。当任务核心数固定为节点总核心时,HPC Pack 2012会将该参数识别为任务总内存需求,而非单核心内存配额。
  • 确认节点属性中配置的可用内存总量准确,调度器会自动按「节点剩余内存 ÷ 单任务内存占用」计算单节点可同时运行的最大任务数,不会受核心数配额限制。比如示例中15GB可用内存的节点,会自动调度7个占12核心、2GB内存的任务,所有核心会被7个进程共享,CPU利用率可达到最优水平。

动态分配核心的优化方案

如果需要适配不同配置的异构节点,不想固定任务核心数,可通过以下配置避开核心-内存绑定的缺陷:

  • 将作业UnitType改为Core,开启作业的UseSchedulingPriorityForResourceAdjustment参数。
  • 取消EstimatedProcessMemory配置,改为在作业自定义属性中设置RequiredMemory为单个任务的总内存占用值,调度器会直接按节点总内存剩余量调度,不会做单核心内存换算。
  • 调度器会自动根据节点剩余内存和剩余核心数匹配最优的任务核心分配,比如示例中的12核15GB节点,会自动给7个任务各分配1核心,同时不会限制任务进程的CPU亲和性,允许进程跨全部核心运行,不会出现核心浪费的问题。

注意:如果你的视频处理程序本身默认绑定了启动时分配的核心,需要在程序启动参数中关闭CPU亲和性绑定,否则即使调度器允许任务使用全核心,程序也只会用到分配到的少量核心,达不到利用率提升的效果。

内容的提问来源于stack exchange,提问作者Josh Brown Kramer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:48:05