CUDA 7 中每个块的线程数

Threads per block in CUDA 7

我在“大规模并行处理器编程(第 2 版) 中读到

Each thread block can have up to 1024 threads in CUDA 3.0 and later. Some earlier CUDA versions allow only up to 512 threads in a block

我最近下载了CUDA 7.0工具包,想知道以上信息是否适用于现在的版本。

this 问题似乎也有过时的信息(在 2012 年提到的书出版时已经过时了)

CUDA 7 仅支持计算能力 2.0 及更高版本的 CUDA 设备。所有此类设备每个块最多可支持 1024 个线程。

512 编号与具有计算能力 1.x 的设备有关,CUDA 7 不再支持此类设备。

注意计算能力和CUDA版本是两个不同的概念。

您可以使用 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/