我是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);
}
Run Code Online (Sandbox Code Playgroud)
结果:
Device 0 has compute capability 4199672.0.
Device 1 has compute capability 4199672.0.
Device 2 has compute capability 4199672.0.
.
.
Run Code Online (Sandbox Code Playgroud)
cudaGetDeviceProperties返回两个主要和次要字段.你能告诉我这是什么4199672.0.意思吗?
dia*_*ler 12
计算能力是设备的"功能集"(硬件和软件功能).您可能听说过NVIDIA GPU架构名称为"Tesla","Fermi"或"Kepler".这些架构中的每一个都具有以前版本可能没有的功能.
在硬盘驱动器上的CUDA工具包安装文件夹中,查找文件CUDA_C_Programming_Guide.pdf(或google),然后查找附录F.1.它描述了不同计算功能之间的功能差异.
正如 @dialer 提到的,计算能力是 CUDA 设备的一组与计算相关的功能。随着 NVidia CUDA API 的发展,“计算能力”的数量不断增加。在撰写本文时,NVidia 最新的 GPU 为计算能力 3.5。您可以通过查看维基百科上的此表来详细了解这些差异的含义。
正如@aland 所建议的,您的调用可能失败,您得到的是使用未初始化变量的结果。你应该cudaGetDeviceProps()用某种错误检查来包装你的调用;看
讨论执行此操作的选项。