我正在尝试使用 CUDA 来获取兴趣。在其中一个实验中,我有一个小内核,它只在 for 循环中运行了 1000 万次。我发送 1 个块,然后将每个块的线程数从 1 增加到 1024。然后我绘制了执行以查看它是如何变化的。结果是在每块大约 350 个线程处急剧上升,然后在逐渐的时刻急剧上升。执行时间变为每块 1024 个线程时的 2 倍,表明至少有一个线程已被阻塞。实际的图表就像一个递增的阶梯。我想了解的是这些上升的原因和数量取决于。我试图了解它与 SM、cuda 核心等的数量有关。
我正在使用 GeForce 560 Ti 和 8SM,每个 SM 48 核和每个 SM 2 个 warp 调度程序。