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

【CUDA】nvcc和nvidia-smi显⽰的版本不⼀致?
Date: 2020/11/22
Coder: CW
Foreword:
nvidia-smi 显⽰出来的CUDA版本不⼀致,其中前者显⽰的版本是10.2,⽽后者是
CW 近⽇在⾃⼰的机⼦上发现,nvcc --version
nvcc --version 和 nvidia-smi
11.0,但是深度学习相关的程序是能正常跑的,期间GPU也确实有在使⽤(通过nvidia-smi可以看出)。
由于个⼈⼀贯以来的“居安思危”风格,担⼼这种情况会埋坑,于是查阅了相关资料进⾏了解,正好也弥补了这部分知识的空⽩。本⽂会先解释下nvcc --version 和 nvidia-smi 各⾃显⽰出来的版本号的意义,然后分享下多版本CUDA切换的经验,最后再补充下如何正确选择与CUDA版本匹配的Pytorch。
nvcc & nvidia-smi
NVIDIA System Management Interface
System Management Interface ,是⼀
nvidia-smi 全称是 NVIDIA
编译器,将程序编译成可执⾏的⼆进制⽂件,nvidia-smi
nvcc 属于CUDA的编译器
nvcc
命令⾏实⽤⼯具,旨在帮助管理和监控NVIDIA GPU设备。
管理和监控NVIDIA GPU设备。
种命令⾏实⽤⼯具
driver api,两者都有对应的CUDA版本, nvcc --version 显⽰的就是前者对应的CUDA版本,⽽ nvidia-smi显CUDA有 runtime api
runtime api 和 driver api
⽰的是后者对应的CUDA版本。
⽤于⽀持driver api的必要⽂件由 GPU driver installer
GPU driver installer 安装,nvidia-smi就属于这⼀类API;⽽⽤于⽀持runtime api的必要⽂件是
它只知道它⾃⾝构建时的
由 CUDA Toolkit installer
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 的版本通常不会出现⼤问
nvidia-smi 显⽰的版本⼤于nvcc --version 的版本通常不会出现⼤问
通常,driver api的版本能向下兼容runtime api的版本
题。uc2005
多版本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 安装完毕后,会在 /usr/local/
樟宜医院的版本是10.2,现在我要将其替换为刚下载的11.0,那么可以:
~/.bashrc ⽂件
1. 编辑 ~/.bashrc
LD_LIBRARY_PATH 环境变量:
2. 更改 PATH
PATH 和 LD_LIBRARY_PATH
/usr/local/cuda-11.0:$PATH
gogo70export PATH=/usr/local/cuda-11.0:
/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64:
source ~/.bashrc
3. 保存内容退出,使其⽣效:source ~/.bashrc
现在,使⽤ nvcc --version 可以看到显⽰的版本已经是11.0了,与 nvidia-smi 的⼀致。
在这种⽅式下,每次我想使⽤其它CUDA版本的runtime api时,都需要更改~/.bashrc⽂件,这⾥再介绍另⼀种避免更改环境变量的⽅式:
注意是/cuda⽽不是/cuda-xxx
/usr/local/cuda 路径,注意是/cuda⽽不是/cuda-xxx
i). ⾸先确保 PATH 和 LD_LIBRARY_PATH 中含有 /usr/local/cuda
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呢?(炼个丹也太南了吧~!)
cudatoolkit,⽽ nvcc --version 显⽰的版本其实,只要上去Pytorch官⽹瞄瞄,细⼼的你应该能够发现在命令中指定CUDA版本时,⽤的是 cudatoolkit
应该选择与 nvcc --version 对应的CUDA版本匹配的Pytorch。
就是通过CUDA Toolkit Installer在安装时决定的,因此,我们应该选择与 nvcc --version 对应的CUDA版本匹配的Pytorch。
2010金鹰节Pytorch官⽹页⾯
相对⽽⾔,nvidia-smi 显⽰的是driver api对应的CUDA版本,若使⽤了单独的GPU driver Installer来安装驱动,那么nvidia-smi显⽰的版本与CUDA Toolkit所安装的版本就很可能不⼀致了。现代主义文学
END
许多炼丹爱好者可能都只注重花⾥胡哨的深度学习知识, 选择性地⽆视了关于硬件、GPU、计算芯⽚等⽅⾯的知识,这样,⾃⼰的短板就未免过于明显了。虽然不要求洋洋精通,但只要是与你从业领域相关的知识都应或多或少有所涉猎,这样做起事来才能得⼼应⼿。
另外,关于GPU与CUDA的知识可参考这篇⽂章 GPU与CUDA知识揭秘,内容全⾯同时也叙述简洁,⾮常棒,感恩乐于分享知识的朋友!

本文发布于:2024-09-20 21:23:11,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/532450.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:版本   安装   知识   选择   对应   相关   监控   分享
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议