【问题标题】:Threads per block in CUDA 7CUDA 7 中每个块的线程数
【发布时间】:2015-08-23 18:45:25
【问题描述】:

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

在 CUDA 3.0 及更高版本中,每个线程块最多可以有 1024 个线程。一些早期的 CUDA 版本只允许一个块中最多 512 个线程

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

this question 似乎也有一个过时的信息(在 2012 年提到的书出版时它已经过时了)

【问题讨论】:

  • 我很确定它没有这么说
  • 是的,我刚刚发现了。它写得很糟糕。线程数与 CUDA 版本无关,它与 CUDA 计算能力相关。 CUDA 3 和计算能力 2.0 硬件几乎同时出现的事实并不意味着它们是一回事
  • @talonmies 感谢您的贡献!它帮助我更好地理解罗伯特的答案

标签: cuda gpu


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-10-15
      • 2011-05-22
      • 2015-12-27
      • 2018-07-31
      • 2012-07-19
      • 2016-01-19
      • 2022-12-05
      相关资源
      最近更新 更多