2

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

我正在使用 GeForce 560 Ti 和 8SM,每个 SM 48 核和每个 SM 2 个 warp 调度程序。

4

1 回答 1

2

每个块 350 个线程急剧增加的一个可能原因是该块消耗了太多资源,以至于 SM 一次不能处理多个块。您可以使用 CUDA 占用计算器根据内核的资源使用情况查看一个 SM 一次将处理多少块。

于 2012-07-20T17:03:55.200 回答