gpt4 book ai didi

CUDA - 限制使用的 SM 数量

转载 作者:太空狗 更新时间:2023-10-29 15:41:17 45 4
gpt4 key购买 nike

有什么方法可以明确限制在我的程序运行期间使用的 GPU 多处理器的数量?我想计算我的算法如何随着多处理器数量的增加而扩展。

如果有帮助:我正在使用 CUDA 4.0 和计算能力为 2.0 的设备。

最佳答案

啊啊啊……我知道问题所在了。我在写论文的时候自己玩了一下。

没有明确的方法可以做到这一点,但是您可以通过让一些 block 什么都不做来尝试“破解”它。

  • 如果你从不启动更多的 block ,因为有多处理器,那么你的工作很简单——只需启动更少的 block 。一些 SM 保证没有工作,因为一个 block 不能拆分成多个 SM。
  • 如果您启动更多的 block 并且您只是依靠驱动程序来安排它们,请使用不同的方法:只启动尽可能多的 block ,您的 GPU 可以处理,如果其中一个 block 完成了它的工作,而不是终止它,循环回到开头并获取另一条数据进行处理。您的程序的性能很可能不会下降;如果你仔细安排你的工作,它甚至可能会变得更好:)
  • 最大的问题是当您的所有 block 都同时在 GPU 上运行时,但每个 SM 有多个 block 。然后您需要正常启动,但手动“禁用”一些 block 并命令其他 block 为它们完成工作。问题是 - 禁用哪些 block 以保证一个 SM 正常工作而另一个不工作。

根据我自己的实验,1.3 设备(我有 GTX 285)按顺序安排 block 。因此,如果我在 30 个 SM 上启动 60 个 block , block 1-30 被安排到 SM 1-30,然后 31-60 再次从 1 到 30 到 SM。因此,通过禁用 block 5 和 35,SM 5 实际上不是做任何事情。

但请注意,这是我 2 年前进行的私有(private)实验观察。 NVIDIA 绝不确认、支持、维护等等,并且可能会随着新的 GPU 和/或驱动程序发生变化(或已经发生变化)。

我会建议 - 尝试使用一些简单的内核来做很多愚蠢的工作,看看在各种“启用”/“禁用”配置上计算需要多长时间。如果幸运的话,您会发现性能下降,这表明 2 个 block 实际上是由单个 SM 执行的。

关于CUDA - 限制使用的 SM 数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8278435/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com