【问题标题】:How does the speed of CUDA program scale with the number of blocks?CUDA 程序的速度如何随着块数的增加而变化?
【发布时间】:2012-08-29 14:43:17
【问题描述】:

我正在研究 Tesla C1060,它包含 240 个处理器内核,计算能力为 1.3。知道每 8 个内核由单个多处理器控制,并且每个线程块都分配给单个多处理器,那么我预计启动 30 个块的网格应该与单个线程花费相同的执行时间堵塞。然而,事情并没有很好地扩展,即使每个块有 8 个线程,我也从来没有得到过这种很好的扩展。走到另一个极端,每个块有 512 个线程,当网格最多包含 5 个块时,我得到一个块的大致相同时间。当我将性能与在 8 核 CPU 机器上实现与 MPI 并行的相同任务进行比较时,这令人失望。 谁能给我解释一下?

顺便说一句,计算机实际上包含两张特斯拉卡,所以它是自动在它们之间分配块,还是我必须采取进一步措施确保两者都被充分利用?

编辑: 关于我的最后一个问题,如果我在同一台计算机上启动两个独立的 MPI 进程,我怎样才能让每个进程在不同的显卡上工作?

EDIT2:根据 Pedro 的要求,这里是一个图表,描绘了垂直访问的总时间(标准化为 1 )与并行块的数量。线程/块的数量 = 512。这些数字是粗略的,因为我观察到大量块的时间差异很大。

【问题讨论】:

  • 观察到的缩放距离预期缩放有多远?您可以在块数上添加缩放或效率图吗?
  • 三十块仍然太少,无法完全占用您的卡。您需要 per MP 3-8 个块来分摊所有调度延迟和架构开销。您应该查看 90 到 240 之间的块数,以在 C1060 上达到峰值吞吐量。
  • @talonmies 执行 240 个块的时间大约是执行 30 个块的时间的 9 倍。这意味着在 30 个块甚至更少时已经达到了最大吞吐量。
  • 要么运行非常小的块,要么计时不正确。 gt200 是一种架构,我做了很多工作,从我学到的移植 linpack 基准和编写大量线性代数代码中,你的结果毫无意义。无论如何
  • 我计时正确,块的大小上面已经说了。我现在发现,使我的代码不能很好地扩展的是全局内存访问。没有它,确实 30 个块的时间几乎和一个块一样。这可能是您错过的学习内容。

标签: cuda gpgpu gpu


【解决方案1】:

速度与块数不是简单的线性关系。这取决于一堆东西。例如,内存使用情况,一个块中执行的指令数等。

如果要进行多GPU计算,则需要修改代码,否则只能使用一张GPU卡。

【讨论】:

  • 对比我使用MPI的CPU性能和同样的任务,GPU也好不了多少,甚至没有一个数量级!使用其他 GPU 卡需要进行哪些修改?
  • "一个块可以分配给多个多处理器" --- 不是反过来吗?每个块完全驻留在一个 MP 中,但一个 MP 可以处理多个块。
  • @chaohuang 那么我认为整个语句应该从答案中删除,因为它不能解释与一个块相比并行执行多个块的速度。
  • CUDA 核心数无关。 Tesla C1060 拥有 30 个多处理器。您的性能将根据多处理器利用率和总线利用率进行扩展。例如,如果你有很多内存访问,你将需要至少 6 个 warp 来保持多处理器忙碌。您希望所有块都是 WARP_SIZE 线程的倍数。您必须在多个 GPU 上手动启动工作。 CUDA 没有提供跨多个设备透明地启动工作的机制。
【解决方案2】:

在我看来,您只是简单地使用了一个 C 程序并在 CUDA 中编译它而没有太多技巧。

亲爱的朋友,这不是要走的路。您必须设计代码以利用 CUDA 卡具有与常规 CPU 不同的内部架构这一事实。特别要考虑以下几点:

  • 内存访问模式 - GPU 中有许多内存系统,每个系统都需要考虑如何最好地使用它

  • 线程分歧问题 - 只有当您的大多数线程大部分时间都遵循相同的代码路径时,性能才会好

如果您的系统有 2 个 GPU,您可以同时使用这两个 GPU 来加速一些(合适的)问题。问题是两者的内存区域是分开的并且不容易被彼此“看到” - 你必须设计你的算法来考虑到这一点。

在 GPU 时代之前编写的典型 C 程序通常不容易移植,除非最初是考虑到 MPI 编写的。

要使每个 CPU MPI 线程与不同的 GPU 卡一起工作,您可以使用 cudaSetDevice()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 2015-08-11
    • 2022-01-10
    相关资源
    最近更新 更多