假设我编译了一个使用 CUDA Toolkit 的程序,并且我在不支持所需计算能力或者甚至没有支持 CUDA 接口的 NVIDIA GPU 的硬件上运行该程序,我如何从编程中知道 -等级?为了回退到 CPU 程序或显示错误消息。
问问题
838 次
1 回答
4
如果您已经安装了带有示例的 CUDA 工具包,我建议您查看 deviceQuery 项目。这显示了有关如何查询设备的属性(例如 Capability Major/Minor 版本号)的示例。
附上短片:
cudaSetDevice(dev);
cudaDeviceProp deviceProp;
cudaGetDeviceProperties(&deviceProp, dev);
printf("\nDevice %d: \"%s\"\n", dev, deviceProp.name);
// Console log
cudaDriverGetVersion(&driverVersion);
cudaRuntimeGetVersion(&runtimeVersion);
printf(" CUDA Driver Version / Runtime Version %d.%d / %d.%d\n", driverVersion/1000, (driverVersion%100)/10, runtimeVersion/1000, (runtimeVersion%100)/10);
printf(" CUDA Capability Major/Minor version number: %d.%d\n", deviceProp.major, deviceProp.minor);
至于系统是否没有 GPU,您可以使用下面的代码片段,尽管我相信您此时需要拥有静态库。
int deviceCount = 0;
cudaError_t error_id = cudaGetDeviceCount(&deviceCount);
if (error_id != cudaSuccess)
{
printf("cudaGetDeviceCount returned %d\n-> %s\n", (int)error_id, cudaGetErrorString(error_id));
exit(EXIT_FAILURE);
}
// This function call returns 0 if there are no CUDA capable devices.
if (deviceCount == 0)
{
printf("There are no available device(s) that support CUDA\n");
}
else
{
printf("Detected %d CUDA Capable device(s)\n", deviceCount);
}
于 2013-02-14T00:14:04.273 回答