顯卡驅(qū)動CUDA?和?pytorch?CUDA?之間的區(qū)別
寫在前面
我的 CUDA 版本是什么? 這個問題本身就是有問題的,因為沒有搞清楚cuda的分類
- 這里的 CUDA 說的是 Driver CUDA 還是 Runtime CUDA?
- 如果是 Runtime CUDA,那系統(tǒng)可能有多個,說的是哪個?用 apt-get 裝的?PyTorch 自帶的?
想知道答案的話往下看,相信看完之后應(yīng)該有所感悟
如何查看CUDA 版本
常見的查看CUDA版本的指令有如下幾個
nvidia-smi nvcc --version python -c "import torch; print(torch.version.cuda)"
nvidia-smi

nvcc --version
我先在用的是Windows電腦,這里是一張Linux 網(wǎng)圖

python -c “import torch; print(torch.version.cuda)”

為何三個指令 三種結(jié)果?
nvidia-smi
這個命令一旦裝完顯卡驅(qū)動(nvidia-driver)就可以使用了,驅(qū)動程序提供最底層的程序接口,直接與硬件打交道。插上顯卡的計算機(jī)也必須要裝上驅(qū)動程序才能使用顯卡。所以 nvidia-smi 的輸出幾乎都是顯卡的硬件信息。
系統(tǒng)同一時間只能安裝一個版本的驅(qū)動程序,如果安裝多套版本可能會導(dǎo)致未定義的錯誤,另外驅(qū)動程序保持最新版本即可。
那這里的 CUDA Version 是代表什么呢?其實驅(qū)動程序也有 CUDA,叫做 Driver CUDA,這里指的是 Driver CUDA 的版本。而幾乎所有的框架程序,所使用的 CUDA 都不是 Driver CUDA,而是 NVIDIA 提供的更上層的編程接口,叫做 Runtime CUDA
nvcc 和 torch.version.cuda
首先 nvcc 是一個編譯器,這個編譯器是用戶在安裝 Runtime CUDA 的時候附帶的。因此 nvcc 打印的是 Runtime CUDA 的版本。同樣的,torch.version.cuda 打印的也是 Runtime CUDA 的版本,那這兩個版本為什么也不同呢?我們需要先了解Runtime CUDA。
Runtime CUDA
Runtime CUDA 是 NVIDIA 封裝的上層接口,幾乎所有的應(yīng)用程序,都是直接調(diào)用 Runtime CUDA 的 API,而 Runtime CUDA 內(nèi)部調(diào)用 Driver 的接口。所以通常所說的 CUDA 都是指的 Runtime CUDA(除非是驅(qū)動開發(fā)的人員)。另外 NVIDIA 有一個規(guī)則,Runtime CUDA 的版本號必須小于等于Driver CUDA 的版本號,所以 nvidia-smi 輸出的 CUDA 版本可以理解為該系統(tǒng)所能安裝的最高 CUDA 版本號是多少。
安裝方法
nvcc --version 輸出的是當(dāng)前安裝的 CUDA 的版本,而系統(tǒng)同一時間還可以安裝多套 CUDA,并且安裝的方式還多種多樣,一般來說有以下幾種安裝方式:
PyTorch 本身自帶 CUDA
# 會自動安裝 CUDA 10.2 pip3 install torch # 會自動安裝 CUDA 11.3 pip3 install torch --extra-index-url https://download.pytorch.org/whl/cu113 # 會自動安裝 CUDA 11.6 pip3 install torch --extra-index-url https://download.pytorch.org/whl/cu116
有人可能會問:為什么裝了 PyTorch 之后,沒有 nvcc 這個命令,或是 nvcc --version 顯示的 CUDA 和 PyTorch 安裝的 CUDA 版本對不上?
上文說了,一個系統(tǒng)可能有多套 CUDA,如果 nvcc --version 顯示的 CUDA 對不上號,是因為系統(tǒng)本身安裝了其他版本的 CUDA。另外,PyTorch 自帶的 CUDA 只包含庫文件,沒有 nvcc 編譯器,所以沒有 nvcc 這個命令。
通過 Ubuntu 的官方源安裝
sudo apt-get install nvidia-cuda-toolkit
通過 conda 安裝
conda search -c conda-forge cudatoolkit # 列出所有可以安裝的版本 conda install -c conda-forge cudatoolkit=xx.x.x
通過官方安裝包訪問下面的鏈接,可以下載到不同版本的安裝包:toolkits
torch官網(wǎng)有詳細(xì)的安裝cuda的步驟,自己去官網(wǎng)找一下就好了
到此這篇關(guān)于顯卡驅(qū)動CUDA 和 pytorch CUDA 之間的區(qū)別的文章就介紹到這了,更多相關(guān)顯卡驅(qū)動CUDA 和 pytorch CUDA內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 點集排序之帶索引的Z字形排序算法實現(xiàn)代碼
這篇文章介紹了如何使用Python在Grasshopper中實現(xiàn)點集排序功能,包括點的Y坐標(biāo)分組和X坐標(biāo)排序,以及追蹤每個點的原始索引位置,通過創(chuàng)建點索引對、分組邏輯和排序,實現(xiàn)了Z字形排序算法,感興趣的朋友一起看看吧2025-01-01
Python(TensorFlow框架)實現(xiàn)手寫數(shù)字識別系統(tǒng)的方法
這篇文章主要介紹了Python(TensorFlow框架)實現(xiàn)手寫數(shù)字識別系統(tǒng)的方法。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05
Python實現(xiàn)將json文件生成C語言的結(jié)構(gòu)體的腳本分享
這篇文章主要為大家詳細(xì)介紹了Python如何實現(xiàn)將json文件生成C語言的結(jié)構(gòu)體,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-09-09
Python實現(xiàn)查找字符串?dāng)?shù)組最長公共前綴示例
這篇文章主要介紹了Python實現(xiàn)查找字符串?dāng)?shù)組最長公共前綴,涉及Python針對字符串的遍歷、判斷、計算等相關(guān)操作技巧,需要的朋友可以參考下2019-03-03

