2

假设我编译了一个使用 CUDA Toolkit 的程序,并且我在不支持所需计算能力或者甚至没有支持 CUDA 接口的 NVIDIA GPU 的硬件上运行该程序,我如何从编程中知道 -等级?为了回退到 CPU 程序或显示错误消息。

4

1 回答 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 回答