安装CUDA,cuDNN,NCCL

CUDA

1. CUDA和pytorch的关系

参考资料:
https://www.cnblogs.com/yhjoker/p/10972795.html
https://blog.csdn.net/qq_39065196/article/details/111938048

Pytorch 与 cudatoolkit

使用 conda 安装 pytorch 时,conda 会为我们自动安装 cudatoolkit。它和英伟达官网提供的 CUDA Toolkit (即下载到 /usr/local/ 的 cuda-10.0 ) 不是同一个东西!CUDA Toolkit 提供了完整的开发 CUDA 程序所需的编译器、IDE、调试器、库文件、头文件。而对于 pytorch 来说,它使用 GPU 时只需要 CUDA 的 动态链接库 执行预编译好的 CUDA 操作即可。因此,有 cudatoolkit 之后,只要系统上存在与当前的 cudatoolkit 版本兼容的 Nvidia 驱动 (可以查看nvidia-smi中的驱动版本是否兼容),编译好的 CUDA 操作就可以执行,不需要再安装 CUDA Toolkit

nvidia-smi 中的 CUDA version 表示当前显卡驱动最高能支持的 CUDA 版本。pytorch 的 cudatoolkit版本指其所编译好的 CUDA 操作版本。conda list 中查看到的 pytorch build 信息中的 CUDA 版本 (例如 py3.8_cuda10.2_cudnn7.6.5_0) 指该 pytorch 源码使用 cuda10.2 版本进行编译。conda install 的是编译好的发行库,其编译环境和主机环境兼容时才可使用

torch.version.cuda 也表示的是编译该 Pytorch release 版本时使用的 CUDA 版本

Pytorch 编译使用的 CUDA 版本

pytorch 只有在编译扩展的 CUDA 算子时,才会需要 CUDA Toolkit,这个时候才会和 /usr/local/, CUDA_HOME 扯上关系。网上所说的 pytorch CUDA 编译版本是编译 pytorch 源码以得到发行版时所用的 cuda 版本;pytorch CUDA 运行版本指其要进行 CUDA 扩展程序编译时,我们给他指定的CUDA Toolkit 版本

CUDA Toolkit 的版本是 torch 代码在运行时去查找的。首先查找本地的 CUDA_HOME (服务器上有系统环境变量和用户环境变量,用户环境变量可以覆写系统环境变量),若没有该环境变量,则查找路径 /usr/local/cuda 的软链接 (查看软链接方式:进入路径/usr/local,执行ls -l)

可以通过修改 CUDA_HOME 环境变量或者 /usr/local/cuda 软链接的方式修改 Pytorch 所使用的 CUDA Toolkit

可执行以下代码查看 pytorch 使用的 CUDA Toolkit 版本

import torch
import torch.utils
import torch.utils.cpp_extension
torch.utils.cpp_extension.CUDA_HOME

2. 安装CUDA

进入 CUDA Toolkit Archive | NVIDIA Developer,选择对应的版本,按照网页下方指令安装(我一般选择runfile方式安装)。安装过程中可能询问是否安装显卡驱动,如果之前单独安装过,则跳过这一步。如我这里选择安装cuda-11.2。

配置环境变量。在 ~/.bashrc (用户环境变量,建议修改这个)或者 /etc/profile (系统环境变量)中添加以下内容:

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

然后执行 source ~/.bashrc 激活环境变量。

修改软链接,指定当前使用的cuda版本。

# 如果已存在软连接,需要先删除
sudo rm /usr/local/cuda
# 创建软连接
sudo ln -s /usr/local/cuda-11.2 /usr/local/cuda

验证安装:

head -5 /usr/local/cuda/version.json 
nvcc -V

3. 卸载CUDA

To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.7/bin

cuDNN

cuDNN 是专门用于加速神经网络的库,不安装也可以跑深度学习,但还是建议安装。

查看 cuDNN 版本:

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
# 显示结果
# define CUDNN_MAJOR 8
# define CUDNN_MINOR 4
# define CUDNN_PATCHLEVEL 1
# 因此 cuDNN 版本为8.4.1

1. 安装cuDNN

进入 Log in | NVIDIA Developer,找到需要的版本(例如我选择的是 cuDNN v8.4.1, for CUDA 11.x),选择 Local Installer for Linux x86_64 (Tar)

将下载的压缩包放到喜欢的路径下(例如我是 /home/Xuanyu/Downloads),进行下述配置:

tar -xvf <cuDNN 压缩包>
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64 
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

验证安装是否成功(即查看 duDNN 版本)

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

2. 更新20250520

从cuDNN 9开始,官方采用在线安装更新的方式,而非压缩包离线安装。然而,当我们有多个cuda版本时,在线安装的方式有风险。因此还是建议压缩包安装。

tar.xz的位置:Log in | NVIDIA Developer → Tarball and Zip Archive Deliverables → cudnn/ → linux-x86_64/

NCCL

是由 NVIDIA 开发的一个高性能通信库,专门用于GPU之间的集体通信操作,用于多GPU训练。

访问NVIDIA Collective Communications Library (NCCL) Legacy Download Page,我选择 Download NCCL 2.15.5, for CUDA 11.0, October 20th, 2022,查看 Network installers (x86),根据你的系统版本,执行页面中对应的指令。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值