1

这是我的第一篇文章,如果我不清楚或未能完全遵守发帖规则,请接受我的歉意。无论如何,我已经为我自己的问题进行了广泛的准备。

与:

  • Windows 7 企业版 6.1.7600
  • Intel Xeon CPU 四核 3.07GHz
  • 英伟达 Quadro 4000 GPU
  • 适用于 Windows x64 构建的 CUDA v5.0 工具包
  • OpenCV v2.4.4
  • OpenCV Cuda Package 属于 opencv v2.4.4
  • Microsoft Visual Studios C++ 2010 Express ('vc10')
  • (!) 没有 CMake (!)

我已经完成的步骤、教程和检查:

  • 我已经按照 opencv.org 教程安装并配置了 opencv 2.4.4 所需的软件......
  • 使用 vc10,按照 opencv.org 关于在 vc10 中构建 opencv 的教程(应用那里描述的全局方法并将与 gpu 相关的 dll 放在顶部),但是
  • 在我尝试将计算转移到 GPU 之前,我还没有安装 CMake 软件,也没有任何需要它。
  • 此外,我已将我在此 vc10 解决方案中应用的所有 .dll 文件复制粘贴到“调试”文件夹中(与该解决方案的 .sln 文件位于同一文件夹中)。
  • 最后,我按照 NVidia 开发人员 Zone CUDA 5.0 Getting Started Guide 直到“验证安装”段落,并取得了成功,并按照“为现有项目的构建自定义”说明配置了构建配置以包括 CUDA 编译。

这个问题是关于尝试加速我在调试模式下制作的win32控制台.cpp(即使用win32 OpenCV库的视觉工作室解决方案,一个相当简单的图像处理项目,但带有大内核的模糊正在占用很多时间)通过让它在GPU上运行。但是,我在使用 cuda 5.0 运行 opencv 时遇到了问题(即使 OpenCV Cuda Package 的 readme.txt告诉我下载并安装 Cuda 5.0)。

在 vc10 中编译和运行(=按 F5,使用 Win32 平台) - 或者同样在运行相应的 .exe 可执行文件时 - 出现系统错误,提示“无法启动程序,因为我的计算机上缺少 cudart32_42_9.dll ”。

显然,即使 opencv 的自述文件告诉我使用 cuda5.0,它仍在寻找属于 32 位 cuda 4.2 工具包(cudart 32 _ 42 _9.dll)的 cuda 库 - 显然没有找到它们,因为它们没有安装。

这个问题中,提到 OpenCV v2.4.4 根本没有用 cuda 5.0 编译,唯一的方法是使用 CMake 编译我自己的库。

我的问题:

我想知道同时允许 OpenCV v2.4.4 使用 x64 cuda 5.0 运行是否成为可能,但不必使用 CMake 编译我自己的库。

我想请你们中的任何人准确地与我分享要采取的步骤。在您的解决方案中,请详细写出,因为这只是我使用 C++ 语言、编译器库 dll 等的第三周。

提前谢谢了!

编辑

这个问题实际上现在(由于@talonmies 的评论)变得更像是一个问题

  • 用户“duttasankha”,标题为“OpenCV with cuda MS Visual Studio 2008”,以及
  • 用户“zebullon”,标题为“我需要在 64 位机器上安装 64 位 SDK”。
4

1 回答 1

1

为了完全回答我自己的问题:

已经能够让 CUDA 5.0 运行,而无需自己编译任何东西(例如,无需使用 CMake)或重新安装任何 GPU 驱动程序软件。

我关注了——其中包括——duttasankha 和 zebullon 的帖子(我在我的问题中的编辑中命名了这些帖子),并采取了额外的、小小的信念飞跃。

  1. 我下载了 32 位 CUDA 4.2 SDK(软件开发工具包,与其他 CUDA 下载在同一站点上可用)并安装/解压它。这是值得注意的,因为我安装了更新的 CUDA 工具包和驱动程序版本 (5.0),它是 64 位!

  2. 我查看(Windows 搜索功能)SDK 文件的提取位置,并在 C:...\My Documents\NVIDIA GPU Computing SDK 4.2\C\common\bin 文件夹中找到 cudart32_42_9.dll。

  3. 我复制了该文件夹中的所有32 位 dll(所有名称以“32_42_9.dll”结尾的 dll)并将它们(连同我在上面问题的摘要中提到的 opencv-dll 一起)放在名为“Debug”的文件夹中' 位于该项目的 .sln 解决方案文件所在的同一文件夹中(这是 Visual Studios 始终放置属于该项目的 .exe 可执行文件的文件夹)。我复制了所有这些,因为即使我只得到这个 cudart-dll 丢失的消息,opencv 中的 gpu 函数也需要所有复制的 dll。
  4. 我已经完成了有关所需 Visual Studios 设置的说明。(请参阅关于启用 Visual Studios 2010 的 opencv.org 教程,以全局(非本地)方式执行此操作,另请参阅本指南。但现在,在链接器;输入;附加依赖项字段中,我使用 cuda 相关库完成了我的依赖项列表. 它看起来像这样: C:\opencv\build\x86\vc10\lib\opencv_gpu244d.lib C:\opencv\build\x86\vc10\lib\opencv_core244d.lib C:\opencv\build\x86\vc10\lib \opencv_highgui244d.lib C:\opencv\build\x86\vc10\lib\opencv_video244d.lib C:\opencv\build\x86\vc10\lib\opencv_ml244d.lib C:\opencv\build\x86\vc10\lib\opencv_legacy244d .lib C:\opencv\build\x86\vc10\lib\opencv_imgproc244d.lib请注意,与 cuda 相关的库的“opencv_gpu244d.lib”和“opencv_core244d.lib”位于此列表的顶部。(顺便说一下,这个 core244d.lib 与 cuda 相关,因为这是我从 Sourceforge.com 下载的 OpenCV-2.4.4-CUDA-vc10.7z 包中的 opencv 核心库。提供了解包/正确放置的说明在 Sourceforge 的这个 7z 包中随附的 .text 文件中)。
  5. 在 Visual Studios 的 Project-Folder Explorer 中,我右键单击我的项目名称(=vc10 解决方案)并选择 Build-configuration。在这里,我在 CUDA 5.0(.targets, .props) 中进行了检查,其中显示了相应的路径“$(VCTargetsPath)\BuildCustomizations\CUDA 5.0.targets”。

现在,运行我的代码不会提示更多关于缺少 DLL 的系统错误,并且 opencv.org 文档中的 CUDA“初始化和信息”函数也在我为检查 CUDA 集的全局功能而编写的新测试项目中运行-向上。

显然,较新版本的 Driver 和 CUDA Toolkit 知道如何与旧版本 CUDA SDK 的 DLL 配合。

希望其他人在阅读本文时能节省一些时间。如果我在对答案的描述中遗漏了详细信息,请告诉我。

于 2013-04-16T13:00:19.780 回答