1

在这个线程中,x64 允许的每个块的线程数比 Win32 少吗?有一个关于寄存器用完的问题。我的印象是 Nvidia 在 CUDA 7.5 及更高版本中已经放弃了对 x86 的支持。这可能是一个愚蠢的问题,但这是否意味着所有指针都需要两个寄存器?可能更少的线程/块将是未来工作的方式?

4

1 回答 1

4

这可能是一个愚蠢的问题,但这是否意味着所有指针都需要两个寄存器?

是的。x64 模式下的所有指针都需要 2 个(32 位)寄存器进行存储。

可能更少的线程/块将是未来工作的方式?

当然,对可以启动的区块数量应该没有影响。关于线程,是的,可能会对每个块的线程产生影响(因为每个块启动的线程乘积每个线程的寄存器必须低于机器限制),但正如我在回答您链接的问题时所说,通常可以使用那里提到的几种方法之一来解决对线程的限制。许多内核不会受到影响,因为它们没有“达到极限”。对于那些“超出限制”的内核,有一些成熟的技术可以减轻这种影响,并允许您在每个块中运行所需数量的线程,最多 1024 个。

最终,这意味着提出的问题与其说是能力问题,不如说是性能优化问题,这个问题永远存在。

于 2016-02-12T14:51:42.847 回答