CUDA:计算能力是否影响活动线程的最大数量?

CUDA:计算能力是否影响活动线程的最大数量?,cuda,Cuda,如果我有一个支持CC 3.0的设备,这意味着它的最大活动线程数等于每个多处理器2048个。如果将CC设置为2.0(compute_20,sm_20),是否意味着每个多处理器的最大活动线程数将只有1536个,或者计算能力对此没有影响 还是会对共享内存大小产生影响?我希望真正了解这些事情的人会回答,但我现在会尽我所能回答 CUDA设计用于可扩展性;内核将扩展到可以使用的所有资源。因此,如何编译内核并不重要;它将填满所有可用的线程,除非您做了一些阻止它这样做的事情,比如启动它时每个块有768个线程 现

如果我有一个支持CC 3.0的设备,这意味着它的最大活动线程数等于每个多处理器2048个。如果将CC设置为2.0(compute_20,sm_20),是否意味着每个多处理器的最大活动线程数将只有1536个,或者计算能力对此没有影响


还是会对共享内存大小产生影响?

我希望真正了解这些事情的人会回答,但我现在会尽我所能回答

CUDA设计用于可扩展性;内核将扩展到可以使用的所有资源。因此,如何编译内核并不重要;它将填满所有可用的线程,除非您做了一些阻止它这样做的事情,比如启动它时每个块有768个线程

现在,GPU线程不像CPU内核;如果不使用所有线程,您不会失去进行计算的能力。compute capability 3.0设备上的流式多处理器(SM)可以同时管理2048个线程,但每刻度只能执行256条指令。还有其他限制;e、 g.如果你在做32位浮点加法,它每刻度只能做192位浮点加法。对32位整数进行左移位?每滴答只有64次


拥有更多线程的意义在于延迟原因——当一个线程由于某种原因被阻塞时,例如等待从内存中获取值或获取算术指令的结果,SM将运行另一个线程。使用更多线程的意义在于,它为您提供了更多隐藏延迟的机会:当某些指令被阻塞、等待数据时,有更多的机会进行独立工作。

您是否试图比较不同计算能力的GPU,或者询问如果您为Compute20编译内核,但在compute capability 3.0的GPU上运行会发生什么?(或其他什么?)我的意思是,如果我在支持compute capability 3.0的设备上为compute_20编译内核,会发生什么,它会减少每个多处理器的最大活动线程数,还是与此无关?