baN*_*aNv 13 linux opencv opencv3.0 caffe
编译修改后的caffe版本时遇到了这个错误.
OpenCV static library was compiled with CUDA 7.5 support. Please, use the same version or rebuild OpenCV with CUDA 8.0
我有一些旧的代码可能与CUDA8.0不兼容,所以我想为这个错误更改我的cuda版本.
我像这样修改了〜/ .bash_profile
# export PYTHONPATH=$PYTHONPATH:/usr/local/cuda-8.0/lib64/
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64
export PYTHONPATH=$PYTHONPATH:/usr/local/cuda-7.5/targets/x86_64-linux/lib/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-7.5/targets/x86_64-linux/lib/
Run Code Online (Sandbox Code Playgroud)
但它没有用.还是一样的错误.我该怎么办?谢谢.
小智 33
也许更干净:
sudo update-alternatives --display cuda
sudo update-alternatives --config cuda
Run Code Online (Sandbox Code Playgroud)
小智 11
此解决方案解释了如何安装多个不同的 cuda 版本(即 10.2、11.3 和 11.6)并在它们之间进行切换。它是 @wt 的扩展并利用update-alternatives.
Afaik,在 cuda 11.x 之后,Ubuntu 20.04 cuda 安装上的安装将update-alternatives自动添加到维护中。
假设您安装了 cuda 10.2、cuda 11.3 和 cuda 11.6(遵循官方 nvidia 安装指南:https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html)。他们都将居住在:
/usr/local/cuda-10.2/...
/usr/local/cuda-11.3/...
/usr/local/cuda-11.6/...
Run Code Online (Sandbox Code Playgroud)
您的update-alternatives遗嘱中有两个条目:
$ sudo update-alternatives --query cuda
...
/usr/local/cuda-11-3 - priority 113
/usr/local/cuda-11-6 - priority 116
Run Code Online (Sandbox Code Playgroud)
解决方案 1:如果您想使用,请update-alternatives确保您的 cuda符号链接指向/etc/alternatives/cuda.
# Change the symbolic link target.
$ sudo ln -sfT /etc/alternatives/cuda /usr/local/cuda
Run Code Online (Sandbox Code Playgroud)
# Check the path.
$ ll /usr/local/cuda
lrwxrwrwrwx 1 root root /usr/local/cuda -> /etc/alternatives/cuda/
Run Code Online (Sandbox Code Playgroud)
现在,剩下的就是确保/etc/alternatives/cuda指向您要使用的版本,例如 11.3。
您可以通过以下方式进行更新:
$ sudo update-alternatives --config cuda
Run Code Online (Sandbox Code Playgroud)
并按照说明更改版本。
检查路径:
$ ll /etc/alternatives/cuda
lrwrwrwrwx root root /etc/alternatives -> /usr/local/cuda-11.3
Run Code Online (Sandbox Code Playgroud)
快完成了。
并始终确保PATHs在您的~/.bashrc.
解决方案 2:
直接将/usr/local/cuda符号链接设置为正确的版本。
$ ln -sfT /usr/local/cuda-11.3 /usr/local/cuda
Run Code Online (Sandbox Code Playgroud)
重新启动机器并仔细检查一切设置是否正确:
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Mon_May3 19:15:14_PDT_2021
Cuda compilation tools, release 11.3 V11.3.109
Build cuda 11.3.r11.3/compiler.29920130_0
Run Code Online (Sandbox Code Playgroud)
将您的CUDA软链接更改为指向所需的CUDA版本.例如:
ll/usr/local/cuda lrwxrwxrwx 1 root root 19 Sep 06 2017/usr/local/cuda - > /usr/local/cuda-8.0/
只需重新链接即可
ln -s /usr/local/cuda-7.5/usr/local/cuda
(具有正确的安装位置)
也许有点晚了,但我认为它可能对遇到这个问题的任何人都有帮助。我编写了一个简单的 bash 脚本,用于在当前 bash 会话中切换到不同版本的 CUDA :https : //github.com/phohenecker/switch-cuda