用于 CUDA 的 x64 与 x86

x64 vs x86 for CUDA

在此线程 中,有一个关于 运行 寄存器不足的问题。我的印象是 Nvidia 在 CUDA 7.5 及更高版本中放弃了对 x86 的支持。这可能是一个愚蠢的问题,但这是否意味着所有指针都需要两个寄存器才能继续运行?并且可能更少 threads/block 将是事情向前发展的方式?

This may be a foolish question but does that mean that all pointers are going to require two registers going forward?

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

And that potentially less threads/block will be the way things work going forward?

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

最终这意味着提出的问题不是能力之一,而是性能优化之一,这个问题将永远存在出席。