【CUDA】nvcc和nvidia-smi顯示的版本不一致?

Date: 2020/11/22

Coder: CW

Foreword:

CW 近日在自己的機子上發(fā)現(xiàn)右锨,nvcc --versionnvidia-smi 顯示出來的CUDA版本不一致瞧筛,其中前者顯示的版本是10.2,而后者是11.0抹估,但是深度學(xué)習(xí)相關(guān)的程序是能正常跑的,期間GPU也確實有在使用(通過nvidia-smi可以看出)弄兜。

由于個人一貫以來的“居安思我撸”風(fēng)格,擔(dān)心這種情況會埋坑替饿,于是查閱了相關(guān)資料進行了解语泽,正好也彌補了這部分知識的空白。本文會先解釋下 nvcc --version 和 nvidia-smi 各自顯示出來的版本號的意義视卢,然后分享下多版本CUDA切換的經(jīng)驗踱卵,最后再補充下如何正確選擇與CUDA版本匹配的Pytorch。


nvcc & nvidia-smi

nvcc 屬于CUDA的編譯器腾夯,將程序編譯成可執(zhí)行的二進制文件颊埃,nvidia-smi 全稱是 NVIDIA System Management Interface ,是一種命令行實用工具蝶俱,旨在幫助管理和監(jiān)控NVIDIA GPU設(shè)備班利。

CUDA有 runtime apidriver api,兩者都有對應(yīng)的CUDA版本榨呆, nvcc --version 顯示的就是前者對應(yīng)的CUDA版本罗标,而 nvidia-smi顯示的是后者對應(yīng)的CUDA版本。

用于支持driver api的必要文件由?GPU driver installer?安裝积蜻,nvidia-smi就屬于這一類API闯割;而用于支持runtime api的必要文件是由?CUDA Toolkit installer?安裝的。nvcc是與CUDA Toolkit一起安裝的CUDA compiler-driver tool竿拆,它只知道它自身構(gòu)建時的CUDA runtime版本宙拉,并不知道安裝了什么版本的GPU driver,甚至不知道是否安裝了GPU driver丙笋。

CUDA Toolkit Installer通常會集成了GPU driver Installer谢澈,如果你的CUDA均通過CUDA Tooklkit Installer來安裝煌贴,那么runtime api 和 driver api的版本應(yīng)該是一致的,也就是說锥忿, nvcc --version 和 nvidia-smi 顯示的版本應(yīng)該一樣牛郑。否則,你可能使用了單獨的GPU driver installer來安裝GPU dirver敬鬓,這樣就會導(dǎo)致 nvidia-smi 和 nvcc --version 顯示的版本不一致了淹朋。

通常,driver api的版本能向下兼容runtime api的版本钉答,即 nvidia-smi 顯示的版本大于nvcc --version 的版本通常不會出現(xiàn)大問題础芍。


多版本CUDA切換

多版本CUDA下載地址

進入以上鏈接下載指定版本的CUDA,這里以?CUDA Toolkit 11.0 Update 1?為例:

選擇自己的操作系統(tǒng)数尿、架構(gòu)以及對應(yīng)的安裝類型者甲。

CUDA安裝(i)

安裝類型建議選擇 runfile 安裝,使用deb的方式可能會將已安裝的較新的顯卡驅(qū)動替換掉砌创。

選擇完畢后根據(jù)提示的命令進行安裝。

CUDA安裝(ii)

接下來會出現(xiàn)窗口進行一些安裝選項的選擇鲫懒,若你本地已經(jīng)有了Driver并且你不想替換掉嫩实,那么可以不選擇Driver進行安裝。

安裝完畢后窥岩,會在 /usr/local/ 目錄下出現(xiàn)相應(yīng)版本的cuda文件夾甲献,我這里是 /usr/local/cuda-11.0/。在前言中提到颂翼,我 nvcc --version 的版本是10.2晃洒,現(xiàn)在我要將其替換為剛下載的11.0,那么可以:

1. 編輯 ~/.bashrc 文件

2. 更改 PATHLD_LIBRARY_PATH 環(huán)境變量:

export PATH=/usr/local/cuda-11.0:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH

3. 保存內(nèi)容退出朦乏,使其生效:source ~/.bashrc

現(xiàn)在球及,使用 nvcc --version 可以看到顯示的版本已經(jīng)是11.0了,與 nvidia-smi 的一致呻疹。

在這種方式下吃引,每次我想使用其它CUDA版本的runtime api時,都需要更改~/.bashrc文件刽锤,這里再介紹另一種避免更改環(huán)境變量的方式:

i). 首先確保 PATH 和 LD_LIBRARY_PATH 中含有 /usr/local/cuda 路徑镊尺,注意是/cuda而不是/cuda-xxx

ii).?刪除之前創(chuàng)建的軟鏈接:rm -rf /usr/local/cuda

iii). 建立新的軟鏈接:sudo ln -s/usr/local/cuda-10.2/ /usr/local/cuda/ (此處代表我想使用10.2版本)

這樣之后,通過 nvcc --version 可以看到CUDA runtime api的版本又切換回10.2了并思。


如何選擇與CUDA版本匹配的Pytorch

那么 nvcc --version 與 nvidia-smi 的版本不一致的情況下庐氮,有些朋友可能就會懵了:我該如何選擇與CUDA版本匹配的Pytorch呢?(煉個丹也太南了吧~K伪恕)

其實弄砍,只要上去Pytorch官網(wǎng)瞄瞄仙畦,細(xì)心的你應(yīng)該能夠發(fā)現(xiàn)在命令中指定CUDA版本時,用的是?cudatoolkit输枯,而 nvcc --version 顯示的版本就是通過CUDA Toolkit Installer在安裝時決定的议泵,因此,我們應(yīng)該選擇與 nvcc --version 對應(yīng)的CUDA版本匹配的Pytorch桃熄。

Pytorch官網(wǎng)頁面

相對而言先口,nvidia-smi 顯示的是driver api對應(yīng)的CUDA版本,若使用了單獨的GPU driver Installer來安裝驅(qū)動瞳收,那么nvidia-smi顯示的版本與CUDA Toolkit所安裝的版本就很可能不一致了碉京。


END

許多煉丹愛好者可能都只注重花里胡哨的深度學(xué)習(xí)知識, 選擇性地?zé)o視了關(guān)于硬件螟深、GPU谐宙、計算芯片等方面的知識,這樣界弧,自己的短板就未免過于明顯了凡蜻。雖然不要求洋洋精通,但只要是與你從業(yè)領(lǐng)域相關(guān)的知識都應(yīng)或多或少有所涉獵垢箕,這樣做起事來才能得心應(yīng)手划栓。

另外,關(guān)于GPU與CUDA的知識可參考這篇文章?GPU與CUDA知識揭秘?条获,內(nèi)容全面同時也敘述簡潔忠荞,非常棒,感恩樂于分享知識的朋友帅掘!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載委煤,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末修档,一起剝皮案震驚了整個濱河市碧绞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌萍悴,老刑警劉巖荣暮,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谨垃,死亡現(xiàn)場離奇詭異胸梆,居然都是意外死亡龄章,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門撕予,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鲫惶,“玉大人,你說我怎么就攤上這事实抡∏纺福” “怎么了欢策?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長赏淌。 經(jīng)常有香客問我踩寇,道長,這世上最難降的妖魔是什么六水? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任俺孙,我火速辦了婚禮,結(jié)果婚禮上掷贾,老公的妹妹穿的比我還像新娘睛榄。我一直安慰自己,他們只是感情好想帅,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布场靴。 她就那樣靜靜地躺著,像睡著了一般港准。 火紅的嫁衣襯著肌膚如雪旨剥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天浅缸,我揣著相機與錄音泞边,去河邊找鬼。 笑死疗杉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蚕礼。 我是一名探鬼主播烟具,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼奠蹬!你這毒婦竟也來了朝聋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤囤躁,失蹤者是張志新(化名)和其女友劉穎冀痕,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狸演,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡言蛇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了宵距。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腊尚。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖满哪,靈堂內(nèi)的尸體忽然破棺而出婿斥,到底是詐尸還是另有隱情劝篷,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布民宿,位于F島的核電站娇妓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏活鹰。R本人自食惡果不足惜哈恰,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望华望。 院中可真熱鬧蕊蝗,春花似錦、人聲如沸赖舟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宾抓。三九已至子漩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間石洗,已是汗流浹背幢泼。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留讲衫,地道東北人缕棵。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像涉兽,于是被迫代替她去往敵國和親招驴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容