SW
[ROCm] 모든 리눅스 배포판에서 ROCm 구동하기 본문
※ 아래 글에 나오는 과정을 정리한 것이다.
※ 이 글은 OpenSUSE Tumbleweed를 기준으로 설명하고 있기 때문에 zypper 패키지 매니저를 사용하지만, distrobox와 podman을 설치할 수 있다는 전제 하에 방법은 같다.
ROCm / HIP cookbook for any distro! Tested with Blender and Stable Diffusion on Tumbleweed with AMD Radeon 7600
Hi all, I finally had some time to write down my adventures of getting ROCm to work on my machine. I got it working a couple of months ago, but now an update borked something and I had to redo most steps, so I finally have a good step by step guide for any
forums.opensuse.org
0. 유저 그룹 추가
아래 명령어를 통해 render, video 그룹(이 없다면) 만들고, 현재 로그인된 유저를 해당 그룹에 추가한다.
sudo groupadd render
sudo groupadd video
sudo usermod -aG render,video $LOGNAME
그리고 반드시 재부팅한다.
(재부팅하는 이유는 "groups" 명령어를 사용하였을 때 video와 render가 나오도록 하기 위함으로, groups에서 해당 그룹들이 나와야만 distrobox 사용 시 컨테이너로 권한이 제대로 넘겨진다. [이 글 참고 : https://superuser.com/questions/416374/linux-groups-vs-groups-username])
1. 컨테이너 준비
아래 명령어를 통해 distrobox를 설치한다.
sudo zypper install distrobox podman
아래 명령어를 통해 distrobox에서 rocm 컨테이너를 만든다.
이 경우, ubuntu22.04 이미지를 기반으로 하여 "rocm"이라는 이름의 컨테이너를 만든 것이다. (버전별로 관리할 생각이라면 이름에 버전도 붙여주는게 좋을 것이다. 이 글은 5.6.1을 타겟으로 한다.)
distrobox create -i ubuntu:22.04 -n rocm
아래 명령으로 컨테이너로 들어간다.
distrobox enter rocm
컨테이너의 셸에서 아래 명령어들을 통해 필요한 도구를 설치한다.
sudo apt update
sudo apt upgrade
sudo apt install build-essential
2. ROCm 설치(via amdgpu-install)
아래 명령어들을 통해 amdgpu-install을 설치한다.
cd ~/Downloads
sudo apt update
wget https://repo.radeon.com/amdgpu-install/5.6.1/ubuntu/jammy/amdgpu-install_5.6.50601-1_all.deb
chmod +x ./amdgpu-install_5.6.50601-1_all.deb
sudo apt install ./amdgpu-install_5.6.50601-1_all.deb
amdgpu-install --usecase=rocm --no-dkms
아래 명령어를 통해 rocm을 설치한다.
amdgpu-install --usecase=rocm --no-dkms
3. ROCm 설치 확인
아래 명령어를 통해 ROCm이 제대로 설치되었는지 확인할 수 있다.
rocminfo
위와 같은 결과가 나온다면, 제대로 설치된 것이다.
만약 /dev/kfd에 접근할 수 없다는 식의 오류가 나온다면, 컨테이너 밖의 터미널에서 그룹 추가 후 재부팅하고 다시 컨테이너 내부에서 rocminfo 명령어 실행을 재시도하면 된다. (host 계정에 render 그룹이 제대로 들어가있지 않으면 일어나는 문제이다.)
아래 두 명령어까지 실행하여 확인해 볼 수 있다.
rocm-smi
clinfo
3-A. OpenCL 테스트
https://github.com/ProjectPhysX/OpenCL-Benchmark
GitHub - ProjectPhysX/OpenCL-Benchmark: A small OpenCL benchmark program to measure peak GPU/CPU performance.
A small OpenCL benchmark program to measure peak GPU/CPU performance. - ProjectPhysX/OpenCL-Benchmark
github.com
위 링크의 간단한 OpenCL 벤치마크 프로그램을 통해 성능을 테스트해 볼 수 있다.
git clone https://github.com/ProjectPhysX/OpenCL-Benchmark.git
cd OpenCL-Benchmark
chmod +x make.sh
./make.sh
위 명령어를 통해 OpenCL 구동이 제대로 되는지 확인해 보면 된다. (VRAM 1GB 이상의 여유 필요)
AMD Ryzen 7700X 내장 GPU 기준 아래와 같은 결과가 나온다.
4. 내장 GPU의 경우
ROCm은 공식적으로는 내장 GPU를 지원하지 않지만, 실행해보면 일단 된다.
다만, 내장GPU의 경우 보통 VRAM의 크기가 매우 작게 잡혀 있는데, 보통 GPGPU가 머신러닝에 쓰이는 것을 고려하면 더 넓은 VRAM이 필요하다.
++ 만약 PyTorch 등을 구동하려는 목적이라면, VRAM을 늘일 필요 없고 그냥 아래 링크의 것을 받아서 쓰면 된다. 시스템 램을 VRAM처럼 쓰는 효과가 있으며, 어차피 이거 없이 PyTorch가 내장GPU에서 안된다.
https://github.com/segurac/force-host-alloction-APU
GitHub - segurac/force-host-alloction-APU
Contribute to segurac/force-host-alloction-APU development by creating an account on GitHub.
github.com
내장GPU의 VRAM 크기 확장은 BIOS에서 UMA Framebuffer Size를 늘리면 된다.
(다만, 그만큼 가용 RAM이 줄어드는 것이니, RAM 여유공간을 생각해가며 조작하기를 권한다.)
UMA Framebuffer Size 설정은 메인보드 제조사별로 상이하며, 일부 제조사는 막아두었을 수도 있다.
'프로그래밍' 카테고리의 다른 글
[ROCm] AMD APU(내장 GPU)에서 Pytorch 사용 (0) | 2025.01.20 |
---|---|
AMD + AI (1) | 2024.11.15 |