“计算能力”是什么意思w.r.t. CUDA?

时间:2012-08-15 16:26:44

标签: cuda definition

我是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.的含义是什么吗?

2 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:1)

正如@dialer所提到的,计算能力是您的CUDA设备的一组与计算相关的功能。随着NVidia的CUDA API的发展,“计算能力”数量也在增加。在撰写本文时,NVidia最新的GPU是Compute Capability 3.5。通过检查维基百科上的this table,您可以了解差异的含义。

正如@aland建议的那样,你的电话可能会失败,你得到的是using an uninitialized variable的结果。您应该使用错误检查功能或宏调用来包装cudaGetDeviceProps()调用;见

What is the canonical way to check for errors using the CUDA runtime API?

讨论最佳方法。