Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用CUDA支持构建OpenCV_Opencv_Cuda - Fatal编程技术网

使用CUDA支持构建OpenCV

使用CUDA支持构建OpenCV,opencv,cuda,Opencv,Cuda,Im使用CMake生成visual studio 2013解决方案。下一步我将尝试构建它,但出现以下错误: 构建NVCC(设备)对象模块/core/CMakeFiles/cuda_compile.dir/src/cuda/Debug/cuda_compile_生成的gpu_mat.cu.obj nvcc致命:不支持的gpu体系结构“compute_11” 我尝试使用cuda 6.5和7.0版本2.10和3.0。 CUDA_ARCH_BIN设置为:1.1 1.2 1.3 2.0 2.1(2.0)3

Im使用CMake生成visual studio 2013解决方案。下一步我将尝试构建它,但出现以下错误:

构建NVCC(设备)对象模块/core/CMakeFiles/cuda_compile.dir/src/cuda/Debug/cuda_compile_生成的gpu_mat.cu.obj

nvcc致命:不支持的gpu体系结构“compute_11”

我尝试使用cuda 6.5和7.0版本2.10和3.0。
CUDA_ARCH_BIN设置为:1.1 1.2 1.3 2.0 2.1(2.0)3.0 3.5

使用cmake to do配置时,将选项CUDA_GENERATION设置为特定于您的GPU架构。我遇到了同样的错误,并试图解决这个问题。

继云的回答(无法留下评论)之后,这对我来说很有效,并且显示了CUDA_一代的可能价值。

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler ..
(Ubuntu 12.04和14.04、GTX Titan、OpenCV 2.4.11和3.0.0。)

谢谢

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler ..
这让我可以安装opencv-2.4.9

如果您想了解更多详细信息,请选中此项。

另一个选项。 Ubuntu 14.04,GTX泰坦X,opencv-2.4.10

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_TIFF=ON -D BUILD_EXAMPLES=ON -D CUDA_GENERATION=Auto -D BUILD_NEW_PYTHON_SUPPORT=ON  .. 
我还申请了,
但我不确定最终是否需要它。我试过使用和不使用
CUDA_GENERATION=Maxwell
,但没有检测到Maxwell。在安装补丁之前,我没有尝试过
CUDA_GENERATION=Auto
,这就是我不确定的原因。

你应该设置
cmake
这些条目
CUDA_ARCH_BIN=3.2
CUDA_ARCH_PTX=3.2

希望能有帮助


这是因为您的gpu类型不匹配

您必须明确定义CUDA_生成

在我这边,我可以找到三种类型的CUDA_世代;自动,开普勒,费米


当我将CUDA_GENERATION设置为开普勒时,compute_11更改为compute_30并成功构建。

cmake-D cmake_build_TYPE=Release-D cmake_INSTALL_PREFIX=/usr/local-D build_TIFF=ON-D build\u EXAMPLES=ON-D CUDA_GENERATION=Kepler-D build\u NEW\u PYTHON\u SUPPORT=ON


为我工作的OpenCV 2.4.11

您可以使用
CUDA_GENERATION
为您的GPU体系结构指定相应的生成代码名

下面是解析
CUDA\u生成
值的相关函数:

set(\uuuucuda\uarch\uptx“”)
if(CUDA_世代“费米”)
套装(uuu cuda_uarch_ubin“2.0”)
elseif(CUDA_GENERATION STREQUAL“开普勒”)
套装(“3.0 3.5 3.7”)
elseif(第二代“麦克斯韦”)
套装(uuu cuda_uarch_ubin“5.0 5.2”)
elseif(CUDA_GENERATION STREQUAL“Pascal”)
套装(“6.0 6.1”)
elseif(CUDA_GENERATION STREQUAL“Volta”)
套装(“7.0”)
elseif(CUDA_GENERATION STREQUAL“自动”)
执行\u进程(命令“${CUDA\u NVCC\u EXECUTABLE}”${CUDA\u NVCC\u FLAGS}”${OpenCV\u SOURCE\u DIR}/cmake/checks/OpenCVDetectCudaArch.cu”“--run”
工作目录“${CMAKE\u BINARY\u DIR}${CMAKE\u FILES\u DIRECTORY}/CMakeTmp/”
结果变量nvcc res输出变量nvcc out
错误\u安静输出\u带\u尾随\u空白)
如果(不等于0)
消息(状态“自动检测CUDA生成失败。将为所有已知体系结构生成。”)
else()
集合(${nvcc\u out})
字符串(替换“2.1”、“2.1(2.0)”\uuuuCuda\uArch\uBin“${uuuuuCuda\uArch\uBin}”)
endif()
endif()
wikipedia CUDA页面有一个很好的表格,用于将您的视频卡映射到正确的微体系结构代码名(抱歉,它太大了,无法在此处复制):

例如,我的middling-2012 Macbook Pro有一个古董GeForce GT 650M,wikipedia表显示它使用了开普勒微体系结构。因此,我在cmake命令行中使用此命令:

cmake-D CUDA_GENERATION=“开普勒”…

opencv脚本在显示配置摘要时将其转换为“3.0 3.5 3.7”,并将相应的标志传递给
nvcc


在我的例子中,在正确设置之前,我遇到了关于
compute\u 70
不受支持的错误。显然,截至今天(2017-10-07),仍有一个关于自动检测无法正常工作的问题。

感谢您回答这个问题。然而,这只是一个链接的答案;最好在你的答案中包含更详细的描述,以及你所指链接中的信息。为什么要构建tiff?@user136266,因为我所做的一些处理是与tiff相关的。它们通常用于地理空间数据、光栅等。