23

我是 CUDA 编程的新手,对它了解不多。您能告诉我“CUDA 计算能力”是什么意思吗?当我在我的大学服务器上使用以下代码时,它向我显示了以下结果。

for (device = 0; device < deviceCount; ++device) 
{ 
    cudaDeviceProp deviceProp; 
    cudaGetDeviceProperties(&deviceProp, device); 
    printf("\nDevice %d has compute capability %d.%d.\n", device, deviceProp.major, deviceProp.minor);      
}

结果:

Device 0 has compute capability 4199672.0.
Device 1 has compute capability 4199672.0.
Device 2 has compute capability 4199672.0.
.
.

cudaGetDeviceProperties 返回两个主要和次要字段。你能告诉我这是什么4199672.0.意思吗?

4

2 回答 2

23

计算能力是设备的“功能集”(硬件和软件功能)。您可能听说过 NVIDIA GPU 架构名称“Tesla”、“Fermi”或“Kepler”。这些架构中的每一个都具有以前版本可能没有的功能。

在硬盘驱动器上的 CUDA 工具包安装文件夹中,查找文件CUDA_C_Programming_Guide.pdf(或 google),然后找到附录F.1。它描述了不同计算能力之间的特征差异。

于 2012-08-15T18:19:31.203 回答
5

正如@dialer 所提到的,计算能力是您的 CUDA 设备的一组与计算相关的功能。随着 NVidia 的 CUDA API 的发展,“计算能力”的数量也在增加。在撰写本文时,NVidia 最新的 GPU 是 Compute Capability 3.5。您可以通过查看Wikipedia 上的此表来获取有关差异含义的一些详细信息。

正如@aland 建议的那样,您的调用可能失败了,而您得到的是使用未初始化变量的结果。你应该cudaGetDeviceProps()用某种错误检查来包装你的电话;看

使用 CUDA 运行时 API 检查错误的规范方法是什么?

讨论执行此操作的选项。

于 2013-12-09T18:46:04.073 回答