草庐IT

ubuntu下安装多版本cuda及版本切换教程

zeeq_ 2023-04-25 原文

1 下载runfile安装文件

  首先,从官网下载所需版本的cuda安装包,下载链接。选择对应版本后,会跳转到该版本的配置信息页面。比如我是ubuntu20.04系统,已经安装好了cuda10.0,但是现在还需要用到cuda9.0。那么,在选定版本后,配置信息如下图所示(由于Version选项中没有20.04,因此我们随便选一个即可,这里选的16.04,这一选项不会影响后面的安装),Installer Type选择为runfile(因为使用deb文件进行安装的话,可能会将已经安装的较新的显卡驱动给替换掉),选择好之后点击Base Installer后面的Download即可。

  

2 安装cuda

  cuda的安装过程需要关闭图形界面,在tty3命令行界面进行操作,否则会报错。而tty3环境下是无法显示中文的(显示为实心棱形乱码),所以进入前请先确保我们上面下载的runfile文件存放的路径全是英文的,然后需要记住它的路径,后边安装需要进入该路径进行。
  按快捷键ctrl+alt+F6可以进入到tty3命令行界面。首先会让你输入ubuntu用户的账号和密码,依次输入即可。然后,进入到runfile所在的路径下,执行sudo sh xxxx.run --override,即可进行cuda安装程序。首先是一个协议阅读,一直按住enter键直到100%(有点慢),或者直接按q键退出阅读,然后会问你是否接受该协议,选择accept即可。接下来的选项是:

You are attempting to install on an unsupported configuration. Do you wish to continue?
(y)es/(n)o/(q)uit: y    #不用管,选y即可

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.00? 
(y)es/(n)o/(q)uit: n    #不安装显卡驱动,选n
 
Install the CUDA 9.0 Toolkit?
(y)es/(n)o/(q)uit: y    #安装工具包,y
 
Enter Toolkit Location
[ default is /usr/local/cuda-9.0 ]:    #cuda安装地址,一般直接默认路径回车即可
 
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n    #这是问你是否需要创建链接到该cuda的软链接,如果你需要安装好后就使用这个版本的cuda,那就选y,否则选n即可,软链接可以等安装好之后再添加,这里选择n
 
Install the CUDA 9.0 Samples?
(y)es/(n)o/(q)uit: y    #安装样例,y
 
Enter CUDA Samples Location
 [ default is /root ]:    #样例安装地址默认即可

  然后就是安装的过程,挺快的。如果安装成功的话,输出的信息如下图所示:

  可以看到有一个WARNING,说是cuda安装不完全,没有安装驱动。因为我们之前安装cuda时候已经安装驱动了,所以这里并不需要再次安装驱动,不用管这个WARNING。
  为了验证是否已经成功安装上cuda了,我们可以进入cuda安装的路径(上面有确认过的,默认的是/usr/local),执行命令cd /usr/local进入该目录,然后执行ls。如果看到输出内容里面包含有cuda-9.0,那就表明我们安装成功了。确认好以后,我们返回图形界面,按住快捷键ctrl+alt+F7即可。

补充一点,如果ctrl+alt+F7无效的话,就按ctrl+alt+F2试试。

  

3 下载cudnn

  接下来需要安装cudnn,从官网选择对应的版本下载即可,这里需要你先进行登陆然后才能进入下载。这里我们选择对应于cuda9.0的cudnn7.6.5,选择cuDNN Library for Linux选项,如下图所示:

  下载后是一个压缩包,将其解压(解压的文件夹名称默认是cuda),然后在解压后的目录下打开一个终端,依次执行如下命令即可。

sudo cp cuda/include/cudnn.h /usr/local/cuda-9.0/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64
sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h /usr/local/cuda-9.0/lib64/libcudnn*

  

4 设置环境变量

  在任一终端执行sudo gedit ~/.bashrc,打开环境变量配置文本。将里面所有与cuda有关的带版本号路径都改为无版本号的。比如我之前已经安装好了cuda10.0,然后当时配置环境变量时,有许多/usr/local/cuda-10.0/这样的路径,要做的就是把所有的-10.0都去掉。修改好之后,保存并关闭文件,然后在终端执行命令source ~/.bashrc使环境变量的修改生效。
  然后,要切换cuda版本的时候,直接建立对应的软链接即可,命令如下:

sudo rm -rf /usr/local/cuda    #删除之前创建的软链接
sudo ln -s /usr/local/cuda-9.0 /usr/local/cuda    #创建链接到cuda9.0的软链接
nvcc --version    #查看当前cuda版本

  如果一切配置都是正确的,那么执行完ncvv --version这行命令后,应该可以看到如下输出:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176

  可以看到,cuda版本已经成功更换成9.0了。而如果要更改回去,则只需要执行类似上面的命令即可(只需将9.0改为10.0,是不是超级方便):

sudo rm -rf /usr/local/cuda    #删除之前创建的软链接
sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda    #创建链接到cuda9.0的软链接
nvcc --version    #查看当前cuda版本

  执行后,可以看到输出变成了:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130

  好了,大功告成!
  

5 可能遇到的报错及解决方法

  虽然执行nvcc --version命令可以看到cuda版本的切换,但是,如果此时你再执行nvidia-smi命令,想看一下当前GPU的信息和使用情况的话,你很可能会获得一个报错信息:

Failed to initialize NVML: Driver/library version mismatch

  意思是驱动版本不匹配。心想,这就奇了怪了,安装cuda时候选择了run文件就是为了避免安装时候驱动被修改,而且安装过程中的驱动选项也是选的no,这下可不好解释了。网上很多说法是这种问题应该重装系统驱动的,但是,千万别!搞不好你不仅新安装的cuda失败了,就连之前已经安装妥当的cuda也白搭进去了。俗话说的好,遇事不决,重启解决。重启一下系统就完事了,确实有效!重启后再次打开终端执行nvidia-smi,输出如下:

  可以看到右上角显示的cuda version是11.0,这里不是指当前版本,而是说你的GPU最高支持cuda11.0。需要注意的是,要看当前是什么cuda版本,使用nvcc --version看到的输出才是正确的,而nvidia-smi主要是用来查看GPU使用情况的,此外,它还能实时查看GPU使用情况
  

6 查看已安装的cuda版本有哪些

  一般如果我们都是使用默认位置安装cuda的话,那么其安装路径都是/usr/local。如果要查看该目录下已经安装有哪些版本的cuda,可以通过在终端执行如下命令:

ls -l /usr/local | grep cuda

  比如我这里执行的输出为:

lrwxrwxrwx  1 root     root       20 1113 12:45 cuda -> /usr/local/cuda-10.0
drwxr-xr-x 19 root     root     4096 31  2021 cuda-10.0
drwxr-xr-x 17 root     root     4096 1113 12:11 cuda-8.0
drwxr-xr-x 18 root     root     4096 1027 21:10 cuda-9.0

  总共有四行输出,其中第一行表示当前建立了软链接的版本,是cuda10.0。然后,后边三行就是已经安装的cuda版本,我这里有三个,分别是8.0,9.0和10.0。这个命令的作用主要是,如果你忘了已经安装了哪些版本的cuda的时候,就可以直接通过命令查看到。
  
  
参考链接:
ubuntu 19.10安装Nvidia显卡驱动以及CUDA和cudnn
安装多版本 cuda ,多版本之间切换
Ubuntu16.04下安装多版本cuda和cudnn

有关ubuntu下安装多版本cuda及版本切换教程的更多相关文章

  1. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  2. ruby - 完全离线安装RVM - 2

    我打算为ruby​​脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn

  3. ruby-on-rails - Ruby on Rails with Haml - 如何从 erb 切换 - 2

    我正在从erb文件切换到HAML。我将hamlgem添加到我的系统中。我创建了app/views/layouts/application.html.haml文件。我应该只删除application.html.erb文件吗?此外,仍然有/public/index.html文件被呈现为默认页面。我想创建自己的默认index.html.haml页面。我应该把它放在哪里以及如何使系统呈现该文件而不是默认索引文件?谢谢! 最佳答案 是的,您可以删除任何已转换为HAML的View的ERB版本。至于你的另一个问题,删除public/index/h

  4. ruby-on-rails - rails 目前在重启后没有安装 - 2

    我有一个奇怪的问题:我在rvm上安装了ruby​​onrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(

  5. ruby - 如何为 emacs 安装 ruby​​-mode - 2

    我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby​​提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs

  6. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  7. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  8. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  9. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  10. ruby - Fast-stemmer 安装问题 - 2

    由于fast-stemmer的问题,我很难安装我想要的任何ruby​​gem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=

随机推荐