很多情况下,使用深度学习多GPU训练需要使用nccl,这里介绍最简单的待安装机器无法联网的安装方法,且安装包与系统版本无关,只与cuda版本有关,为支持paddlepaddle框架的多gpu使用,需要安装nccl。更多内容参见nccl 官网
1、下载
根据需要选择具体的架构,我们这里先x86,接着选与系统无关的那个:
下载好的文件是nccl_2.8.4-1+cuda11.2_x86_64.txz 这样一个以txz结尾的文件,曾经试过当cuda升级到11.7使用这个11.2的包依然没有报错,不过觉的还是下载个对应的比较好。
2、解压
cd /usr/local
tar xvf nccl_2.8.4-1+cuda11.2_x86_64.txz
解压后,里边两个文件夹 include 和 lib。实际解压到任意位置都是可以的,但做为安装可以放到/usr/local下。
3、填加环境变量
vim ~/.bashrc
在最后加上:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/where_your_path/nccl_2.8.4-1+cuda11.2_x86_64/include/:/where_your_path/nccl_2.8.4-1+cuda11.2_x86_64/lib
即可。
如果要安装给所有人用,可以将nccl_2.8.4-1+cuda11.2_x86_64文件夹拷到/usr/local下。
安装好以后,conda 环境,virtualenv等环境下都是可以用的。要注意的是,conda环境中有自己的cuda和cudnn,选择nccl对应版本时要按照conda环境中的cuda版本来进行处理
对于paddle可以输入:
import paddle
paddle.utils.run_check()
会返回所有可用gpu数量。
4、Conda环境变量添加
我们要以单独给指定的某一个conda环境添加环境变量:
cd /path/anaconda3/envs/yourenv
mkdir -p ./etc/conda/activate.d
mkdir -p ./etc/conda/deactivate.d
touch ./etc/conda/activate.d/env_vars.sh
touch ./etc/conda/deactivate.d/env_vars.sh
接着在activate.d/env_vars.sh中添加:
export LD_LIBRARY_PATH=/where_your_path/nccl_2.8.4-1+cuda11.2_x86_64/include/:/where_your_path/nccl_2.8.4-1+cuda11.2_x86_64/lib:$LD_LIBRARY_PATH
在deactivate.d/env_vars.sh中添加:
unset LD_LIBRARY_PATH
当你每次激活这个环境,你就可以使用,当你退出里,则去除这个作用。