提交智能体收藏0
技术动态

NVIDIA 在 CUDA 13.1 中通过 Runtime API 开放 Green Contexts

Green contexts 可在单进程内显式划分 GPU 的 SM 与工作队列资源,CUDA 13.1 起从 Driver API 扩展到 Runtime API;官方示例称在 148 SM 的 Blackwell GPU 上可将关键内核延迟从 0.140 ms 降至 0.007 ms。

用途与变化

Green contexts 让应用在同一个进程内显式选择一部分 GPU 执行资源,并把工作定向到这些资源上。官方博客说明,该能力自 CUDA 12.4 起存在于 Driver API,从 CUDA 13.1 起也通过 Runtime API 提供。

它主要有两项用途:一是 SM 划分,把指定数量的 SM 分配给某个 green context,使多个负载不再争抢同一批计算单元;二是工作队列资源划分,避免独立的有序流映射到同一底层工作队列而产生不必要的串行化。

编程模型

传统 Runtime 流程用 cudaSetDevice 选设备,再创建流,流的执行目标由调用线程当时的设备或上下文状态隐式决定。使用 green context 时,先为选定资源创建 green context,再从中创建流;提交到该流的任务会关联到对应资源。示例中使用 cudaGreenCtxCreate 取得句柄,再传给 cudaExecutionCtxStreamCreate 创建流,其余代码仍沿用原有的流式 CUDA 编程方式。需要面向整卡时可通过 cudaDeviceGetExecutionCtx 获取设备级上下文,现有应用也可保持不变。

适用场景

官方列出的是:单进程内并发运行多个相互独立的负载;需要更可预测的性能而非尽力而为的流调度;希望显式控制 GPU 执行资源的划分;受工作队列控制不足影响而性能下降;以及正在转向单进程内的流水线式或多组件执行。典型例子包括分布式训练与推理中的通信/GEMM 重叠,以及 NVIDIA Holoscan 这类对延迟敏感的处理平台。来源也提示,advanced 场景常同时使用 green context 划分和流优先级。

限制与待核实事项

来源给出的延迟数据来自其自建示例(关键内核为小型整数负载,批量内核为 20 次背靠背的 4M 线程 sqrtf 循环),在 148 SM 的 Blackwell GPU 上测得:green context 划分模式 0.007 ms,默认上下文加高优先级关键流 0.140 ms,默认上下文且两流同优先级 3.727 ms。该数据为单一硬件与特定负载下的测量结果,不能直接外推到其他 GPU、内核或工作负载。

划分 SM 也意味着批量负载可用 SM 减少,属于以牺牲批量吞吐换取关键任务延迟的取舍。来源提到创建与销毁 green context 开销较小,且不会隐式同步无关 GPU 工作。使用前需注意其需要 CUDA 13.1 或更新版本,具体 API 细节、参数含义与错误处理应以官方 CUDA Programming Guide 和 Runtime API 文档为准,本文未做运行验证。

来源与核对说明

  1. NVIDIA 开发者官方博客 ↗https://developer.nvidia.com/blog/control-how-your-gpu-shares-work-with-green-contexts/

本文经 AI 整理及独立自动校对,未做运行验证;自动校对仍可能遗漏问题,请以原始资料为准。

这篇内容对你有帮助吗?

点赞人数由服务器记录,收藏保存在当前浏览器。

继续阅读

deepagents 0.7.28 修复 ContextHubBackend.glob 路径处理 →

Dify 1.17.1 版本更新:知识库错误修复、工作流交互与权限改进 →

NVIDIA 将 Run:ai 平台开源并纳入 DSX AI Factory →

NVIDIA cuOpt 推出 mPDLP 多 GPU 线性规划求解器 →