【发布时间】:2018-12-25 23:47:06
【问题描述】:
- 假设您的 GPU 有 8 个 SM。那么如果你执行一个有足够多的块(比如说 200 个)的 CUDA 内核,是否会使用所有 8 个 SM 来执行?
现在只考虑一个 SM。假设有 8 个活动块,每个块有 256 个线程(8 个线程/块)。 Max active warps=64.
内核启动后,8 个活动块会并行处理吗?
我知道,warp 将由每个 SM 中的调度程序进行调度。这意味着warp不会并行执行,而是并发执行。
这是我真正的问题。我遇到了特定内核的低延迟问题。这是限制因素。 我只想知道这种情况下的最佳调整是什么。因为如果活动块没有至少同时执行,那么增加活动块的数量是没有意义的。因为,至少有 64 个活动扭曲的活动块会表现得更好(忽略寄存器限制,因为我可以相应地调整它)。
【问题讨论】:
-
1.是的,2. 取决于内核所需的内核和资源以及 GPU 上可用的资源。 3. 根据数据可用性,最多可以同时执行 2048 个线程,但不是所有指令同时执行:交错每个 warp 的可执行 warp 指令。想想同步线程的可行性。
-
在运行单个内核时,您与 (2) 和 (3) 相关的场景是不可能的。
-
为什么说第2和第3不可能? - 爪子
-
我接受 1 和 3 的答案。但在第 2 次中,我试图提到有 12 个活动块,这意味着有足够的寄存器、共享内存和最大线程数来拥有 12 个活动块。我想知道这 12 个块是否也像扭曲一样并发执行,还是像 SM 一样并行执行 - Florent DUGUET
-
将 (2) 更改为 8 块 8 经线/块或 12 块 4 经线。假设满足所有资源限制,所有块/warp 将同时驻留在 SM 3.0-7.0 上,并且每个 SM warp 调度程序(每个 SM 4 个)将分配 1/4 的 warp。在每个周期,warp 调度程序将选择最符合条件的活动 warp 并执行 1-2 条指令(取决于架构)。 1 个 SM 的最大指令问题并行度为 4 个扭曲。飞行平行度的最大指令等于 64 经线的 SM 限制。
标签: parallel-processing cuda gpu