问题描述:
笔者最开始装了最新版的12.3版本的NVIDIA驱动+CUDA Toolkit的环境,在【conda install tensorflow-gpu】时完全没报错,但【import tensorflow】的时候出现如下错误:
Could not load dynamic library ‘libcusolver.so.11‘; dlerror: libcusolver.so.11
根据教程配置好bashrc文件中的路径后,继续报错:
No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-12.3/lib64
后面仔细检查了下cuda包里面的文件,发现所有的配置后缀都是12,没有所需的11,查找资料后发现tensorflow 和 pytorch的环境都需要11.x的CUDA Toolkit(试了最新版的框架,暂时没发现能支持到12.x的版本)。问题至此定位完成。
解决方案:
(1)保留NVIDIA驱动版本,卸载重装11.xCUDA Toolkit 或者 配置多版本的CUDA Toolkit 环境。
(2)如果不想碰到任何可能的版本冲突问题,可以把原来的NVIDIA驱动+CUDA Toolkit都卸掉,重装11.x的环境。(笔者选择方案)
方案一
【背景了解】cuda的两种API
简单来说NVIDIA驱动 和 CUDA Toolkit的版本可以不一致,后者只要小于等于前者的最高版本就行。笔者现在用的就是 12.0的NVIDIA驱动+11.2的CUDA Toolkit(晚点上传下百度云分享资源,占坑)。
在原环境基础上保持不变,加入新的CUDA Tookit,可见这篇教程,注意切换版本的时候需要修改软连接或者直接改bashrc文件中的路径地址。
https://blog.csdn.net/qq_41701723/article/details/131633183
方案二
1、卸载 NVIDIA驱动 和 CUDA Toolkit
#先用包管理器卸载CUDA Toolkit 和 NVIDIA Driver
$ sudo yum remove -y cuda
$ sudo yum remove -y nvidia*
#清除掉残留文件
$ yum remove "*cublas*" "cuda*" "*nvidia**"
#重启
$ reboot
#验证是否卸载干净,结果应为 xxx:command not found
nvidia-smi
nvcc -V
2、下载 NVIDIA驱动
查看显卡型号,如果提示没有lspci命令,则需要先进行安装【yum install pciutils】
$ lspci | grep -i nvidia
NVIDIA Corporation 即为产品标识,但如果是像图中显示了 Device XXX,则需要进行额外的查询,详情可见教程。在获得所需信息后,去NVIDIA官网下载合适的驱动。
3、安装基础环境
$ yum install kernel-devel
#检查内核版本和源码版本,确保一致
$ ls /boot | grep vmlinu
$ rpm -aq | grep kernel-devel
4、安装NVIDIA驱动
*这里笔者直接下了run类型的安装包
(1)修改dist-blacklist.conf
$ vim /lib/modprobe.d/dist-blacklist.conf
(2)屏蔽默认带有的nouveau
按 i 进入insert模式,加#注释掉【# blacklist nvidiafb】,并在末尾添加
blacklist nouveau
options nouveau modeset=0
按esc后,输入:wq保存并退出vim状态。
(3)重建initramfs image 和 修改运行级别
$ mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
$ dracut /boot/initramfs-$(uname -r).img $(uname -r)
$ systemctl set-default multi-user.target
$ reboot
#检查nouveau 是否被禁用,结果应为 No such file or directory
ls mod | grep nouveau
(4)安装驱动
- 具体名称根据自己下载的驱动包名,不要直接复制
$ chmod +x NVIDIA-Linux-x86_64-525.89.02.run
$ ./NVIDIA-Linux-x86_64-525.89.02.run --kernel-source-path=/usr/src/kernels/3.10.0-1160.102.1.el7.x86_64/
参考连接:部分bug的解决方案以及可忽略的一些warnning
(5)安装结果测试
$ nvidia-smi
5、安装CUDA Toolkit
从官网上下载所需的CUDA版本
$ chmod 755 cuda_11.2.0_460.27.04_linux.run
$ sh cuda_11.2.0_460.27.04_linux.run
键盘光标指向Driver,按空格取消安装Drivier
成功后会输出如下信息,
```
6、修改bashrc文件中的路径
- 教程见文章开头link,配置完成后【nvcc -V】命令可正常输出
7、安装CUDNN
$ tar -xvf cudnn-11.2-linux-x64-v8.1.0.77.tgz
$ sudo cp cuda/include/cudnn*.h /usr/local/cuda/include
$ sudo cp -p cuda/lib64/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
$ cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
成功后可正确输出CUDNN的相关信息