gpt4 book ai didi

CUDA并发执行

转载 作者:太空宇宙 更新时间:2023-11-04 08:36:11 25 4
gpt4 key购买 nike

我希望回答我的问题不需要很多时间,因为这是关于我对这个话题的理解。

因此,问题在于并发内核执行的 block 和网格大小。

首先,让我介绍一下我的显卡:它是 GeForce GTX TITAN,这是它的一些特性,我认为这些特性在这个问题中很重要。

CUDA Capability 主要/次要版本号:3.5

全局内存总量:6144 MBytes(6442123264字节)

(14) 个多处理器,(192) 个 CUDA 核心/MP:2688 个 CUDA 核心

经纱尺寸:32

每个多处理器的最大线程数:2048

每个 block 的最大线程数:1024

现在,主要问题是:我有一个内核(它执行稀疏矩阵乘法,但它并不那么重要)并且我想同时(!)在一个 GPU 上的多个流中启动它,计算不同的矩阵乘法。请再次注意同时要求 - 我希望所有内核在一个时刻开始,并在另一个时刻结束(所有内核!),因此当这些内核仅部分重叠时的解决方案不能满足我。我想要最大化并行内核的数量也很重要,即使我们因此而损失了一些性能。

好吧,让我们考虑一下我们已经有了内核,我们想以最好的方式指定它的网格和 block 大小。

查看卡的特征,我们看到它有 14 个 sm 和 3.5 的能力,允许运行 32 个并发内核。因此,我在这里得出的结论是启动 28 个并发内核(14 个 SM 每个内核两个)将是最好的决定。第一个问题 - 我在这儿吗?

现在,我们再次要优化每个内核的 block 和网格大小。好的,让我们看一下这个特征:

每个多处理器的最大线程数:2048

我是这样理解的:如果我们启动一个有 1024 个线程和 2 个 block 的内核,这两个 block 将同时计算。如果我们启动一个有 1024 个线程和 4 个 block 的内核,那么将依次计算两对 block 。因此,我得出的下一个结论是,启动 28 个内核,每个内核有 1024 个线程也是最好的解决方案——因为这是它们可以在每个 SM 上同时执行的唯一方法。第二个问题——我在这儿吗?或者有更好的解决方案如何获得同时执行?

如果你只说我对不对就太好了,如果你能指出我错误的地方或提出更好的解决方案,我将不胜感激。

感谢您阅读本文!

最佳答案

已经有很多关于并发内核的问题。您可能会搜索并查看其中的一些内容。您必须考虑寄存器使用、 block 、线程和共享内存使用等。当您不提供有关寄存器使用或共享内存使用的信息时,您的问题无法准确回答。最大化并发内核部分是一个占用问题,因此您也应该研究它。

然而,您想要观察最大并发内核数。正如您已经指出的,那是 32。

您有 14 个 SM,每个 SM 最多可以有 2048 个线程。 14x2048/32 = 每个内核 896 个线程(即 block * 每个 block 的线程数)

如果线程 block 大小为 128,则每个内核有 7 个 block 。 7 个 block * 32 个内核 = 总共 224 个 block 。当我们将其除以 14 个 SM 时,我们得到每个 SM 16 个 block ,这恰好与 spec limit 完全匹配。 .

所以上面的分析,32 个内核,每个内核 7 个 block ,每个 block 128 个线程,将是仅考虑您提供的数据后可以完成的分析范围。

如果这对您不起作用,我一定会确保我已经满足了 concurrent execution 的要求。然后关注每个线程或共享内存的寄存器,看看在这种情况下它们是否是“占用”的限制因素。

老实说,我对您亲眼目睹您描述的完美场景不抱太大希望,但要坚持下去。我会很高兴感到惊讶。仅供引用,如果我尝试做这样的事情,我肯定会在 linux 而不是 windows 上尝试,特别是考虑到您的卡是 GeForce 卡,在 windows 下受 WDDM 限制。

您的理解似乎有问题。像这样的语句:

if we launch a kernel with 1024 threads and 2 blocks, these two blocks will be computed simultaneously. if we launch a kernel with 1024 threads and 4 blocks, then two pairs of block will be computed one after another

对我来说没有意义。 block 将以调度程序认为合适的任何顺序计算,但没有规定同时计算两个 block ,而是两个两个地计算四个 block 。

关于CUDA并发执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26151910/

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