我读了' 编程大规模并行处理器(第2版)
每个线程块在CUDA 3.0及更高版本中最多可包含1024个线程。一些早期的CUDA版本在块中只允许最多512个线程
我最近下载了CUDA 7.0工具包,想知道上述信息是否与现在的版本相关。
this问题似乎也有过时的信息(2012年上述书出版时已经过时)
答案 0 :(得分:3)
CUDA 7仅支持计算能力2.0及更高版本的CUDA设备。所有这些设备每个块最多可支持1024个线程。
512号码与计算能力1.x的设备有关,而CUDA 7不再支持此类设备。
请注意,计算能力和CUDA版本是两个不同的概念。
答案 1 :(得分:1)
您可以使用cudaGetDeviceProperties
函数查找GPU支持的每个块的线程数:http://developer.download.nvidia.com/compute/cuda/4_1/rel/toolkit/docs/online/group__CUDART__DEVICE_g5aa4f47938af8276f08074d09b7d520c.html
#include <stdio.h>
int main() {
int nDevices;
cudaGetDeviceCount(&nDevices);
for (int i = 0; i < nDevices; i++) {
cudaDeviceProp prop;
cudaGetDeviceProperties(&prop, i);
printf("Device Number: %d\n", i);
printf(" Device name: %s\n", prop.name);
printf(" Max threads per block: %d\n", prop.maxThreadsPerBlock);
}
}
此代码改编自http://devblogs.nvidia.com/parallelforall/how-query-device-properties-and-handle-errors-cuda-cc/