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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM