Linux Ubuntu安裝Nvidia多GPU通信庫NCCL


0. 前言

在使用Python版本的PaddleDetection進行一些實驗時,想同時利用多個GPU提高效率,遇到了一點問題

You may need to install ‘nccl2‘ from NVIDIA official website

意思是多卡通信時需要跨卡通信庫的支持,這時就需要用到NCCL。

NCCL全稱Nvidia Collective multi-GPU Communication Library,是一個實現多GPU交互的通信庫,Nvidia做了很多優化以在PCIe、Nvlink、InfiniBand等不同的通信方式中實現較高的通信速度。

1. Ubuntu18.04本地安裝NCLL步驟

本地環境如下

  • Ubuntu18.04 x86_64
  • CUDA-10.0
  • cuDNN-7.6.5

現在來安裝NCCL。首先去官網下載頁面找到合適的版本。

  • (1)下載nccl-repo-ubuntu1604-2.5.6-ga-cuda10.0_1-1_amd64.deb
  • (2)安裝鏡像庫sudo dpkg -i nccl-repo-ubuntu1604-2.5.6-ga-cuda10.0_1-1_amd64.deb
  • (3)更新源鏡像sudo apt update
  • (4)安裝ncclsudo apt install libnccl2=2.5.6-1+cuda10.0 libnccl-dev=2.5.6-1+cuda10.0
  • (5)配置系統環境變量
    nccl默認的安裝目錄是/usr/lib/x86_64-linux-gnu,在~/.bashrc文件中添加以下內容之后保存文件,使用
    source ~/.bashrc使文件的配置生效。
#設置cuda庫的目錄
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
#將nccl添加到LD_LIBRARY_PATH中
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu

2. 測試PaddleDetection多卡訓練

安裝好NCCL后,測試一下使用多卡的命令。

  • (1)單機單卡啟動,默認使用第0號卡
$ python train.py
  • (2)單機多卡啟動,默認使用當前可見的所有卡
$ python -m paddle.distributed.launch train.py
  • (3)單機多卡啟動,設置當前使用的第0號和第1號卡
$ CUDA_VISIABLE_DEVICES='0,1' python -m paddle.distributed.launch --selected_gpus='0,1' train.py
  • (4)單機多卡啟動,設置當前使用第0號和第1號卡
$ CUDA_VISIABLE_DEVICES='0,1' python -m paddle.distributed.launch train.py

參考資料

[1] You may need to install ‘nccl2‘ from NVIDIA official website https://icode.best/i/42989337341942
[2] NCCL2 Survey https://github.com/PaddlePaddle/Paddle/wiki/NCCL2-Survey
[3] NVIDIA NVCC DOCUMENTATION https://docs.nvidia.com/deeplearning/nccl/install-guide/index.html
[4] NCCL Legacy Download Page https://developer.nvidia.com/nccl/nccl-legacy-downloads

本文作者 :phillee
發表日期 :2022年02月11日
本文鏈接https://www.cnblogs.com/phillee/p/15882198.html
版權聲明 :自由轉載-非商用-非衍生-保持署名(創意共享3.0許可協議/CC BY-NC-SA 3.0)。轉載請注明出處!
限於本人水平,如果文章和代碼有表述不當之處,還請不吝賜教。


免責聲明!

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



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