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

能否让不同流上的多个CUDA图主机执行节点并发执行?

问题:如何实现不同CUDA流上主机执行节点的并发?

问题背景

希望通过CUDA图的主机执行节点(cudaGraphAddHostNode)在主机端实现流的阻塞与解除逻辑,替代设备端等待核函数,同时保留CUDA图的使用方式。

测试场景

编写了两个CUDA图:

  • 图1:依次执行主机到设备拷贝 → 调用主机函数循环等待event变量不为0(阻塞逻辑)→ 设备到主机拷贝
  • 图2:依次执行设备内存memset操作 → 调用主机函数将event变量设为1(触发阻塞解除)

测试流程:在一个流上启动图1,在另一个独立流上启动图2,之后同步第一个流。

现象

两个图均正常启动,图1的“等待”主机函数执行后成功阻塞对应流,但图2的“触发”主机函数始终未执行。

推测原因

CUDA可能会序列化同一个上下文内的所有主机执行节点,导致“触发”节点一直等待“等待”节点完成。CUDA文档也明确说明:无强制顺序的主机函数(如独立流中的)执行顺序未定义,可能被序列化。

已尝试方案

从不同主机线程启动两个图,但问题仍未解决。

疑问

是否存在可行方法实现不同流上主机执行节点的并发?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 07:57:08