【发布时间】:2018-03-31 23:02:46
【问题描述】:
我已经成功构建支持 gpu 的 OpenCV 有一段时间了,但是,我遇到了一个我似乎无法解决的情况。在使用 VS 2013 和 CUDA 8.0 构建 OpenCV 3.3 之后,OpenCV cpu 和 gpu 似乎在我的几台测试机器 GTX 750 Ti 和 GTX 950M(均使用 Windows 10)上运行良好。在另一台配备 GTX 1050 Ti 的机器上,cpu 调用工作,但我在第一次 OpenCV-cuda 函数调用时得到“无效的设备函数”。在 CMake 中,我摆弄了 CUDA_ARCH_BIN 和 CUDA_GENERATION 变量并进行了重建,但我似乎无法为这台机器找到解决方案。我已经更新了 NVidia 图形驱动程序,在 3.0、3.5、3.7、5.0 尝试了 CUDA_ARCH_BIN,在 Kepler、Maxwell 和空的情况下尝试了 CUDA_GENERATION。所有这些都在两台测试机器上工作,并且在第三台机器上失败并出现同样的错误。我在网上找到的所有内容都表明这是由 GPU 的计算能力和 CUDA_ARCH_BIN 设置之间的不匹配引起的。我认为如果我设置为 5.0/Maxwell,它将在 Maxwell、Pascals 和更新版本上运行。唯一的另一个变量是 1050 Ti 在 Windows 7 机器上运行,我祈祷这不是问题。或者 VS2013、Cuda 8.0 和/或 OpenCV 3.3 之间可能存在不兼容?任何想法将不胜感激。
【问题讨论】:
-
我建议为 Pascal 1050 设备添加 arch 6.1/Pascal
-
@RobertCrovella 在我写这个问题时突然想到这可能是问题所在。我认为将 CUDA_ARCH_BIN 设置为 3.0、3.2、3.5、3.7、5.0、5.2 将适用于 6.1 卡。我想也许您想要涵盖的每个计算能力都必须在列表中?无论如何......现在正在建设,并将报告。
-
这取决于 cmake 如何将这些条目转换为实际的 CUDA 构建开关。如果它指定包含 PTX,那么您是正确的。如果没有,我是对的。由于“无效的设备功能”错误是一个非常确凿的迹象,表明构建的图像中不存在合适的 PTX,我倾向于相信我是正确的,并且与您自己的陈述一致:“我在网络上找到的所有内容表示这是由于 GPU 的计算能力和 CUDA_ARCH_BIN 设置不匹配造成的”
标签: opencv visual-studio-2013 cuda