首页 文章

在transpose.cu上使用CUDA支持构建OpenCV错误

提问于
浏览
0

最近我正在尝试使用CUDA支持构建OpenCV,并且在构建模块cudaarithm时遇到了问题 .

OpenCV source: git克隆自:http://github.com/Itseez/opencv.git

OpenCV branch: 主分支

OpenCV commit:

`commit 5466e321b8c8f97536002a357e5b7ff49a5d2bf9, on Tue Feb 10 12:17:11 2015 +0000`

CUDA version: CUDA 6.5

Hardware: MacBook Pro(13英寸,2010年中)

GPU: NVIDIA GeForce 320M 256 MB

OS Version: OS X Yosemite

Steps I used:

1. cd in OpenCVSource, then mkdir myrelease, and cd myrelease

2. cmake -DPLANTUML_JAR=/usr/local/Cellar/plantuml/8002  -D BUILD_DOCS=1 -DPYTHON2_LIBRARY=/usr/local/Cellar/python/2.7.8_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config/libpython2.7.dylib -DPYTHON2_INCLUDE_DIR=/usr/local/Cellar/python/2.7.8_2/Frameworks/Python.framework/Versions/2.7/include/python2.7 -DPYTHON3_LIBRARY=/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/lib/libpython3.4m.dylib -DPYTHON3_INCLUDE_DIR=/usr/local/Cellar/python3/3.4.2_1/Frameworks/Python.framework/Versions/3.4/include/python3.4m -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -Wno-dev -DNVCC_FLAGS_EXTRA="-Xcompiler -stdlib=libstdc++; -Xlinker -stdlib=libstdc++" -DOPENCV_EXTRA_CXX_FLAGS=" -stdlib=libstdc++" -DOPENCV_EXTRA_EXE_LINKER_FLAGS="-stdlib=libstdc++" ..

3. make  VERBOSE=1

Expect Result: Build 成功,没有错误

Actual Result: 在构建OpenCVSource / modules / cudaarithm / src / cuda / transpose.cu时,发生错误如下:

/Users/Hawk/Documents/study/DIP/OpenCV/OpenCVSource/modules/cudaarithm/src/cuda/transpose.cu(61): *error: identifier "getInputMat" is undefined*

/Users/Hawk/Documents/study/DIP/OpenCV/OpenCVSource/modules/cudaarithm/src/cuda/transpose.cu(67): *error: identifier "getOutputMat" is undefined*

/Users/Hawk/Documents/study/DIP/OpenCV/OpenCVSource/modules/cudaarithm/src/cuda/transpose.cu(92): *error: identifier "syncOutput" is undefined*

Then what action I take:

  • 检查代码,我发现这些未定义的符号在OpenCVSource / modules / core / include / opencv2 / core / private.cuda.hpp中定义

  • 检查代码,我确认“transpose.cu”文件包含“opencv2 / core / private.cuda.hpp”

  • 检查构建日志,并确认private.cuda.hpp位于头文件的搜索路径中

  • cp“opencv2 / core / private.cuda.hpp”作为另一个文件“opencv2 / core / hawk.hpp”,然后编辑“transpose.cu”以包含这个新文件,我发现“undifined symbole error”消失了 .

虽然这是一个可行的解决方法,但我想知道是否无法编译原始的OpenCV源代码 .

1 回答

  • 1

    所有,我想我发现问题的原因 .

    在我遇到这样的问题之前,我已经使用git repo中的旧代码构建并安装了OpenCV . 所以我的/ usr / local / include / opencv2中已经有头文件了,尤其是 /usr/local/include/opencv2/core/private.cuda.hpp .

    但是,它是较旧的,没有定义上述问题中未定义的符号 . 同时我发现在构建nvcc期间在命令行中有-I / usr / local / include,所以它使用了错误的 private.cuda.hpp . 如您所知,它应该使用OpenCVSource中的那个,而不是旧版本的 .

    我认为解决方案是从我的计算机中优雅地删除原始安装的OpenCV,然后再次构建 . 我正在努力,我稍后会报告 .

相关问题