【问题标题】:CUDA device properties for GTX 970GTX 970 的 CUDA 设备属性
【发布时间】:2015-03-03 22:34:04
【问题描述】:

打电话时

cudaError_t cuda_error;

int device;
cuda_error = cudaGetDevice(&device);
assert(cudaSuccess == cuda_error);

cudaDeviceProp prop;
cuda_error = cudaGetDeviceProperties(&prop, device);
assert(cudaSuccess == cuda_error);

在带有

的 GTX 970 上
  • cuda 驱动程序 6.5.19,
  • 显示驱动程序版本 343.98,
  • Win7 Professional SP1 x64),

编译
-gencode=arch=compute_52,code="compute_52,sm_52"

我得到以下内存属性:

prop.totalGlobalMem == 0 

prop.sharedMemPerBlock == 49152 (48k).

我预计总内存约为 4GB 和每块 96kB 的共享内存,因为 GTX 970 使用 GM204。

我错过了什么吗?

提前感谢您的支持,
米歇尔

【问题讨论】:

  • GeForce GTX980 和 GTX970 具有支持这些特定 GPU 的 CUDA 6.5 工具包,其中推荐的最新 cuda 驱动程序是 v6.5.32。
  • 您是在 Visual Studio 中构建它吗?它是VS的快速版本吗?您是在构建 win32 项目还是 x64 项目?如果您将其构建为 win32 项目,则 4GB 不会是 32 位数量中通常可报告的数字,它可能显示为零。关于共享内存,sm_52 设备每个 SM(即每个多处理器)有 96KB 共享内存,但每个块只有 48KB 共享内存可用。所以 48KB 的数字是正确的。
  • @robert crovella:我正在从命令行构建,使用 VS 2012 Ultimate amd64,所以寻址 4GB 应该没有问题。我主要关心的是(或曾经是)每个块的共享内存,您已经回答了这个问题。如果您将其发布为答案,我会接受。
  • 如果您在命令行上传递类似 --machine 32 的内容,您将构建一个 32 位应用程序,并且有 4GB 的限制。
  • 打印出来怎么样?你如何打印出prop.totalGlobalMem 变量?您是否将其作为 64 位数量处理?否则,我不知道为什么它可能会报告 0。您还没有提供完整的 MCVE,所以只是猜测。

标签: c++ windows cuda


【解决方案1】:

我主要关心的是(或曾经是)每个块的共享内存

SM_52(和 SM_37)设备有96KB shared memory 可用每个多处理器(每个 SM),但其中只有 48KB 可供单个线程块使用。因此,报告每块 48KB 的共享内存是正确的。

引用上述链接的博客:

“嗯,GM204 更好,每个 SMM 的专用共享内存增加到 96KB。您无需进行任何更改即可利用此功能:每个线程块的最大共享内存仍为 48KB,"

【讨论】:

    猜你喜欢
    • 2016-01-21
    • 2020-08-14
    • 2013-01-25
    • 2011-08-28
    • 2023-03-04
    • 2020-08-20
    • 2019-02-15
    • 2017-01-28
    • 2011-10-05
    相关资源
    最近更新 更多