深度學(xué)習(xí)環(huán)境搭建過程中躬审,初期階段,相信大家都會(huì)遇到,動(dòng)不動(dòng) TensorFlow 或者 Pytorch 庫與Cuda承边、或者Cudnn 版本不匹配的問題遭殉;
因此很多時(shí)候,在一臺(tái)服務(wù)器中安裝多個(gè)Cuda逐步成為了各位搬磚大佬們的必然選擇
本文為大家揭秘一臺(tái)全新服務(wù)器博助、我會(huì)怎樣安排 Cuda险污、使得我的學(xué)習(xí)生產(chǎn)更為高效
?? 服務(wù)器是團(tuán)隊(duì)或者項(xiàng)目組的,因此cuda還是自己的好用8辉馈;着础!
第一部分為大家展示:Ubuntu系統(tǒng) Cuda10.0 安裝過程
- 安裝系統(tǒng) :Ubuntu 18.04.5
?? 1 cuda官網(wǎng)下載地址
cat /proc/version (Linux查看當(dāng)前操作系統(tǒng)版本信息)
?? 2 安裝
# 先對(duì)安裝包《cuda_10.0.130_410.48_linux.run》的屬性進(jìn)行修改為可執(zhí)行窖式;
chmod 755 cuda_10.0.130_410.48_linux.run
# 不要使用 sudo 進(jìn)行安裝
sh cuda_10.0.130_410.48_linux.run
過程如下蚁飒,按空格讀完協(xié)議,進(jìn)行如下圖的操作:
備注: 這里沒有安裝新的驅(qū)動(dòng)萝喘,是因?yàn)椋?/p>
- 1: root 用戶 安裝的 驅(qū)動(dòng) 能夠 支持當(dāng)前 CUDA10.0的運(yùn)行淮逻;
- 2: 驅(qū)動(dòng)的更新安裝,需要 root 權(quán)限 (也就是說 一臺(tái) Linux 服務(wù)器 只能 安裝 一個(gè)英偉達(dá)內(nèi)核驅(qū)動(dòng))蜒灰,團(tuán)隊(duì)的服務(wù)器弦蹂,我沒有權(quán)限去更新服務(wù)器的顯卡驅(qū)動(dòng);
- 3:如果服務(wù)器本身 驅(qū)動(dòng)版本 高 能夠 同時(shí) 支持 CUDA10 和 CUDA9 强窖,那么我們這里安裝的 CUDA10.0, 后面運(yùn)行程序便是可行的凸椿;
?? 3:環(huán)境變量的配置
cd /home/zhijian
vim .bashrc
# 在最下方添加剛剛安裝cuda的路徑:
---
export PATH="/home/zhijian/usr/local/cuda10/bin:$PATH"
export LD_LIBRARY_PATH="/home/zhijian/usr/local/cuda10/lib64:$LD_LIBRARY_PATH"
---
# 保存之后,使配置生效:
source .bashrc
- 命令行輸入
nvcc -V
查看cuda版本翅溺,效果如下:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130
說明 cuda10.0此次安裝OK脑漫,已經(jīng)不再使用服務(wù)器公共的cuda了
?? 配置自己的cudnn, 這里配置的cudnn版本為:7.6.0
?? 1 官網(wǎng)下載
這個(gè)下載需要郵箱注冊(cè)和登錄,容易忘記密碼咙崎,就很煩有沒有优幸。。褪猛。
?? 2 解壓 cudnn
從Nvidia官網(wǎng)上下載下來的cudnn for linux的文件格式是.solitairetheme8网杆,想要解壓的話需要先轉(zhuǎn)成tgz格式再解壓(這個(gè)操作我也被驚到了):
cp cudnn-10.0-linux-x64-v7.6.0.64.solitairetheme8 cudnn-10.0-linux-x64-v7.6.0.64.tgz
tar -zxvf cudnn-10.0-linux-x64-v7.6.0.64.tgz
?? 3 安裝配置【替換即可】
cp cuda/include/cudnn.h /home/zhijian/usr/local/cuda10/include/
cp cuda/lib64/libcudnn.s* /home/zhijian/usr/local/cuda10/lib64/
chmod 755 /home/zhijian/usr/local/cuda10/include/cudnn.h
# 查看cudnn版本
cat /home/zhijian/usr/local/cuda10/include/cudnn.h | grep CUDNN_MAJOR -A 2
- 我得到的正確輸出如下:
?? 友情提示
我上面安裝的 cuda10.0 和 cudnn 7.6.0 是因?yàn)榇a訓(xùn)練TensorFlow-GPU 版本為2.0,各位需要根據(jù)自己的需求情況來安裝相應(yīng)的 cuda 和 cudnn版本伊滋,版本不匹配有時(shí)候會(huì)導(dǎo)致很多麻煩吶...
TensorFlow2.0-GPU 訓(xùn)練走起...
---核心干貨知識(shí)點(diǎn)上線---
?? 一臺(tái) Linux 服務(wù)器, cuda9 和 cuda 10 可以共存嗎笑旺?
這樣的情況是可以共存的:
比如:已經(jīng)安裝了高版本的 Cuda 和 對(duì)應(yīng)高版本內(nèi)核昼浦, 而 這個(gè)驅(qū)動(dòng) 同時(shí)也支持 低版本的CUDA運(yùn)行,這種情況通過 修改 配置 文件的方式 筒主,可以 自由進(jìn)行 Cuda 的切換关噪。
但是如果系統(tǒng)先安裝的 cuda9 和對(duì)應(yīng)驅(qū)動(dòng)鸟蟹, 然后你想要給當(dāng)前 非 Root 用戶安裝的 cuda10 ,因?yàn)?沒有 root權(quán)限, 無法 更新 驅(qū)動(dòng) ,此時(shí) 便不行糕篇。
?? 因此,給我一臺(tái)新的服務(wù)器锦针,我會(huì)怎么安排 Cuda?
- Root 權(quán)限 用戶,給 服務(wù)器安裝盡可能 高版本的 驅(qū)動(dòng) 內(nèi)核置蜀,例如 Cuda 11
- 普通用戶奈搜,根據(jù)自己的項(xiàng)目需求,可以安裝自己的 Cuda
系統(tǒng)默認(rèn)的Cuda 安裝位置 和 配置如下:
export PATH=/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda
普通用戶盯荤,配置自己的Cuda 安裝目錄馋吗,可以配置多個(gè),但是 同一時(shí)刻秋秤,只能使用其中一個(gè)版本
我這里是 cuda10宏粤,根據(jù)自己的需求,可以配置為 cuda9 cuda8 對(duì)應(yīng)的安裝目錄
- 比如說我只配置了一個(gè) cuda , 那么我注釋掉配置灼卢,便會(huì)使用 系統(tǒng)默認(rèn)的Cuda绍哎;
#export PATH="/home/moli/usr/local/cuda10/bin:$PATH"
#export LD_LIBRARY_PATH="/home/moli/usr/local/cuda10/lib64:$LD_LIBRARY_PATH"
- 配置文件為,每個(gè)用戶根目錄下的 .bashrc 文件鞋真;
# 配置操作如下:
cd ~
vim .bashrc
# 使配置生效即可
source .bashrc
?? 平時(shí)如何進(jìn)行 Cuda 的版本切換
- 當(dāng)前而言崇堰,給自己用戶安裝一個(gè) Cuda10.X 或者 Cuda11.X 已經(jīng)基本夠用
- 如果遇到不同的項(xiàng)目確實(shí)只能適配 不同版本的Cuda ,這時(shí)涩咖,就需要自己安裝多個(gè) Cuda
- 需要掌握對(duì) ~/.bashrc 進(jìn)行 編輯海诲,配置 不同版本 Cuda
- 如下所示,對(duì)于深度學(xué)習(xí)Python項(xiàng)目檩互,每次切換版本特幔,只需要打開自己當(dāng)前需要的Cuda配置即可
- 如果是C++項(xiàng)目,則在 CMakeLists.txt 中進(jìn)行 Cuda配置即可
# >>> 服務(wù)器 root 用戶 安裝的Cuda10.0
#export PATH=/usr/local/cuda-10.0/bin:$PATH
#export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
#export CUDA_HOME=/usr/local/cuda
# >>> 我自己安裝的Cuda 11 add by ml Cuda 11 path
export PATH=/home/ml/usr/mycuda/bin:$PATH
export LD_LIBRARY_PATH=/home/ml/usr/mycuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/home/ml/usr/mycuda
# 如果有必要闸昨,你還可以配置一個(gè) Cuda9蚯斯、Cuda8
...
博主簡介:軟件工程碩士、已畢業(yè)饵较、總計(jì) 5w 讀者 粉絲
- ?? 計(jì)算機(jī)視覺:超分重建溉跃、圖像修復(fù)、目標(biāo)檢測告抄、風(fēng)格遷移 等領(lǐng)域 稍有所學(xué)
- ?? AI 工程化:Ncnn、MNN嵌牺、TensorRT 正在 學(xué)習(xí)
- ?? C++打洼、Python龄糊、Java 略懂一二
取經(jīng)路上,讓墨理學(xué)AI 陪你暢享更多有趣AI