zoukankan      html  css  js  c++  java
  • Linux下NCCL源码编译安装

    NCCL(NVIDA Collective Communications Library)目的是为了实现Multi-GPU或Multi-node之间的通信;

    有两种安装方式,一是具有root权限的安装,二是不具有root权限的安装配置;

    1. root用户安装配置NCCL

    类似于下载cudnn,需要注册NVIDIA账号,链接:

    https://developer.nvidia.com/nccl/nccl-download
    

    下载与CUDA版本、linux系统版本符合的NCCL文件,安装命令如下图所示:

    NCCL

    2. 非root用户安装配置NCCL

    其实多数情况下,我们都不具有root权限,那么如果root管理员也没有为我们在使用的服务器安装配置NCCL,那么就需要我们自己将NCCL配置在个人账号下;那么方法就是从源码进行编译安装;

    首先,从github上将NCCL的仓库拉到本地:

    git clone https://github.com/NVIDIA/nccl.git
    

    相关安装文档也能从该链接获得;

    安装配置:

    cd nccl
    make -j12 src.build BUILDDIR=/home/chenz/software/nccl CUDA_HOME=/usr/local/cuda NVCC_GENCODE="-gencode=arch=compute_35,code=sm_35"
    
    • -j12表示使用12个核心,使用nproc查看总核心数,根据具体情况进行调整;
    • BUILDDIR表示编译后,一些文件的存储路径;默认是nccl/build;当然如果是root用户可以指定到/usr/local/ncc/
    • CUDA_HOME表示CUDA的目录,默认就是/usr/local/cuda,但是我这边不加这个,会报错,很奇怪;
    • NVCC_GENCODE,如果不添加该字段,默认会编译支持所有架构;为了加速编译以及降低二进制文件大小,添加该字段,具体comute_35,sm_35应该是和显卡算力相匹配,具体见:CUDA GPUs

    最后呢,编译完成的文件都在指定的NVCC_GENCODE字段路径下,需要将其添加到环境变量;

    vim ~/.bashrc
    

    在打开的文件中,添加:

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/chenz/software/nccl/lib
    export PATH=$PATH:/home/chenz/software/nccl/bin
    

    保存后,执行:

    source ~/.bashrc
    

    3. 验证NCCL是否安装成功

    选择一个合适的位置:

    git clone https://github.com/NVIDIA/nccl-tests.git
    cd nccl-tests
    make -j12 CUDA_HOME=/usr/local/cuda
    ./build/all_reduce_perf -b 8 -e 256M -f 2 -g <ngpus>
    
    • CUDA_HOME有毒啊,不指定就报错;
    • <ngpus>需要用机器GPU的个数替换,我这边有4块2显卡,就指定4

    注意的是,指定几块GPU,验证过程就会调用几块;注意别人是否正在使用;

    NCCL-valid

  • 相关阅读:
    13 款开源的全文检索引擎
    Laravel5.5 Jwt 1.0 beta 配置
    Laravel SQL 查询语句集锦
    laravel在中间件内生成的变量如何传到控制器
    laravel中的自定义函数的加载和第三方扩展库加载
    laravel5.5 dingo/api+jwt-auth
    微信小程序之使用checkbox
    微信小程序之使用wx:for遍历循环
    微信小程序之页面导航栏
    微信小程序之数据缓存
  • 原文地址:https://www.cnblogs.com/chenzhen0530/p/13885258.html
Copyright © 2011-2022 走看看