CUDA、CUDNN安装的心酸史
作者:elfin 资料来源:
文内
1、简诉
基于ubuntu18.04,Driver Version 440.33.01;cuda10.2、cudnn8.0.3、GPU:1650的基础环境安装TensorRT7.2.2.3,安装好之后,在使用过程中报错,而项目在2080TI的另一环境中测试通过,通过代码调试、错误定位,最后定位到libcublas有毛病,当时年轻,不懂时,查看cuda版本与Driver Version的对应情况,没有什么问题,Driver Version满足>=440.33.01
,一般使用它不会报错;另一方面TensorRT较新,网上有出现这种情况,且有将TensorRT7.2转换为TensorRT7.1解决的!
在这种背景下,我准备卸载TensorRT7.2.2.3,基于NVIDIA官网卸载命令,不小心删除了全家桶!切记不要随意使用sudo apt-get autoremove
。虽然按理说不应该删除CUDA,但是我就遇到这么秀,看见cuda被删除,直接傻眼。
既然被删除了那就安装吧……
首先选择DEB安装,结果网络波动太大,导致安装的cuda没有include
文件夹,这我找谁去说理啊!那就删除重安吧,结果这个直接删CUDA文件夹的骚操作害苦了我,后面不管是DEB还是RUN文件都不能安装,下面是解决问题的过程记录!
2、ERROR
安装报错如下:
安装cuda10.2时显示/tmp/apt-dpkg-install-eBJpT5/25-libcublas-dev_10.2.2.89-1_amd64.deb没有安装,所以手动安装,报错为:
dpkg: 错误: 无法访问归档 '/tmp/apt-dpkg-install-eBJpT5/25-libcublas-dev_10.2.2.89-1_amd64.deb': 没有那个文件或目录
cuda 已经是最新版 (10.2.89-1)。
您也许需要运行“apt --fix-broken install”来修正上面的错误。
下列软件包有未满足的依赖关系:
cuda-libraries-dev-10-2 : 依赖: libcublas-dev (>= 10.2.2.89) 但是它将不会被安装
依赖: cuda-misc-headers-10-2 (>= 10.2.89) 但是它将不会被安装
cuda-nvcc-10-2 : 依赖: cuda-misc-headers-10-2 (>= 10.2.89) 但是它将不会被安装
cuda-samples-10-2 : 依赖: libcublas-dev (>= 10.2.2.89) 但是它将不会被安装
cuda-visual-tools-10-2 : 依赖: libcublas-dev (>= 10.2.2.89) 但是它将不会被安装
E: 有未能满足的依赖关系。请尝试不指明软件包的名字来运行“apt --fix-broken install”(也可以指定一个解决办法)。
此时我的/usr/local
下是没有cuda与cuda-10.2的,这里报错依赖有问题。在网上找了很多方法,都不行,这里我建议你尝试以下措施:
-
缺什么安装什么
这个方法我没有测试,你可以实验将libcublas-dev这些包安装一下在安装cuda。
-
删除未被删除的指令
这里我首先查询了我安装的cuda包:
$ sudo dpkg -l | grep cuda
在查询的列表中可以看到很多cuda相关的包,特别是很多版本为10.2.89-1,我选择将这些10.2.89-1的包全部删除:
$ sudo dpkg -P <要删除的包>
在删除的过程中,可能会遇到此包被xxx依赖,此时先删除依赖它的包!直到删除完全!
要注意不要误删除cuda-drivers等其他版本的包!
删除完成之后,即可安装CUDA10.2!
3、安装CUDA10.2报错libcublas为安装
报错信息如下:
ubuntu 18.04 Autoware 依赖: libcublas-dev (>= 10.2.2.89) 但是它将不会被安装
下列软件包有未满足的依赖关系:
cuda-libraries-dev-10-2 : 依赖: libcublas-dev (>= 10.2.2.89) 但是它将不会被安装
cuda-samples-10-2 : 依赖: libcublas-dev (>= 10.2.2.89) 但是它将不会被安装
cuda-visual-tools-10-2 : 依赖: libcublas-dev (>= 10.2.2.89) 但是它将不会被安装
E: 有未能满足的依赖关系。请尝试不指明软件包的名字来运行“apt --fix-broken install”(也可以指定一个解决办法)。
ERROR: the following rosdeps failed to install
apt: command [sudo -H apt-get install -y ros-melodic-grid-map-visualization] failed
看到此信息,我首先想到使用apt-get安装,为了保险,验证合理性,我百度了一下,还真有遇到此问题的大佬。
(报错信息复制于大佬博客,我的错误应该是一样的!)
基于博客的方法展示步骤如下:
-
安装包
$ sudo apt-get install libculas-dev
报错:dpkg返回错误代码:
E: Sub-process /usr/bin/dpkg returned an error code (1)
-
解决方法(来源于博客)
$ sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/info_old/ $ udo mkdir /var/lib/dpkg/info/ $ sudo apt-get update # 下面这一步我报错了,镜像源有些没有get到,可能是网络的原因,不过不影响后面的操作 $ sudo apt-get ugrade
再安装
$ sudo apt-get install libculas-dev
4、CUDA、CUDNN安装
基于第二章、第三章,使用sudo apt-get -y install cuda
成功安装,没有包任何奇怪的东西!
使用nvidia-smi测试通过,使用nvcc -V报错,进入cuda-10.2所在目录查看,发现没有cuda软连接:
$ cd /usr/local/
$ sudo ln -s cuda-10.2/ cuda/
创建软连接后,nvcc -V
命令可以正常使用,下面测试是否正常安装!
$ cd /usr/local/cuda/samples/1_Utilities/deviceQuery
$ sudo make
$ ./deviceQuery
正常应该在最后打印Result = PASS
实际我这里是未通过,这很难受了,删掉重新安装吧!发现在bin下没有uninstall相关文件,裂开了!,使用如下命令删除:
$ sudo apt-get autoremove --purge cuda
$ sudo dpkg -l | grep cuda
# 此命令显示还有未卸载干净的,继续手动卸载!此时发现之前一直向保留的440.33.01那个包早没了,好吧之前就不该保留!
$ sudo dpkg -P ···
完!