提示:相信你肯定已经安装了显卡驱动,让我们来配置CUDA吧
前言
CUDA Toolkit(后面我简称CUDA)是深度学习训练模型的关键,这玩意用C/C++写的,基本躲不开,即使你用pycuda也必须安装CUDA。一个系统中是允许出现多个CUDA版本的,因为它是一个工具包,通过链接去调用,所以只要环境变量设置正确是不会相互影响的。接下来的时候让我们一起拿下它!
一、CUDA是什么?
CUDA(Compute Unified Device Architecture,统一计算设备架构)是 NVIDIA 推出的通用并行计算平台与编程模型,让开发者利用 NVIDIA GPU 的大规模并行能力加速计算密集型任务。它既包含 ISA 指令集与 GPU 并行引擎,也提供 API、编译器(nvcc)、运行时库 以及数学库(如 cuBLAS、cuFFT),并可通过 CUDA‑X 扩展架构在 PC、云端与超级计算机 上部署,覆盖 AI、数据分析、HPC 等领域
CUDA Toolkit 是用于构建、优化与部署 GPU 加速应用 的完整开发环境,面向嵌入式系统、桌面工作站、数据中心、云平台与 HPC 超算。它提供 GPU 加速库、编译器(nvcc)、调试与性能分析工具 以及 运行时库,支持将计算任务分布到 多 GPU 配置,应用可从单机单卡扩展到云端成千上万张 GPU。其生态包含 cuBLAS、cuFFT、cuSPARSE、cuTENSOR、NPP、cuRAND、nvJPEG/nvJPEG2000、cuSOLVER、cuSPARSELt 等库,并与 Nsight 工具链集成用于性能分析与调试
运行 CUDA 应用需 NVIDIA Driver;CUDA Toolkit 提供编译与运行所需的库与工具。每个 CUDA Toolkit 版本对应一个最低驱动版本,而驱动通常向后兼容
二、安装步骤
1.选择合适的CUDA
翻译翻译,什么叫合适的CUDA?
CUDA目前最新的版本是CUDA13.0的更新版本,但是我们未必需要使用13.0,这是因为在我们部署pytorch环境的时候,往往会受限于我们的CUDA版本,往往我们使用的代码所用的pytorch版本都不是对应最新的CUDA版本,这个需要与我们实际所使用的pytorch版本对应
其次,我们所能安装的CUDA也与我们安装的驱动版本有关。这时候让我们再次使用nvidia-smi

以我现在目前的驱动版本为例,可以发现右边有一个CUDA Version,有的小朋友就天真的认为我们的CUDA版本就是13.0.
此处的CUDA版本其实指的是当前驱动所能支持的最大CUDA版本,只要我们安装的CUDA版本是低于这个的,就可以了。
2、下载CUDA
这里我担心大家找不到对应的网站,就贴心的把网址放到这里了CUDA-Toolkit
点击立即下载后发现,跳转的界面是最新的12.4,这咋整?
有人说我就下载12.4不行么,可以~可以~可以~
让他去下载12.4吧,我习惯使用的是11.2、11.6和12.2,我打算下载11.6和12.2给大家做个示范,再给大家一个链接CUDA往期版本这个链接是com结尾。
点开之后你会发现,欸?有了!我这里;下拉选择11.6和12.2
这里我拿12.2为例
这里直接根据我们的系统选择,与驱动安装一样选择run安装方法

绕了半天弹出来两行命令,是的你没有看错,我们只需要在终端里执行这两行命令即可完成对CUDA的安装
wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda_12.2.0_535.54.03_linux.run
sudo sh cuda_12.2.0_535.54.03_linux.run
wget命令你可以理解为一个网站下载的命令,那么我们就可以根据我们的后缀名去推算出11.6的下载命令而不需要去再去点点点了
wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda_11.6.0_510.39.01_linux.run
sudo sh cuda_11.6.0_510.39.01_linux.run

下载速度很可观,并不需要做加速处理,因为会自动使用国内的服务器,大小4个多G,大家要多分点空间哦~
3、安装与卸载CUDA
终端输入安装命令,需要等一小会,别以为是卡了,让子弹飞一会
sudo sh cuda_12.2.0_535.54.03_linux.run
经过漫长的等待,终于有反应了
意思是检测到你的系统已经通过 Ubuntu 的软件包管理器(比如 apt、软件和更新、附加驱动) 安装了 NVIDIA 驱动。强烈建议你先卸载掉这个通过包管理器安装的驱动,然后再继续用这个 .run 文件安装 NVIDIA 驱动。
是的,你发现了驱动安装的第四种方法,那就是通过CUDA安装配套的驱动。
那为什么我没有将其写进安装方法里面呢?那是也因为你只能安装对应驱动不能保证能够兼容其他版本,所以干脆安装一个比较新的驱动从而可以向下兼容更多的粗CUDA版本。
使用方向键然后回车这里continue即可
然后进入老生长谈了,你是否同意协议~字母错了都不行哦,眼神好点,输完如果不知道按回车那就回家吧
accept
这里你就会发现这里有一个535版本的驱动,我们回车不选它,然后之间走到install回车等待即可~
当出现这种输出的时候,就代码CUDA12.2已经安装完毕了。
清注意这些输出,它告诉了我们几个关键的信息
1、CUDA12.2安装路径
/usr/local/cuda-12.2/
2、卸载CUDA12.2的方法
To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-12.2/bin
如果有一天你需要卸载CUDA12.2,请运行cuda-uninstaller,命令为
sudo /usr/local/cuda-12.2/bin/cuda-uninstaller

选择所有然后Done即可删除CUDA12.2
3、CUDA环境变量的设置方法
安装完CUDA后,这时候有人就要问了,学长学长,有没有nvidia-smi一样验证CUDA的命令呢?
有的兄弟,验证CUDA的命令为nvcc -V

啊?学长误我!!!
欸~别急,与windows系统不同的是,ubuntu系统安装某一软件后,需要设置启动它的环境变量,命令失败,说明系统不认识nvcc命令,不在它的数据库里,这时候就需要设置我们的环境变量或者说软链接。
终端输入以下命令
gedit ~/.bashrc
.bashrc文件处于主目录中,通过会被隐藏,修改里面的内容可以不需要使用管理员权限,那如何使用管理员权限呢?用多少次命令了,前面加sudo呗
那么问题来了,如何设置环境变量呢?其实在安装CUDA后的输出就有提示了
这里要求我们将以下命令添加到/etc/ld.so.conf里,不管我习惯放到.bashrc中
export PATH=$PATH:/usr/local/cuda-12.2/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.2/lib64
export你可以认为是一种声明,告诉系统你数据库里多了这些路径,下次有命令也可以从这些文件中去搜索

保存并退出后你以为就结束了?非也,需要更新环境变量内容,更新命令如下
source ~/.bashrc
注意:环境变量不止一种,但是每次修改都需要重新更新,否则不会立马生效,你要是修改完后重启那当我没说
更新完环境变量后,再次验证

输出CUDA版本12.2,至此CUDA12.2完全安装完毕
三、CUDA多版本共存问题
文章开始我说过我要安装cuda11.6和12.2,但是如何同时让两个版本存在并且不互相干扰呢?
首先你应该要能够在文件夹中找到CUDA的藏身之处。
打开文件夹,点击其他位置

这里可以看到我们所用内存大小和剩余空间,可以看到仅仅安装了驱动和CUDA以及一些更新我们就用了四十多G的内存,因此要学习视觉的同学一定要多分点空间哦~
什么?你问我分了多少?
我给正式的双系统分了300G,并且仍然在增加中,如何不重装系统并且增加空间的方法,这个后续再说
点击计算机,此时我们会进入/目录,相信大家应该对linux的存储系统有些了解了,这里就不过多赘述了相信你们都会。
刚才提示了我们cuda的安装路径为/usr/local/cuda-12.2/
我们现在所处的位置就是/

对应找到usr文件夹并在里面找到local文件夹就可以看到cuda了,可以看到我已经安装了CUDA11.6和CUDA12.2
有人会疑惑,为什么还有一个cuda?
这玩意你可以理解为快捷方式,文件夹上有个箭头跟windows系统一样代表着一种链接。如果你只安装了一个cuda,那么cuda文件夹和你安装的对应版本的文件夹里面的内容是等效的。
如果你也安装了第二个cuda版本,相信你在安装的过程中肯定遇到过是否update链接的问题,这里的意思就是是否将cuda文件夹里面的快捷方式换成你当前安装的cuda版本,是否更新全看你个人的意愿。
说了这么多,现在回到我们的多版本共存问题
那么我们是否可以在ubuntu系统上同时使用两种cuda呢?
答案是理论可以,实际不一定,但是我们可以保证在不交叉的情况下前后使用。
之前我们说过,我们使用.bashrc进行环境变量的设置,那么我们完全可以设置两种不同的环境变量,在没有用到对应cuda的时候进行注释,用到再解开
如图,我已经将cuda12.2注释了,那么此时当我更新完.bashrc时,将会输出cuda11.6的版本信息
此时我就可以使用CUDA11.6的所有功能。
那么cuda版本共存的好处是什么呢?
其实只是为了节省时间,当我们后期做的项目足够多时,肯定不可能一个cuda版本适配所有环境,提前保留可能使用的cuda版本是为了节约时间。此外,当你使用的是你们实验室的服务器时,多人操作同一台设备时这种共存就大大减少了环境崩溃的问题(前提是大家都清楚如何操作),因为总有人觉得自己很厉害,弄一些莫名其妙的操作把环境搞坏。
总结
OK,今天更新的还挺多的,除了安装和卸载Cuda还有一些注意事项以及版本共存问题,那么CUDNN的安装与部署就往后拖一拖咯~如果遇到没有涉及到的问题,欢迎评论区留言,这次真的下班咯

1563

被折叠的 条评论
为什么被折叠?



