我是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);
}
RESULT:
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 回答
计算能力是设备的“功能集”(硬件和软件功能) . 您可能听说过NVIDIA GPU架构名称为“Tesla”,“Fermi”或“Kepler” . 这些架构中的每一个都具有以前版本可能没有的功能 .
在硬盘驱动器上的CUDA工具包安装文件夹中,查找文件
CUDA_C_Programming_Guide.pdf
(或谷歌),然后找到附录F.1
. 它描述了不同计算功能之间的功能差异 .正如@dialer所提到的,计算能力是您的CUDA设备's set of computation-related features. As NVidia'的CUDA API开发,'Compute Capability'数量增加 . 在撰写本文时,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?
讨论最佳方法 .