[Linux] Fedora 에서 RX6600 RCCL 사용하기

문연수·2025년 6월 17일
0

Linux (Fedora)

목록 보기
26/27

RX 6600 은 현재 AMD 에서 공식적으로 지원하는 아키텍처가 아니므로 아주 트릭키한 방법으로 실행해야 한다. 가장 먼저 해야 하는 것은 RCCL직접 빌드하는 일이다.

 그러나, RCCL 을 빌드하는 것은 정말 죽음으로 어려운 일이다. RCCL 의 빌드를 어렵게 만드는 요인은 다양하지만 그중 가장 일은 복잡하게 만드는 요인은 바로 배포판마다 패키지의 설치 경로가 다르다는 점이다. 아마 Ubuntu 라면 그나마 쉽게 설치가 가능하겠지만 Fedora 의 경우 빌드 과정에서 삶과 죽음의 경계를 오고가는 경험을 하게 될 것이다.

 하지만 안심하라. 필자는 살아 남았다. 나를 죽이지 못하는 고통은 나를 더 강하게 한다고 했던 니체의 말을 떠올려라.

0. 필수 패키지 설치하기

RCCL 을 빌드하기 위해선 다양한 패키지의 설치가 선행되어야 한다. 필자의 경우 기존의 있던 rccl 패키지를 모조리 지우고 새롭게 설치했다:

sudo dnf remove rccl rccl-devel rccl-data

sudo dnf install 				\
hipcc rocminfo rocm-hip 		\
rocm-hip-devel rocm-smi-devel	\
gcc-c++ hipify-perl

Fedora 42 에서 25년 06월 18일 확인해본 결과 정말 최소한의 패키지 리스트이다. 이것만 설치해도 빌드는 가능하다.

1. RCCL 프로젝트 다운로드

git clone https://github.com/ROCmSoftwarePlatform/rccl.git
cd rccl

git checkout -b build-rccl tags/rocm-6.3.1

버전은 여기에서 확인: https://github.com/ROCm/rccl/releases

 가장 먼저 git clone 명령어를 통해 RCCL 프로젝트를 clone 한다. git tag 명령어를 입력해 적절한 RCCL 버전의 tagcheckout 한다. 만약 통신할 두 노드의 RCCL 버전이 다르게 되면 통신에 실패하므로 주의하길 바란다.

 보통은 이렇게 rocm 버전을 동일하게 해주는 것이 좋다.

- rocm_version.h

 현재 rocm_version.h 헤더파일 설치 경로가 코드의 설치 경로와 맞지 않아 발생하는 문제가 있다. 따라서 src/include/hip_rocm_version_info.h 파일의 #include <rocm-core/rocm_version.h> 라인을 #include <rocm_version.h> 으로 변경해주어야 한다.

2. RCCL 프로젝트 빌드하기

mkdir build
cd build

빌드를 위해 빌드 전용 디렉토리를 생성한다.

sudo mkdir -p /opt/rocm/.info/
sudo echo "6.3.3" | sudo tee /opt/rocm/.info/version

 빌드하기 전에 잠깐! /opt/rocm/.info/ 디렉토리를 생성하고 version 이라는 파일을 만들어서 거기에 버전을 기입해야 한다. 왜 그래야 하는지는 필자도 모른다. 다만 그래야 빌드가 된다. checkout 할 때에 썼던 tag 의 버전을 파일에 기입하면 된다. 필자의 경우는 6.3.3 이 된다.

cmake										\
-DCMAKE_BUILD_TYPE=Release					\
-DCMAKE_INSTALL_PREFIX=/opt/rccl-gfx1030	\
-DCMAKE_CXX_COMPILER=$(which hipcc)			\
-DAMDGPU_TARGETS=gfx1030   ..

make -j$(nproc) # 대단히 오래 걸린다.
				# 마지막 librccl linking 과정이 제일 오래 걸리는데 그게 정상이다.

sudo make install

3. RCCL 테스트하기

 우선 RCCL 을 사용하기 위해선 커널의 iommu=pt 옵션이 켜져 있어야 한다. 다음의 과정을 통해 iommu 를 활성화한다:

sudo vi /etc/default/grub
# 파일에서 다음 라인을 수정:
# GRUB_CMDLINE_LINUX="<생략> iommu=pt"
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

 완료했다면 재부팅하면 된다. 또한 RX 6600 에서 RCCL 을 사용하려면 환경변수로 HSA_OVERRIDE_GFX_VERSION=10.3.0 을 추가해야 한다. 또한 프로그램에게 LD_LIBRARY_PATHrccl 을 설치한 경로를 지정해야 한다. 이는 LD_LIBRARY_PATH 를 지정하는 것으로 해결할 수 있다.

HSA_OVERRIDE_GFX_VERSION=10.3.0 NCCL_DEBUG=INFO LD_LIBRARY_PATH=/opt/rccl-gfx1030/lib/ <실행항 프로그램>

RX 66007700 XT 가 서로 통신하는 것을 확인할 수 있다.

profile
2000.11.30

0개의 댓글