NCCL (NVIDIA Collective Communications Library)은 NVIDIA GPU에 최적화 된 다중 GPU 및 다중 노드 집단 통신 프리미티브를 구현합니다. NCCL은 PCIe 및 NVLink 고속 상호 연결을 통해 높은 대역폭과 낮은 대기 시간을 달성하도록 최적화 된 전체 수집, 전체 감소, 브로드 캐스트, 감소, 스 캐터 제거와 같은 루틴을 제공합니다.
NCCL 특징
NCCL을 사용하면 개발자가 특정 기계에 맞게 응용 프로그램을 최적화 할 필요가 없습니다. NCCL은 노드 내 및 노드간에 여러 GPU에 대해 빠른 집합을 제공합니다.
NCCL은 다양한 프로그래밍 언어에서 쉽게 액세스 할 수있는 간단한 C API를 사용합니다 .NCCL은 MPI (Message Passing Interface)에 의해 정의 된 널리 사용되는 집합 API를 밀접하게 따릅니다.
NCCL은 단일 스레드, 다중 스레드 (GPU 당 하나의 스레드 사용) 및 다중 프로세스 (GPU에서 다중 스레드 작업과 결합 된 MPI)와 같은 거의 모든 다중 GPU 병렬화 모델과 호환됩니다.
일단 nccl은 gpu 계산기능이 3.5이상인 cuda장치를 지원한다.
요즘 나온건 무조건 3.5이상이다 혹시 본인의 gpu 성능을 확인 하고 싶다면
아래 링크로 들어가서 확인하기 바란다.
이제 NCCL을 다운로드 하자 DOWNLOAD
위에서 본인에게 맞는 cuda 버전 및 nccl버전을 선택후 다운로드 하면 된다.
local repository 를 사용 할 경우 ubuntu
# dpkg -i nccl-repo-<version>.deb
# apt-get update
# apt-get install libnccl2 libnccl-dev ## 1.최신
# apt install libnccl2=2.4.8-1+cuda10.0 libnccl-dev=2.4.8-1+cuda10.0 ## 2.특정버전
local repository 를 사용 할 경우 centos
# rpm -i nccl-repo-<version>.rpm
# yum update
# yum install libnccl libnccl-devel libnccl-static ## 1.최신
# yum install libnccl-2.4.8-1+cuda10.0 libnccl-devel-2.4.8-1+cuda10.0 libnccl-static-2.4.8-1+cuda10.0 ## 2.특정버전
혹은 txz 다운로드 후
(base) root@ubuntu:~# tar xvf nccl_2.7.5-1+cuda11.0_x86_64.txz
nccl_2.7.5-1+cuda11.0_x86_64/include/
nccl_2.7.5-1+cuda11.0_x86_64/include/nccl.h
nccl_2.7.5-1+cuda11.0_x86_64/include/nccl_net.h
nccl_2.7.5-1+cuda11.0_x86_64/lib/
nccl_2.7.5-1+cuda11.0_x86_64/lib/pkgconfig/
nccl_2.7.5-1+cuda11.0_x86_64/lib/pkgconfig/nccl.pc
nccl_2.7.5-1+cuda11.0_x86_64/lib/libnccl.so.2.7.5
nccl_2.7.5-1+cuda11.0_x86_64/lib/libnccl_static.a
nccl_2.7.5-1+cuda11.0_x86_64/lib/libnccl.so
nccl_2.7.5-1+cuda11.0_x86_64/lib/libnccl.so.2
nccl_2.7.5-1+cuda11.0_x86_64/LICENSE.txt
압축 해제 후 사용 /usr/local/nccl-2.7.5로 변경후 사용 하여도 될 것 이다.
Nvidia gpu와 driver 그리고 CUDA의 호환성 (2) | 2020.08.14 |
---|---|
cuda 11.0 설치 리눅스 환경 (4) | 2020.07.23 |
NVIDIA GPU error 확인 (0) | 2020.07.02 |
GPU 용어 및 NVlink nvswitch (0) | 2020.06.26 |
Tensorflow 설치 방법 (0) | 2020.06.19 |