1
1
1
DTK开发
HIP流并发问题
2024-08-02 15:12:31
81

问题描述:

我在使用 -fgpu-default-stream=per-thread  选项进行流并发(https://developer.nvidia.com/blog/gpu-pro-tip-cuda-7-streams-simplify-concurrency/)时,发现 HIP 不能实现完全并发。具体来说,我编写了一个 demo,并在 CUDA 和 HIP 平台上进行了对比测试。测试环境如下:

  • CUDA 平台:NVIDIA GeForce GTX 1050(cuda 12.0)
  • HIP 平台:gfx928(dtk24.04)

如图所示,在 CUDA 平台上(右图),多流可以实现完全并发,但在 HIP 平台上(左图),多流的并发效果不明显。

实验编译命令:
CUDA:nvcc --default-stream per-thread stream_cudaexample.cu
HIP:hipcc --offload-arch=gfx928 -fgpu-default-stream=per-thread stream_hipexample.hip

问题详情:
在 CUDA 平台上,上述代码可以实现多流的完全并发,性能表现符合预期。然而,在 HIP 平台上,即使使用 -fgpu-default-stream=per-thread  选项,流的并发效果并不明显。观察到的现象是多流并没有完全并发执行,导致性能下降。

问题求解:

  • 1、是否有其他编译选项或设置能够改善 HIP 流并发的效果?
  • 2、HIP 对 -fgpu-default-stream=per-thread  选项的支持情况如何?
  • 3、是否存在其他方式可以在 HIP 中实现 CUDA 的完全并发效果?

希望能够得到社区的帮助和建议,感谢!

全部评论(2)
只看楼主
网
网友zbtyFP
1楼
您好,我们分析了这个现象,原因是第一次使用Stream时会进行相关资源的初始化,导致所有流启动核函数的时间较长。若您尝试使用所有Stream重新启动一下核函数则并发正常。
2024/8/2
B
brucecui
回复 @网友zbtyFP
感谢大佬!很强,解决了问题
2024/8/2
没有更多内容了
--
楼主
Level.4
0 帖子
楼主热帖
暂无数据