gpt4 book ai didi

opencv - OpenCV Cuda “invalid device function”在第一个cuda调用中

转载 作者:行者123 更新时间:2023-12-02 17:39:23 29 4
gpt4 key购买 nike

我已经在一段时间内成功构建了具有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以及在开普勒,麦克斯韦的CUDA_GENERATION尝试,并且为空。所有人都能在其中两台测试机上工作,而在第三台测试机上失败并出现相同的错误。我在网上发现的所有内容均表示这是由于GPU的计算功能与CUDA_ARCH_BIN设置不匹配所致。我认为如果我将5.0 / Maxwell设置为Maxwell,Pascals和更高版本,它将可以运行。唯一的其他变量是1050 Ti在Windows 7机器上运行,我在祈祷这不是问题。还是VS2013,Cuda 8.0和/或OpenCV 3.3之间不兼容?任何想法将不胜感激。

最佳答案

感谢@RobertCrovella提供正确的答案。只需在CMAKE的CUDA_ARCH_BIN列表中添加6.1,即可解决此问题。所以我最终使用的是
CUDA_ARCH_BIN = 5.0、5.2、6.0、6.1(因为我只对Maxwell和Pascal感兴趣)
我把CUDA_GENERATION空了。如果您为CUDA_GENERATION选择内容,它将自动为您填充CUDA_ARCH_BIN ...而对我来说,它给了我比我想要的更多的东西。

旁注:我注意到您添加到CUDA_ARCH_BIN的体系结构越多,OpenCV dll就会变得越大。这完全支持罗伯特在评论中所说的。似乎对于列表中的每个体系结构,该体系结构的特定代码都已添加到dll中。如果您没有在列表中放置拱门,那么代码将不会在该拱门上运行。

现在一切似乎如此明显。

再次感谢,罗伯特!

对于那些感兴趣的人,这是我的CUDA CMAKE设置:

enter image description here

关于opencv - OpenCV Cuda “invalid device function”在第一个cuda调用中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46837835/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com