【问题标题】:Can we run cuda accelerated program without toolkit installed?我们可以在没有安装工具包的情况下运行 cuda 加速程序吗?
【发布时间】:2018-05-23 23:36:09
【问题描述】:

我编写了一个处理 cuda 加速的 c++ dll,并公开了它的一些功能以在 c# 控制台应用程序中使用。在我的工作电脑上一切正常。但是我在另一台电脑上遇到了问题:

工作电脑:i7 3770; Nvidia GT 710(支持 CUDA); CUDA 工具包:已安装
在这台电脑上可以正常使用

另一台电脑:Xeon Octa-core 2.6GHz; Nvidia Quadro 2000(GPU-Z 程序将其标记为支持 cuda); CUDA 工具包:未安装
应用程序(c# 控制台和 c++ dll)崩溃并出现错误:无法加载 dll!

第二台计算机有什么问题?
主要问题:是否需要安装 CUDA Toolkit 才能运行 cuda 加速应用程序?
如果是,那么在目标计算机上没有安装 CUDA 工具包的情况下,其他应用程序(Photoshop 等)如何做到这一点?


编辑:我发现程序因一个简单的添加函数(来自 DllImport)而崩溃,而不是因为 CUDA 函数。但是在正常工作的计算机上一切正常!

代码文件: dllmain.cpp:https://drive.google.com/open?id=1_lLmSOVB2AIgXOB-svpCJVQeaJlwQjWI

cudamain.cu: https://drive.google.com/open?id=1BkKBEt5Y528phUXNP6lq1UTY7nD8pvxy

Program.cs:https://drive.google.com/open?id=1NNTG4fr73ojvGD8qgJdCL2d0HCq2R16n

【问题讨论】:

  • 当您只想运行为 CUDA 编译的程序时,不需要安装工具包。但是,您需要与 NVIDIA 驱动程序捆绑在一起的 CUDA 运行时,并且显然需要 NVIDIA grpahics 卡。像 Photoshop 这样的东西很可能不依赖于 CUDA,而是使用更通用的 OpenCL,它具有更广泛的硬件支持。
  • @HenriMenke 感谢您的意见!但是程序由于一个简单的添加功能而崩溃,并说无法加载 dll。它在我的工作计算机上运行良好。
  • 你没有提供任何细节。仅仅说“它崩溃了”是不够的。不要让我们猜测。
  • @DavidHeffernan 当 c# 控制台调用使用 DllImport 声明并且最初在 dllmain.cpp 中的 add 函数时它崩溃了!我的主计算机上没有错误,但程序在其他计算机上崩溃了!
  • 不要发布站点链接。在此处发布minimal reproducible example。不要说“它崩溃了”。逐字提供错误消息。

标签: c++ dll cuda dllimport


【解决方案1】:

我终于解决了这个问题。

问题: 我在命令提示符下复制了以下命令以查找依赖项:
dumpbim /dependents path_to_dll
依赖项是:cudart64_90.dll、VCRUNTIME140.dll、api-ms-win-crt-runtime-l1-1-0.dll、KERNEL32.dll
dumpbin 是位于以下位置的应用程序:C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\bin\Hostx64\x64

解决办法:我刚刚把cudart64_90.dll复制到了应用目录下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-05
    • 2016-08-14
    • 2014-03-16
    • 2016-12-16
    • 2020-01-05
    • 1970-01-01
    • 2015-01-08
    相关资源
    最近更新 更多