您好,我们分析了这个现象,原因是第一次使用Stream时会进行相关资源的初始化,导致所有流启动核函数的时间较长。若您尝试使用所有Stream重新启动一下核函数则并发正常。
问题描述:
我在使用 -fgpu-default-stream=per-thread 选项进行流并发(https://developer.nvidia.com/blog/gpu-pro-tip-cuda-7-streams-simplify-concurrency/)时,发现 HIP 不能实现完全并发。具体来说,我编写了一个 demo,并在 CUDA 和 HIP 平台上进行了对比测试。测试环境如下:
如图所示,在 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 选项,流的并发效果并不明显。观察到的现象是多流并没有完全并发执行,导致性能下降。
问题求解:
-fgpu-default-stream=per-thread 选项的支持情况如何?希望能够得到社区的帮助和建议,感谢!

暂无数据