Linux服务器中非 root 用户安装(多版本) CUDA 和 cuDNN

为什么是非root用户安装cuda和cudnn?

共用服务器时,系统公共环境中安装的cuda和cudnn的版本往往与项目需求不符合。而且你一般没有root权限,没办法更改系统公共环境中的cuda和cudnn,而且更改公共配置会影响别人使用。

而TensorFlow和pytorch等框架对cuda和cudnn版本很敏感。比如,cuda9.1和cuda9.0不能通用,cudnn7.1.4和cudnn7.0.5不能通用,版本号差一点都不行。(这一点会在跑别人训练好的模型时候体现。)所以一定要确定好具体cuda、cudnn以及TensorFlow具体版本,使其匹配。

这时候可以,在自己用户目录下装cuda和cudnn,不影响系统公共环境,满足自己需求。也不用任何root权限。

安装后,更改自己用户目录下的环境变量,指向自己路径下的cuda。

具体步骤如下文。

下载安装cuda(以9.1为例)

到NVIDIA官网 https://developer.nvidia.com/cuda-toolkit-archive 选择对应版本的cuda,这里选择9.1。
然后再选对应的系统型号和installer type

image

点“Base Installer”里面的下载链接,大约1.5G,
或者也可以自己复制链接地址用wget下载,然后安装

wget https://developer.nvidia.com/compute/cuda/9.1/Prod/local_installers/cuda_9.1.85_387.26_linux
# sh后的文件名以实际下载文件名为准,不如我下载之后文件名为“cuda_9.1.85_387.26_linux.1”
sh cuda_9.1.85_387.26_linux.run

安装指令之后,出现

# 按q退出协议说明. 
 
Do you accept the previously read EULA?
accept/decline/quit: accept

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
(y)es/(n)o/(q)uit: no

Install the CUDA 10.0 Toolkit?
(y)es/(n)o/(q)uit: yes

# 改成自己的用户名(要求绝对路径),这里可能会要求你再输入一遍
Enter Toolkit Location
 [ default is /usr/local/cuda-10.0 ]: /home/wuliyttaotao/cuda-10.0

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n

Install the CUDA 10.0 Samples?
(y)es/(n)o/(q)uit: y

# 使用默认路径,回车
Enter CUDA Samples Location
 [ default is /home/wuliyttaotao ]:    

下载安装cudnn

https://developer.nvidia.com/rdp/cudnn-archive
下载cudnn需要NVIDIA账号,花3分钟注册一个即可。

选择对应cuda版本号以及项目要求的cudnn版本(亲身经历是,系统公共目录下装的7.1.4,然后代码跑了一半报错说,人家原项目用的是7.0.5。然后无奈在自己用户路径下,新装了对应版本的cuda和cudnn)

image

选择cuDNN v7.0.5 Library for Linux(大概200多M),不要错选成cuDNN v7.0.5 Runtime for Ubuntu 16.04

因为下载cudnn是需要登录的,所以不便用wget下载,在自己电脑上下载后,再传到服务器上。

下载完 cuDNN,可能发现后缀是 .solitairetheme8,直接将这个后缀改成 .tgz 即可解压。

解压后发现cudnn总共分两个目录

复制 cuDNN 文件到 CUDA 安装目录:(cuDNN 解压到 ~/cuda 目录了,~/cuda-9.1 为自己设定的 CUDA 安装目录,~ 代表 /home/x007jianjian),并且给所有用户添加读的权限

cp ~/cuda/include/cudnn.h ~/cuda-9.1/include
cp ~/cuda/lib64/lib* ~/cuda-9.1/lib64

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

建立软连接:

cd ~/cuda-10.0/lib64
ln -sf libcudnn.so.7.6.4 libcudnn.so.7
ln -sf libcudnn.so.7 libcudnn.so
ldconfig -v

配置用户环境变量

修改 ~/.bashrc 文件,将下面两行加进去:(将 x007jianjian 改成自己的用户名)

export PATH=/home/wuliyttaotao/cuda-9.1/bin${PATH:+:${PATH}}  
export LD_LIBRARY_PATH=/home/wuliyttaotao/cuda-9.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

保存 ~/.bashrc 文件后,source ~/.bashrc 使其生效。

安装多版本cudnn,cuda

安装步骤同上述,需要哪个版本就把用户环境变量指向按个版本。

当然,也可以将用户环境变量指向系统公共的cuda

补充说明

安装cuda时候会出现

Installing the CUDA Toolkit in /home/x007jianjian/cuda-9.1 ...
Missing recommended library: libXi.so
Missing recommended library: libXmu.so

Installing the CUDA Samples in /home/x007jianjian ...
Copying samples to /home/x007jianjian/NVIDIA_CUDA-9.1_Samples now...
Finished copying samples.

===========
= Summary =
===========

Driver:   Not Selected
Toolkit:  Installed in /home/x007jianjian/cuda-9.1
Samples:  Installed in /home/x007jianjian, but missing recommended libraries

Please make sure that
 -   PATH includes /home/x007jianjian/cuda-9.1/bin
 -   LD_LIBRARY_PATH includes /home/x007jianjian/cuda-9.1/lib64, or, add /home/x007jianjian/cuda-9.1/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run the uninstall script in /home/x007jianjian/cuda-9.1/bin

Please see CUDA_Installation_Guide_Linux.pdf in /home/x007jianjian/cuda-9.1/doc/pdf for detailed information on setting up CUDA.

***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 9.1 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    sudo <CudaInstaller>.run -silent -driver

Logfile is /tmp/cuda_install_92427.log

上面提示“Driver: Not Selected”是正常现象。

建立软链接那一步会出现

/lib:
/usr/lib:
/sbin/ldconfig.real: Cannot stat /usr/lib/libopen-pal.so: No such file or directory
/sbin/ldconfig.real: Cannot stat /usr/lib/libopen-rte.so: No such file or directory
/sbin/ldconfig.real: Cannot stat /usr/lib/libmca_common_sm.so: No such file or directory
/sbin/ldconfig.real: Cannot stat /usr/lib/liboshmem.so: No such file or directory
    libsatlas.so -> libsatlas.so
    libmpi_mpifh.so.12 -> libmpi_mpifh.so.12.0.0
    libibverbs.so.1 -> libibverbs.so.1.0.0
    libmpi_usempi_ignore_tkr.so.6 -> libmpi_usempi_ignore_tkr.so.6.1.0
    libGraphicsMagickWand-Q16.so.2 -> libGraphicsMagickWand.so
    libgupnp-av-1.0.so.2 -> libgupnp-av-1.0.so.2.0.0
    libBLTlite.2.5.so.8.6 -> libBLTlite.2.5.so.8.6
    libopen-rte.so.12 -> libopen-rte.so.12.0.2
    libcollada-dom2.4-dp.so.0 -> libcollada-dom2.4-dp.so.2.4.4
    libmpi_cxx.so.1 -> libmpi_cxx.so.1.1.3
    libgjs.so.0 -> libgjs.so.0.0.0
    libGraphicsMagick-Q16.so.3 -> libGraphicsMagick.so
    libgupnp-dlna-gst-2.0.so.3 -> libgupnp-dlna-gst-2.0.so.3.0.0
    libmpi.so.12 -> libmpi.so.12.0.2
    libmutter.so.0 -> libmutter.so.0.0.0
    libmpi_usempif08.so.11 -> libmpi_usempif08.so.11.1.0
    libgupnp-dlna-2.0.so.3 -> libgupnp-dlna-2.0.so.3.0.0
    libBLT.2.5.so.8.6 -> libBLT.2.5.so.8.6
    libmca_common_sm.so.4 -> libmca_common_sm.so.4.0.4
    libmca_common_verbs.so.7 -> libmca_common_verbs.so.7.0.0
    libnetpbm.so.10 -> libnetpbm.so.10.0
    libompitrace.so.0 -> libompitrace.so.0.0.0
    libid3tag.so.0 -> libid3tag.so.0.3.0
    libbotan-1.10.so.1 -> libbotan-1.10.so.1.12
    libopen-pal.so.13 -> libopen-pal.so.13.0.2
/sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~: Permission denied

显示看起来像是报错。但实际用起来,暂时没发现什么影响。

root用户

Linux 服务器的用户如果有 root 权限,那直接删除原来的 cuDNN,然后再重装新版本。

删除已有的 cuDNN:

sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn*

其他安装方式跟非root用户相同,只不过是把用户路径替换成/usr/local,其它命令前加了sudo

还有一点

使用公共服务器的同学也请注意,大家在安装自己的cuda和cudnn后,最好删除安装文件,为自己和别人节省公共空间。(安装其他包也是一样,及时清理安装缓存文件)

reference

https://www.cnblogs.com/wuliytTaotao/p/12169315.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352