CUDA中有多少个网格

Cho*_* Ri 5 parallel-processing cuda gpu nvidia

GPU中可以有多少个CUDA网格?

GPU中可以同时存在两个网格吗?或者一个GPU设备只有一个网格?

Kernel1<<gridDim, blockDim>>(dst1, param1);
Kernel1<<gridDim, blockDim>>(dst2, param2);
Run Code Online (Sandbox Code Playgroud)

以上两个内核是同时还是顺序运行的?

Rob*_*lla 8

如果如上所述发布了两个内核,它们将被序列化(它们将按顺序运行).这是因为没有任何其他代码(即切换流),两个内核将被发布到相同的cuda流.发出到同一个流的所有cuda调用都是按顺序执行的,即使你认为你应该看到其他因为你正在使用cudaMemcpyAsync或类似的东西.

当然可能有多个内核彼此异步运行(因此可能同时运行)但是必须使用cuda流API来实现这一点.

您可能需要查看" CUDA C程序员指南 "中的第3.2.5节"异步并发执行",以了解有关流和并发内核执行的更多信息.此外,nvidia CUDA SDK中有许多示例,例如简单的流,这些示例将说明这些概念.该并行内核示例展示了如何同时运行多个内核(使用流).请注意,并发运行内核需要计算能力2.0或"更高"的硬件.

另外,要回答您的第一个问题,请参阅CUDA C编程指南的第3.2.5.2节,"设备可以同时执行的最大内核启动次数因设备而异,但某些设备可能高达128"

作为参考,"网格"是与单个内核启动相关联的整个线程数组.

  • 您还应该回答最初的问题:"GPU上可以有多少[并发]网格" - 1表示CC <2.0,16表示2.0 <= CC <= 3.0,32表示CC = 3.5. (5认同)