基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)

基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)

  • 参考
  • 前期准备
    • 查看服务器信息
    • 下载cuda和cudnn
      • Cuda
      • Cudnn
  • 安装过程
    • Cuda
    • Cudnn
  • 环境变量的配置
  • 不同版本Cuda互相切换
  • 总结

在复习论文的过程中,有一篇论文用的是tensorflow1,但是实验室服务器的cuda版本是10.1,这两个就不匹配,因此我需要在我自己的虚拟环境下安装一个cuda10的版本来匹配tensorflow1.15的版本,于是记录一下这个过程,其中,报错信息为:

Could not load dynamic library 'libcudart.so.10.0';

参考

本文感谢以下参考博客

  1. 实验室非root权限配置服务器上自己版本的cuda
  2. bash: lsb_release: command not found错误的解决方法
  3. CentOS 非root用户安装CUDA和cuDNN 多图详细教程
  4. lsb_release
  5. Linux 终端登陆后显示bash-4.2$和(base)的问题
  6. cuda下载
  7. cudnn下载
  8. CUDA Samples
  9. linux软链接的创建、删除和更新

前期准备

查看服务器信息

首先查看服务器信息,用到的linux指令是:

lsb_release -a

LSB是Linux Standard Base的缩写, lsb_release命令 用来显示LSB和特定版本的相关信息。如果使用该命令时不带参数,则默认加上-v参数。
基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第1张图片
但是这里我报错了,大概的意思就是没有安装相应的包,所以用不了这个命令

bash: lsb_release: command not found...

然后就安装一下相关的东西,用 yum provides */lsb_release看了一下,这个包是在redhat-lsb里面的,所以安装一下redhat-lsb
很气啊,我没有root权限,安装失败,所以这个指令我算是用不了了,想安装的同学们可以看一下参考那部分的文章,yum install一下就行了。

但是为了看到我这个机器的信息,我用了别的指令
查看是ubuntu还是centOS:

cat /etc/redhat-release

查看机器驱动版本

 cat /proc/driver/nvidia/version

最后得到结论,本课题组的该服务器为centOS7的版本
为了复现论文,我准备重新配一个环境,但是conda create创建的时候,他提示让我更新anaconda,所以更新了一下,结果导致我linux命令行只有一个(base),如图
在这里插入图片描述
很气啊,很气,然后就各种找解决办法,最后是这么解决的

  1. 首先在服务器下面找到一个文件叫做.bash_profile
  2. 在最后面加一行export PS1=‘[\u@\h \w]$’

好了问题解决,具体的步骤可以参考参考-5的内容
一开始我还以为是环境变量的问题,还让别人帮我看了一下他们自己的环境变量,后来发现没啥问题,这一部分特别感谢阿果同学,小李同学和汪兔乙同学,查看环境变量的命令是:

echo $PATH

尽管这么干,可以修改好linux命令提示符,但是却丢失了本来的(base)的信息提示,这个问题找了好多办法都没解决,什么时候把这个问题解决了再发一个博客吧

言归正传,前期准备就是为了下载cuda和cudnn,第一步就是看看服务器的信息,从而判断你要下载什么cuda
这里我看到的我的服务器信息就是centOS7

下载cuda和cudnn

Cuda

这次我采用的官网下载的方式,首先下载cuda,具体网页查看参考-6
基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第2张图片
红线处标记出来的就是查看以前的cuda版本,然后选择你所需要的就行,这里我用10.0

我选择的是以下的参数:
基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第3张图片
我下载的是cuda10.0的,用以匹配tensorflow1.13.1,因为之前看了一下我的centos是7的版本,所以这里version就选择7,我不采用联网下载的方式,就用本地下载,需要先将run文件下载到本地,然后再上传到服务器

Cudnn

下载链接在参考-7,不过下载这个需要注册个账号,也挺快的,而且cudnn挺小的,很好下
基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第4张图片
主要就是看着后面的for进行选择,找到对应的版本就行了

都下载下来之后再上传到服务器,接下来就准备安装了

安装过程

Cuda

首先安装cuda,这里我首先激活了我的虚拟环境,然后用cd命令进入到了cuda10.0那个run文件所在的文件夹下面,执行

sh cuda_10.0.130_410.48_linux.run

然后就开始了一系列安装操作
基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第5张图片
这里好像就是再问你是否同意某个协议,肯定输入accept啊
基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第6张图片
输完accept回车之后,就会问是否要安装英伟达驱动,输入y
然后就emmmm踩了个大坑!
会提示你没有root权限,如图
基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第7张图片
后来经过各种踩坑,终于摸索到了一个安装的办法!!!!
首先,看了很多别人的例子,需要安装的东西最多就两个,如图
基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第8张图片
这个图来自参考-3,可以看到安装的东西无非就两个,一个是toolkit,毕竟不安装工具包,下载cuda不是下载了个寂寞吗,其次samples就是常见的cuda用法,详情可以看一下参考-8,这里不再赘述,所以,正确的安装流程应该是这样:

基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第9张图片

  1. 问你安不安装驱动,一定要选择否,因为这里举例的是无root权限的操作,所以你操作不了这个
  2. 询问是否安装cuda10.0工具,装!
  3. 输入这个工具包安装位置,不要选默认位置,你也没有那个权限,我是自己创建了一个文件夹安装了一下
  4. 是否创建一个软链接,我理解的就是要不要创建一个快捷方式,我觉得没啥必要,就算了,软链接知识看一下参考-9,不过之后看到说无root权限对usr文件夹也不能操作,看来我是歪打正着了
  5. 要不要安装cuda操作示例,无所谓,吧,不过保险起见我就安装了
  6. 同样的自己写一个文件放进去

然后就会看到下面激动人心地提示正在安装了,md,到这一步真不容易啊感觉
基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第10张图片
最下面是一个警告,大概意思就是没有安装驱动,不过无所谓,毕竟是实验室的资源,已经有驱动了,至此cuda安装完成

补充(2022-10-17)

对该文章进行补充说明,我发现我安装过程长得和别人不一样的原因就是cuda版本不对,我现在重新安装了一个cuda10.1+cudnn7.6.4的环境,我发现10.1安装界面就长得一样了,这里记录一下:
基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第11张图片
首先还是输入accept,回车
基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第12张图片
这里安装你自己想安装的就行,选择是或否的方式是按一下空格,这里我只选择了toolkit10.1,然后就要修改路径了,光标放在那个选项上面,以大写的形式按A(最下面那一行看到的提示,这里被水印挡住了,挡住部分的内容是:‘A’: Advanced options)
按完A之后进入这个界面:
基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第13张图片
个人建议都别选,毕竟你没root权限,稳点好,然后在第一个里面设置一下路径就行了。
设置完之后按Done就行,然后再别的里面也是一样的修改(之前的界面还有一个options的选项,在里面都设置一下)
完了之后按install就行了,然后就会得到成功安装的提示
安装成功的提示是:
基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第14张图片
不成功的提示就是(我没设置路径,我还没root权限):
在这里插入图片描述

Cudnn

相对而言,cudnn的安装过程简单了许多,也不需要选择啥东西,总结一下就是:解压,复制,给权限,如图:
基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第15张图片
第一个箭头的部分,就是解压的命令,把cudnn的tgz文件解压到了当前工作的文件夹,然后我就cd进了这个文件夹,把其中的两个文件复制到了之前安装cuda的那个文件夹,在toolkit文件夹里面,有对应的include和lib64,最终执行cuda的时候是执行toolkit里面的,所以我们要复制过去,之后chmod a+r一下给所有用户添加读的权限,命令如下:

tar -xvf cudnn-10.0-linux-x64-v7.6.5.32.tgz  # 解压命令
cp include/cudnn.h /your_path/include/  # 复制文件
cp lib64/libcudnn* /your_path/lib64/
chmod a+r /your_path/include/cudnn.h  # 给刚才复制过来的文件加一个权限
chmod a+r /your_path/lib64/libcudnn*

环境变量的配置

这一部分的参考完全来自参考-1,可以看一下这位大佬的操作,其中他使用vim打开了.bashrc文件,这里个人建议可以直接在你的个人账户目录下找到这个文件直接修改,按照他的方法也可以,其中vim的操作我咨询了一下我旁边的同学,这里特别鸣谢汪兔乙同学。
vim打开之后如果想编辑,就输一下i
编辑完了想退出先按一下esc,然后输入:wq。就完事了,这个命令的意思是保存并退出。
基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第16张图片
把这个文件配置完之后记得刷新一下:

source ~/.bashrc

可以运行一下nvcc -V看一下版本是不是切换了
我这里成功换成了10.0
在这里插入图片描述
之后不是很放心啊,看到对应版本安装了一个torch1.2,测试了一下,结果很令人满意:
基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第17张图片
这样我们的cuda就配置好了

不同版本Cuda互相切换

这个网上找了好多教程,不过最后是自己摸索出来的,我用的方法是:
在.bashrc文件里面写入两种不同的变量路径,就是上一个配置环境变量的操作,如图:
基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第18张图片
需要哪个cuda就把另外一个注释掉就行了,然后别忘了刷新一下,命令如下:

source ~/.bashrc

然后我测试了一下,直接上结果:
基于linux系统下对conda虚拟环境中cuda和cudnn的安装(服务器无权限修改cuda版本的情况)_第19张图片
可以看到,之前cuda是10.1的,下面改完之后变10.0的了(因为有水印看的不是很清楚)

总结

然后应该就没什么了,至此无root权限安装cuda已经完成。
感谢以下几位同学的帮助:
阿果同学
网管同学
小李同学
汪兔乙同学

防火防盗防诈骗

你可能感兴趣的:(linux,服务器,conda)