用Cuda编译OpenCV失败

时间:2011-11-04 11:37:15

标签: ubuntu opencv cuda cmake

我正在尝试使用gpu功能构建opencv。所以我需要用cuda编译opencv。 我已经下载了opencv,我也在我的ubuntu上安装了带有http://wiki.accelereyes.com/wiki/index.php/Installing_CUDA_Under_Ubuntu_10.04教程的cuda。

当我在输出上尝试cmake -D WITH_CUDA=ON时,它说

  

无法找到CUDA:找到不合适的版本“。”,但必需的是   至少“4.0”(找到/ usr / local / cuda)

这个问题让我抓狂!我不能让它运作!我确信所有环境变量和路径都适用于cuda。

您可能会想到的任何解决方案?

2 个答案:

答案 0 :(得分:3)

我自己做了这个教程(实际上我收集了它)。我在ubuntu 11.10上试过它,我认为对于像我这样的初学者来说这是个好开始。希望它有一些用处。

1-CUDA无法使用gcc 4.5或更高版本,所以如果您的gcc版本更高,则应安装gcc 4.4:

$ sudo apt-get install build-essential gcc-4.4 g++-4.4

2 - 现在下载并安装相应的CUDA驱动程序:

$ sudo apt-get install \
nvidia-current \
nvidia-current-dev \
nvidia-current-updates \
nvidia-current-updates-dev

3 - 从nvidia网站下载CUDA工具包和SDK(http://developer.nvidia.com/cuda-downloads) 请注意,某些版本的CUDA驱动程序仅适用于特定版本的工具包(例如(驱动程序280.13适用于工具包4.0或更低版本)。因此,如果您遇到错误消息,指示CUDA驱动程序和运行时不匹配,则应该返回并安装较低版本的工具包。在重新安装过程中不要担心它会删除以前的版本,即使它是更高版本。 您可以通过以下方式检查CUDA驱动程序版本:

$ cat /proc/driver/nvidia/version

您可以通过以下方式检查工具包版本:

nvcc –version

4 - 复制并安装刚刚下载的两个.run文件:     $ Chmod + x(文件名)     $ ./((文件的名称)

5 - 要编译SDK示例,您还需要:

$ sudo apt-get install freeglut3-dev libxi-dev

并创建这些链接

sudo ln -s /usr/lib/libXmu.so.6 /usr/lib/libXmu.so
sudo ln -s /usr/lib/nvidia-173/libGL.so /usr/lib/libGL.so

6 - 将CUDA添加到您的路径中:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH: /usr/local/cuda/lib64

7 - 现在添加库路径:

cat /etc/ld.so.conf.d/nvidia_settings.conf  \
/usr/lib/nvidia-setting  \
/usr/local/cuda/lib64 \
/usr/local/cuda/lib

sudo ldconfig

8 - 现在转到NVIDIA_GPU_COMPUTING_SDK _...文件夹并使用文本编辑器(如vim)打开文件C / common / common.mk并更改以下行:

LINKFLAGS  +=

要     LINKFLAGS + = -L / usr / lib / nvidia-current

和     NVCCFLAGS:= 至     NVCCFLAGS:= - ccbin /usr/bin/gcc-4.4

9 - 最后,您应该编译并运行一个示例以确认安装已完成。再次转到NVIDIA_GPU_COMPUTING_SDK文件夹并运行make:

sudo make

要运行示例,请转到NVIDIA_GPU_COMPUTING_SDK / C / bin / linux / release 并通过以下方式运行示例:     ./(文件夹中某个文件的名称)

10-稍后当你想编写自己的CUDA程序时,你应该编辑NVIDIA_GPU_COMPUTING_SDK文件夹中的一个例子并像你刚才那样编译它。

以下是您可以参考的一些网站:

Source1 Source2

答案 1 :(得分:0)

检查CUDA_ARCH_BIN值。它应该是1.1 1.2 1.3 2.0或类似的东西。

并检查CUDA_ARCH_PTX并确保它正确并适合您的架构。从理论上讲,它可能是空的,但是谁知道呢?