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

Date: 2020/11/22

Coder: CW

Foreword:

CW 近日在自己的机子上发现,nvcc --versionnvidia-smi 显示出来的CUDA版本不一致,其中前者显示的版本是10.2,而后者是11.0,但是深度学习相关的程序是能正常跑的,期间GPU也确实有在使用(通过nvidia-smi可以看出)。

由于个人一贯以来的“居安思危”风格,担心这种情况会埋坑,于是查阅了相关资料进行了解,正好也弥补了这部分知识的空白。本文会先解释下 nvcc --version 和 nvidia-smi 各自显示出来的版本号的意义,然后分享下多版本CUDA切换的经验,最后再补充下如何正确选择与CUDA版本匹配的Pytorch。


nvcc & nvidia-smi

nvcc 属于CUDA的编译器,将程序编译成可执行的二进制文件,nvidia-smi 全称是 NVIDIA System Management Interface ,是一种命令行实用工具,旨在帮助管理和监控NVIDIA GPU设备。

CUDA有 runtime apidriver api,两者都有对应的CUDA版本, nvcc --version 显示的就是前者对应的CUDA版本,而 nvidia-smi显示的是后者对应的CUDA版本。

用于支持driver api的必要文件由 GPU driver installer 安装,nvidia-smi就属于这一类API;而用于支持runtime api的必要文件是由 CUDA Toolkit installer 安装的。nvcc是与CUDA Toolkit一起安装的CUDA compiler-driver tool,它只知道它自身构建时的CUDA runtime版本,并不知道安装了什么版本的GPU driver,甚至不知道是否安装了GPU driver。

CUDA Toolkit Installer通常会集成了GPU driver Installer,如果你的CUDA均通过CUDA Tooklkit Installer来安装,那么runtime api 和 driver api的版本应该是一致的,也就是说, nvcc --version 和 nvidia-smi 显示的版本应该一样。否则,你可能使用了单独的GPU driver installer来安装GPU dirver,这样就会导致 nvidia-smi 和 nvcc --version 显示的版本不一致了。

通常,driver api的版本能向下兼容runtime api的版本,即 nvidia-smi 显示的版本大于nvcc --version 的版本通常不会出现大问题。


多版本CUDA切换

多版本CUDA下载地址

进入以上链接下载指定版本的CUDA,这里以 CUDA Toolkit 11.0 Update 1 为例:

选择自己的操作系统、架构以及对应的安装类型。

CUDA安装(i)

安装类型建议选择 runfile 安装,使用deb的方式可能会将已安装的较新的显卡驱动替换掉。

选择完毕后根据提示的命令进行安装。

CUDA安装(ii)

接下来会出现窗口进行一些安装选项的选择,若你本地已经有了Driver并且你不想替换掉,那么可以不选择Driver进行安装。

安装完毕后,会在 /usr/local/ 目录下出现相应版本的cuda文件夹,我这里是 /usr/local/cuda-11.0/。在前言中提到,我 nvcc --version 的版本是10.2,现在我要将其替换为刚下载的11.0,那么可以:

1. 编辑 ~/.bashrc 文件

2. 更改 PATHLD_LIBRARY_PATH 环境变量:

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

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

3. 保存内容退出,使其生效:source ~/.bashrc

现在,使用 nvcc --version 可以看到显示的版本已经是11.0了,与 nvidia-smi 的一致。

在这种方式下,每次我想使用其它CUDA版本的runtime api时,都需要更改~/.bashrc文件,这里再介绍另一种避免更改环境变量的方式:

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

ii). 删除之前创建的软链接: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呢?(炼个丹也太南了吧~!)

其实,只要上去Pytorch官网瞄瞄,细心的你应该能够发现在命令中指定CUDA版本时,用的是 cudatoolkit,而 nvcc --version 显示的版本就是通过CUDA Toolkit Installer在安装时决定的,因此,我们应该选择与 nvcc --version 对应的CUDA版本匹配的Pytorch。

Pytorch官网页面

相对而言,nvidia-smi 显示的是driver api对应的CUDA版本,若使用了单独的GPU driver Installer来安装驱动,那么nvidia-smi显示的版本与CUDA Toolkit所安装的版本就很可能不一致了。


END

许多炼丹爱好者可能都只注重花里胡哨的深度学习知识, 选择性地无视了关于硬件、GPU、计算芯片等方面的知识,这样,自己的短板就未免过于明显了。虽然不要求洋洋精通,但只要是与你从业领域相关的知识都应或多或少有所涉猎,这样做起事来才能得心应手。

另外,关于GPU与CUDA的知识可参考这篇文章 GPU与CUDA知识揭秘 ,内容全面同时也叙述简洁,非常棒,感恩乐于分享知识的朋友!

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

推荐阅读更多精彩内容