如何在CUDA中找到最大可用线程数?

如何在CUDA中找到最大可用线程数?,cuda,Cuda,不确定找到我的GPU最大可用线程数的最佳方法是什么。 我有以下代码: int deviceCount, device; int gpuDeviceCount = 0; struct cudaDeviceProp properties; cudaError_t cudaResultCode = cudaGetDeviceCount(&deviceCount); if (cudaResultCode != cudaSuccess) deviceCount = 0; /* machin

不确定找到我的GPU最大可用线程数的最佳方法是什么。 我有以下代码:

int deviceCount, device;
int gpuDeviceCount = 0;
struct cudaDeviceProp properties;
cudaError_t cudaResultCode = cudaGetDeviceCount(&deviceCount);
if (cudaResultCode != cudaSuccess)
    deviceCount = 0;
/* machines with no GPUs can still report one emulation device */
for (device = 0; device < deviceCount; ++device) {
    cudaGetDeviceProperties(&properties, device);
    if (properties.major != 9999) /* 9999 means emulation only */
    if (device==0)
    {
            printf("multiProcessorCount %d\n",properties.multiProcessorCount);
            printf("maxThreadsPerMultiProcessor %d\n",properties.maxThreadsPerMultiProcessor);
    }
}

原来总数是14*1536=21504。我感觉它太小了(我有一台特斯拉M2070)。

你的检查方法是正确的。
你可以检查英伟达CUDA SDK样本,SDK中的“设备查询”示例定义了它的良好的

每多处理器的最大线程数是线程数可以同时在飞行中的上限。其他限制因素通常会进一步限制数量。该值不会影响同时启动的线程数,并且对于找出最佳性能所需的线程数也不是很有用。
multiProcessorCount 14
maxThreadsPerMultiProcessor 1536