咱們能不能作到不借助 root 權限給 Linux 系統安裝 CUDA?bash
答案是有可能的,可是「醜話說在前面」,顯卡驅動須要比較新才行。服務器
那麼咱們爲何會有這種奇怪的需求呢?一種可能的狀況是,服務器由於不一樣的人使用的版本不同的緣由,沒法輕易改動 CUDA 的版本。可是咱們做爲普通用戶,又想使用新版的 CUDA(而更新驅動通常不會對其餘用戶產生影響,除非他們正在佔用顯卡)。那麼該怎麼作呢?工具
拿目前最新的版本 CUDA 10.2 爲例。首先,咱們在 NVIDIA 官網找到 CUDA 下載連接,選擇 runfile:測試
下載好的文件咱們簡稱爲 cuda.run
。下載完畢以後,運行安裝工具。運行這個文件有兩種方法。任選其一便可。spa
# 方法一:修改文件屬性,使其能夠運行 chmod +x cuda.run ./cuda.run # 方法二:直接 sh sh cuda.run
運行安裝工具後,首先是接受 EULA:3d
若是是舊版本(好比 9.x)的 CUDA,閱讀 EULA 的界面會特別長。這裏的一個小技巧是,不要按住回車鍵,而是按住空格鍵來進行跳過。code
這裏咱們不要安裝驅動(Driver),由於驅動必定須要 root 纔可以安裝。一旦選擇,一定會安裝失敗。咱們能夠移動光標到這些不須要的項目,而後按下Enter
取消勾選:blog
除了 Toolkit 之外,下面的幾個其實也不須要。能夠根據狀況選擇安裝(好比能夠安裝 Samples,後續測試 CUDA 以及 cuDNN 是否安裝成功)。這裏我選擇的是僅安裝 Toolkit。get
接下來咱們的任務,就是修改安裝路徑到本身的 home
下。默認狀況下,it
/usr/local/cuda-10.2/
/usr/local/cuda-10.2/lib64/
因此咱們要對這兩個進行修改。打開 Options。若是不安裝 Driver 和 Samples,那麼這兩個不用管。不然也須要修改他們的安裝位置。打開 Toolkit Options,而後 Change Toolkit Install Path,修改成/home/<username>/cuda-10.2/
:
而後 Done,返回上一級,再選擇 Library install path:
並將安裝目錄修改成:/home/<username>/cuda-10.2/lib64/
。若是是 9.x 版本的 CUDA,一旦在前面安裝了 CUDA 本體的安裝位置,那麼 library 的位置會自動變成本體安裝目錄下的 lib64
。
而後就能夠開始安裝了。
安裝完畢以後,須要配置一下 .bashrc
,在其下方添加:
export PATH=/home/<username>/cuda-10.2/bin:$PATH export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/<username>/cuda-10.2/lib64/
保存後運行一下 source .bashrc
,就能夠用 nvcc -V
試試有沒有安裝成功了。
咱們還能夠考慮安裝 cuDNN。官網下載須要註冊並登陸:https://developer.nvidia.com/cudnn
下載完 .tar.gz 以後,能夠用 tar -zxvf
解壓縮,而後將裏面的文件拷貝到 CUDA 安裝目錄下的指定位置便可。具體爲:
cp <CUDNN>/cuda/include/cudnn.h <CUDA>/include/ cp <CUDNN>/cuda/lib64/libcudnn* <CUDA>/lib64 chmod a+r <CUDA>/include/cudnn.h <CUDA>/lib64/libcudnn*
到此,CUDA 10.2 與 cuDNN 安裝完畢。
可是,有比較大的可能會由於你安裝的 CUDA 版本太新,而服務器上的顯卡驅動又太舊了(好比是 CUDA 9.0 安裝包自帶的驅動),那麼仍舊是沒有辦法正常使用的(好比使用 GPU 版的 PyTorch)。想要真正能用,仍是要說服管理員將服務器的驅動進行更新。可是能夠放心的是,更新了驅動以後,舊版本的 CUDA 依舊是能夠用的。
(這篇文章的方法借鑑自:Install Cuda without root - Stack Overflow