我是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.
的含义是什么吗?
答案 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?
讨论最佳方法。