非root用户安装cuda、cudnn(for tensorflow==2.1.0,CUDA 10.1,cuDNN 7.6.5)

为何有这种需求:

  • 服务器上非root账户;
  • hanlp以tensorflow2.0+为基础;
  • 服务器原有cuda版本9.0,cudnn7.1.3,均不符tensorflow2.1.0要求,无法启动GPU运算

踩坑合集

1.上官网下载与tensorflow=2.1.0对应的cuda(cuda 10.1)

甩链接:https://developer.download.nvidia.cn/compute/cuda/10.1/secure/Prod/local_installers/cuda_10.1.105_418.39_linux.run?UUvkAs5eLLflJ9-SZeJcpjj1RqWq8jb840M4qQTJu9iakJQX4SeKmj7_KYRXeSj6VtgRRmNHzHEhNfWTagv9-yq4uvAWixZNxv7zJrULNG2ij7tzxqAtM6c20aoO9jqHJXVwZG-t-3b5eIWWA-9PbLOfTROELXFlzwgZBsiz9P4wkIbGIObwz2ab2KU

甩图:

非root用户安装cuda、cudnn(for tensorflow==2.1.0,CUDA 10.1,cuDNN 7.6.5)

 

坑1:

我是在本机完成下载之后将运行文件.run上传到服务器的(怕服务器太慢,结果发现是我多虑了,服务器下载速度快),结果使用winscp传输后,在服务器直接运行

sh cuda*.run 

直接报错:

gzip: stdin: unexpected end of file
Extraction failed.
Ensure there is enough space in /tmp and that the installation package is not corrupt
Signal caught, cleaning up

多次查找问题后发现其实是个白痴原因导致该错误:我在将本地文件上传服务器时,在winscp里直接将文件拖拽过去了。如果老老实实选择“上传”这种正规操作,就没有这种问题了。当然,如果你直接把文件下载到服务器,你也不会遇到这种问题。。。

 

安装过程中情况较为复杂。由于我本人没有root权限,故整个过程参考https://blog.csdn.net/hizengbiao/article/details/88625044,亲测有效。在安装过程中,因为没有root权限所以略去了对NVIDIA显卡驱动的安装(或升级)。但这里埋下一个隐患,那就是,对于CUDA 10.1而言,显卡驱动至少应该在>= 418.39以上。当前这个数值怎么查看?输入命令`nvidia-smi`,driver version对应的数字就是。

非root用户安装cuda、cudnn(for tensorflow==2.1.0,CUDA 10.1,cuDNN 7.6.5)

如果你的驱动没有达标,运行tensorflow的时候程序一般会这样提示你:

cudaGetDevice() failed. Status: CUDA driver version is insufficient for CUDA runtime version

 

安装后截图:

非root用户安装cuda、cudnn(for tensorflow==2.1.0,CUDA 10.1,cuDNN 7.6.5)

2.下载和tf=2.1.0对应的cuDNN(7.6.5)并安装

  • cuDNN下载页面:https://developer.nvidia.com/cudnn
  • 注意,点击「Download cuDNN」之后,会让你注册并填写一个survey。耐着性子填完吧!注册和登录的地方,或许有的地方会被墙,或者至少也是在不*的情况下很龟速,如果你打不开页面,可以想想是不是应该*

 

  • 下载好cuDNN文件后,发现后缀是.solitairetheme8,直接按照.tar解压。然后将解压得到的结果,按照以下方式复制粘贴到cuda-10.1的安装目录下:
cp ~/cuda/cuda-10.1/cuDNN/include/cudnn.h ~/cuda/cuda-10.1/include
cp ~/cuda/cuda-10.1/cuDNN/lib64/lib* ~/cuda/cuda-10.1/lib64

chmod a+r ~/cuda-10.0/include/cudnn.h ~/cuda-10.0/lib64/libcudnn*

*注:`~/cuda/cuda-10.1/cuDNN/`是我cuDNN文件解压所在的位置;~/cuda/cuda-10.1/是我运行`sh cuda*.run`安装cuda 10.1的位置。我们这一通复制粘贴,就是为了把cuDNN的文件放到CUDA目录下。

  • 之后建立软链接:
cd ~/cuda/cuda-10.1/lib64
ln -sf libcudnn.so.7.6.4 libcudnn.so.7
ln -sf libcudnn.so.7 libcudnn.so
ldconfig -v
  • 最重要的:在.bashrc文件里配置路径(我的家目录为/home/shenfei1,改成你的)
export PATH=/home/shenfei1/cuda/cuda-10.1/bin${PATH:+:${PATH}}  
export LD_LIBRARY_PATH=/home/shenfei1/cuda1/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

修改之后,执行`source ~/.bashrc`使之生效。

  1. 验证nvcc版本,看看安装是否成功

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Fri_Feb__8_19:08:17_PST_2019
Cuda compilation tools, release 10.1, V10.1.105

  注意最后一行release 10.1, V10.1.105。若nvcc命令找不到,说明中间安装有误

非root用户安装cuda、cudnn(for tensorflow==2.1.0,CUDA 10.1,cuDNN 7.6.5)非root用户安装cuda、cudnn(for tensorflow==2.1.0,CUDA 10.1,cuDNN 7.6.5) illusion_小驴 发布了56 篇原创文章 · 获赞 87 · 访问量 12万+ 私信 关注
上一篇:my_pc & Lab_pc


下一篇:Tensorflow版本与 CUDA,CUDNN 版本对应关系