【发布时间】:2013-03-29 10:19:57
【问题描述】:
我编写了一个简单的应用程序来检查计算机上是否有 NVIDIA CUDA。如果找到支持 CUDA 的设备,它只会显示 true。
我将应用程序发送到第二台 PC,但应用程序没有运行 - 出现一个对话框,显示找不到 cudart.dll。我想检查 CUDA 是否存在,它需要 CUDA 来执行此操作:)
我正在使用 CUDA 5.0、VS2012、VC++11、Windows 7。
我能否以某种方式编译应用程序,使所有 CUDA 库都在可执行文件中?
所以场景是:
- 我的应用程序已编译并发送到计算机
- 计算机可以:
- 正在运行windows、linux(我的应用与系统兼容)
- 有没有显卡
- 是否有 nvidia gpu
- 是否安装了 CUDA
- 只有当 2.3 和 2.4 为正(GPU 和 CUDA)时,我的应用才应返回
true
【问题讨论】:
-
那将是静态链接。为什么不动态链接它们?此外,您可以在链接之前检查 cudart.dll 是否存在。
-
我想要一个可执行文件(或一个 DLL,它是某个框架的插件)。我不想发送 2 个文件。如果我错了,请纠正我,但缺少 cudart.dll 并不意味着不存在 CUDA-GPU。NVIDIA 图形驱动程序(对于普通用户)是否包含 CUDA 库?
-
我很困惑 - 您是要确保(或检查)CUDA 运行时库的可用性,还是支持 CUDA 的硬件的可用性,或两者兼而有之? (据我所知,后者依赖于前者)。
-
实际上 - 两者都有,因为 CUDA 硬件在没有 CUDA 运行时是无用的。但是运行时的存在并不意味着 GPU 是兼容的(允许仿真)
-
@Xlaudius:没有 CUDA 运行时,CUDA 硬件不是“无用”。 CUDA 驱动程序 API 可用于运行 CUDA 代码,而无需运行时 API,并且驱动程序 API 库随所有 Windows 平台上的驱动程序一起提供。听起来您在问题中将两件事与一件事混为一谈-如何检测有效的运行时 API 库的存在,然后如何检测硬件。第一个答案可能是延迟加载运行时 API 库并处理失败时发生的情况。
标签: c++ windows visual-c++ cuda