【发布时间】:2016-02-12 14:46:47
【问题描述】:
在这个线程x64 allows less threads per block than Win32? 中有一个关于寄存器用完的问题。我的印象是 Nvidia 在 CUDA 7.5 及更高版本中已经放弃了对 x86 的支持。这可能是一个愚蠢的问题,但这是否意味着所有指针都需要两个寄存器?可能更少的线程/块将是未来的工作方式?
【问题讨论】:
标签: c++ cuda emgucv managed-cuda
在这个线程x64 allows less threads per block than Win32? 中有一个关于寄存器用完的问题。我的印象是 Nvidia 在 CUDA 7.5 及更高版本中已经放弃了对 x86 的支持。这可能是一个愚蠢的问题,但这是否意味着所有指针都需要两个寄存器?可能更少的线程/块将是未来的工作方式?
【问题讨论】:
标签: c++ cuda emgucv managed-cuda
这可能是一个愚蠢的问题,但这是否意味着所有指针都需要两个寄存器?
是的。 x64 模式下的所有指针都需要 2 个(32 位)寄存器进行存储。
那么可能更少的线程/块将是未来的工作方式?
当然,可以启动的块数应该没有影响。关于线程,是的,可能会对每个块的线程产生影响(因为每个块启动的线程乘积每个线程的寄存器必须低于机器限制),但正如我在回答您链接的问题时所说,通常可以使用那里提到的几种方法之一来解决对线程的限制。许多内核不会受到影响,因为它们没有“达到极限”。对于那些“达到极限”的内核,有一些成熟的技术可以减轻这种影响,并允许您在每个块中运行所需数量的线程,最多 1024 个。
最终这意味着出现的问题不是功能问题,而是性能优化问题之一,这个问题将一直存在。
【讨论】: