检查CUDA存在需要CUDA的程序?

Xla*_*ius 1 c++ windows cuda visual-c++

我写了一个简单的应用程序来检查计算机上是否有NVIDIA CUDA.如果找到支持CUDA的设备,它只显示true.

我将应用程序发送到第二台PC,并且应用程序没有运行 - 出现了一个对话框,显示找不到cudart.dll.我想检查CUDA是否存在,它需要CUDA来做:)

我正在使用CUDA 5.0,VS2012,VC++ 11,Windows 7.

我可以用一种方式编译应用程序,所有CUDA库都在可执行文件中吗?


所以场景是:

  1. 我的应用程序已编译并发送到计算机
  2. 电脑可以:
    1. 运行Windows,Linux(我的应用程序与系统兼容)
    2. 有没有gpu
    3. 有没有nvidia gpu
    4. 是否安装了CUDA
  3. 我的应用程序应该true只返回2.3和2.4为正(GPU与CUDA)

tal*_*ies 6

作为开场评论,我认为编辑中的步骤顺序和数量不正确.它应该是:

  1. 程序启动并尝试加载运行时API库
  2. 如果存在运行时库,请尝试使用它来枚举设备.

如果步骤1失败,则您没有必要的运行时支持,并且无法使用CUDA.如果2失败,则系统中不存在兼容的驱动程序和GPU,并且无法使用CUDA.如果他们都过去了,你很高兴.

在步骤1中,您希望dlopen在Linux 上使用类似的东西并处理返回状态.在Windows上,您可能希望使用DLL延迟加载机制(对不起,不是Windows程序员,不能告诉您更多).

在这两种情况下,如果库加载,则cudaGetDeviceCount通过适当的主机OS API 获取地址并调用它.这告诉您是否有可以枚举的兼容GPU.在找到明显可用的GPU后,您所做的就由您决定.我会检查计算状态并尝试在其上建立一个上下文.这将确保存在功能齐全的运行时/驱动程序组合并且一切正常.