当前位置:首页 > 技术分析 > 正文内容

Ubuntu22.04中多版本CUDA切换

ruisui882个月前 (02-24)技术分析8

人工智能兴起,AI相关开源软件大部分都会使用到GPU,而NVIDIA的CUDA加速处于绝对垄断地位。而AI开源软件,使用的操作系统更倾向于Linux,但不同的软件对CUDA的版本有不同依赖,这样就造成开发调试不同软件,需要切换电脑到不同的CUDA版本。本文以Ubuntu22.04为例,说明本地电脑安装多版本CUDA并使用简单方式切换,以满足不同开发的需求。


当然,开发好的软件,docker部署运行时,只依赖特定版本CUDA,可以下载相关版本CUDA的镜像,宿主机只要安装最新GPU驱动与NVIDIA Container Toolkit。可以参考下面链接:

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html


GPU驱动

要在本机安装多版本cuda,并能切换后正常使用,首先要保障安装的GPU驱动是比较新的。可以从nvidia官方网站下载驱动。

安装驱动后,可以运行nvidia-smi ,如图查看到 CUDA version:12.2。表示此显卡可支持的CUDA版本最高到12.2。如果开发的软件依赖CUDA12.1,12.1<12.2,则这个显卡驱动版本满足要求。如果开发软件依赖CUDA12.4,则要首先升级GPU驱动到新版本。


多版本CUDA下载与安装

可以从
https://developer.nvidia.com/cuda-toolkit-archive 下载可能用到的CUDA版本。比如要下载cuda12.1、cuda11.8

根据自己的环境依次选择,推荐下载【runfile(local)】格式的文件。

wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run
sudo sh cuda_12.1.1_530.30.02_linux.run

执行sh
cuda_12.1.1_530.30.02_linux.run开始安装此版本cuda。

  • 安装第一个CUDA版本:11.8

执行sudo sh
cuda_11.8.0_530.30.02_linux.run

因为已经安装过显卡驱动,这里选择【Continue】继续安装。

不选择Driver与Kernel Objects,Install

出现上面的画面表示cuda11.8已经安装完成。安装到的位置为:/usr/local/cuda-11.8

  • 安装第二个CUDA版本:12.1

如上运行sudo sh
cuda_12.1.1_530.30.02_linux.run。同样选择。

出现上面画面,选【Install】后,会出现新界面:

此界面是由于cuda11.8安装时,会自动在/usr/local/下建立软链接,名字为cuda,指向/usr/local/cuda-11.8。而此处安装cuda12.1.1,如果选【Yes】也会同样操作,将cuda软链接,指向/usr/local/cuda-12.1。因为我有很多的程序都是依赖cuda11.8的,所以此处选【No】

看到此界面,表示已经安装cuda12.1成功。


多版本cuDNN下载与安装

cuDNN(CUDA Deep Neural Network library)是 NVIDIA 提供的一个深度神经网络库。它为深度学习应用提供特别优化,如卷积、池化、归一化和激活函数等。如果安装CUDA是用于人工智能网络工作,需要安装此库。当然,这个库的版本与CUDA版本有依赖关系。

https://developer.nvidia.com/cudnn-archive

可以从上面的网址下载cudnn库。要下载库,需要用邮箱注册一个账号。

cuDNN 8.x - 1.x (December 2023 - August 2014) 是 8.x版及以前的cudnn版本。选择此种版本,选择方式与9.x方式稍有不同。但都是推荐下载tar 包文件为好。

根据操作系统及文件格式,选要下载的cudnn包。

cuDNN 9.1.0 (April 2024)

上面的选择界面中,有一个链接【Tarball and Zip Archive Deliverables

通过此处,可以从列表方式中选择要下载的cudnn Tar包。

  • cuDNN安装
  • cuDNN的安装,实际只是下载的tar包解压,然后把解压后文件,拷贝到对应版本的cuda下的对应目录。

    上面的两个cuda版本默认安装到/usr/local/下

    cuda-11.8/

    cuda-12.1/

    如下拷贝解压的tar包中文件,到对应的cuda版本目录下即可(cudaxx为对应的cuda-11.8或cuda-12.1):

    ?cp include/*.*? ? ? ? ? ? ? /usr/local/cudaxx/include? ? ? ?
    
    cp? lib/.*.*? ? ? ? ? ? ? ? ? ? ? ?/usr/local/cudaxx/lib64/

    配置文件修改

    修改/etc/profile文件,添加:

    export PATH=$PATH:/usr/local/cuda/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
    export CUDA_HOME=/usr/local/cuda

    cuda版本切换

    上面说过,/usr/local/cuda是一个软链接。设置上面的环境变量后,只要切换软链接的指向位置,即可在实现切换cuda版本。

    cd /usr/local
    rm  cuda  				 删除软链接
    ln  -s  cuda-12.1/   cuda     	 将cuda-12.1/映射到cuda.

    上面的命令,即可实现切换到cuda12.1的环境。

    可以用 nvcc -V 来验证切换是否成功。

    扫描二维码推送至手机访问。

    版权声明:本文由ruisui88发布,如需转载请注明出处。

    本文链接:http://www.ruisui88.com/post/2208.html

    分享给朋友:

    “Ubuntu22.04中多版本CUDA切换” 的相关文章

    首个支持苹果 M1 Mac 的 Linux 发行版发布,面向用户开放下载

    IT之家 3 月 20 日消息,Asahi Linux 是研究 Linux for Apple Silicon macs 的组织群体,3 月 18 日,Asahi Linux 宣布成功在 M1 MacBook Air 笔记本电脑上运行,并开放了 Asahi Linux 的下载安装。Asahi Lin...

    代码管理-9-gitlab的使用和设置

    gitlab使用1、外观设置完成后保存,返回登录页面查看关于注册,有些公司是不允许打开的,,有些人数非常多的公司就需要打开注册的功能,让人员自己注册,我们来给他特定的权限就可以,毕竟人非常多的时候还由我们来给她们注册就非常不现实了,工作量会很大2、自动注册3、组&用户&项目创建组设置组名称、描述等创...

    壹啦罐罐 Android 手机里的 Xposed 都装了啥

    这是少数派推出的系列专题,叫做「我的手机里都装了啥」。这个系列将邀请到不同的玩家,从他们各自的角度介绍手机中最爱的或是日常使用最频繁的 App。文章将以「每周一篇」的频率更新,内容范围会包括 iOS、Android 在内的各种平台和 App。本期继续歪楼,由少数派撰稿作者@壹啦罐罐介绍他正在使用的...

    有效地简化导航-Part 1:信息架构

    「四步走」——理想的导航系统要做一个可用的导航系统,网页设计师必须按顺序回答以下4个问题:1. 如何组织内容?2. 如何解释导航的选项?3. 哪种导航菜单最适合容纳这些选项?4. 如何设计导航菜单?前两个问题关注构建和便签内容,通常称为信息架构。信息架构师通常用网站地图(site map diagr...

    Vue中路由router的基本使用

    ??本文开始我们来给大家介绍在Vue中非常重要的一个内容,就是路由Router什么是路由后端路由:对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源;前端路由:对于单页面应用程序来说,主要通过URL中的hash(#号)来实现不同页面之间的切换,同时,hash有一个特...

    慕课 SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序

    本课程以业务驱动技术栈,打造业务相对完整的掌上医疗小程序,解决大家没有好的毕设项目或者求职项目的困境。本课程案例采用前后端分离架构,业务功能完善(既有WEB管理端,也有移动用户端),界面美观,无需艰涩的技术也能做出亮眼的作品。SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序 |...