【问题标题】:x86 32-bit Support for Cuda对 Cuda 的 x86 32 位支持
【发布时间】:2020-03-08 17:36:28
【问题描述】:

我正在开发视觉系统并使用 Opencv 进行图像处理,我必须将整个系统呈现为 32 位 ActiveX 控件,以便集成到 IWS(Indosoft Web Studio)应用程序中,因为 IWS 是 32 位的。

我该怎么做,因为我需要一个支持 cuda 的 32 位 Opencv 构建,并且不再有 32 位 Cuda 工具包。 任何人都可以从Nvidia 澄清以下内容。

不支持在 x86_32 上使用 CUDA 工具包进行本机开发。 在 x86_32 上部署和执行 CUDA 应用程序仍然是 支持,但仅限用于 GeForce GPU。创建 32 位 CUDA应用,使用CUDA的交叉开发能力 x86_64 上的工具包。

支持在 x86_64 上开发和运行 x86 32 位应用程序 Windows 仅限用于: GeForce GPU CUDA 驱动程序 CUDA 运行时 (cudart) CUDA 数学库 (math.h) CUDA C++ 编译器 (nvcc) CUDA 开发工具

我明白这一点,但我找不到任何关于如何在 x86_64 上使用 CUDA 工具包的交叉开发功能的方向。

【问题讨论】:

  • 换句话说,我如何构建一个支持 cuda 的 32 位 OpenCV。
  • 这意味着您在 64 位操作系统的 Visual Studio 中打开一个项目,并选择 win32 而不是 x64 作为您的平台。但是,除了 CUDA 运行时库和 CUDA 驱动程序 API 库之外,没有其他库支持。这意味着 CUFFT、CUBLAS、NPP 和其他此类库仅在选择 x64 平台时提供使用。例如,如果 OpenCV 对 NPP 有任何依赖,那么您将不走运。而且我将无法编写有关如何使用 cuda 支持构建 32 位 OpenCV 的教程。您最好的选择可能是恢复到具有 32 位支持的旧 CUDA 工具包和环境
  • 所以我不能使用交叉开发功能,或者即使我这样做了,它也仅限于 Geforce GPU,并且在 cuda 工具包 6.5 之后不推荐使用 32 位。
  • 让我们看看回到 cuda 6.5 是否有帮助。
  • 当您选择 win32 项目而不是 x64 项目时应自动设置。您可以通过检查 Visual Studio 在编译期间放在控制台窗口中的 nvcc 编译命令行来确认。

标签: c++ opencv cuda


【解决方案1】:

在答案中添加评论——是的,您可以在 Windows 中使用 64 位 CUDA 工具链交叉编译为 32 位输出。但是,NVIDIA 多年前就停止提供 32 位 CUDA 应用程序库。引用罗伯特·克罗维拉的话:

这意味着 CUFFT、CUBLAS、NPP 和其他此类库仅 供选择 x64 平台时使用。如果 OpenCV 有任何 依赖NPP,例如,你会倒霉

鉴于 OpenCV 依赖于 CUFFT、CUBLAS 和 NPP,由于缺少库,您极不可能使用现代 CUDA 工具包构建和运行 32 位 OpenCV 版本。

【讨论】:

  • 这是否意味着 OpenCV 不能为 Cuda 编译 32 位?例如,我想用 Opencv + cuda 运行 32 位的 mask rcnn 模型。
  • @FishCoder:标准 OpenCV 树无法在为 32 位目标安装 CUDA 的情况下成功编译。
猜你喜欢
  • 2021-05-28
  • 2020-12-12
  • 1970-01-01
  • 2021-06-22
  • 2016-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多