RX 570, RX 580에서 ROCm으로 TensorFlow GPU 버전 사용하기

이지운·2021년 12월 29일
0

우분투에 ROCm 설치하기 with gfx803


목차

1. 삽질
2. 최신 ROCm이 지원되지 않는 하드웨어
3. 설치 방법 및 에러 해결 방법

바로 해결 방법을 확인하고 싶은 분께서는 3. 설치 방법 및 에러 해결 방법을 확인하시면 됩니다.


삽질

집에 굴러다니는 RX 580으로 강화학습 환경이나 만들어보려 했더니...

정겹게 반겨주는 에러 메시지

Call returned HSA_STATUS_ERROR_OUT_OF_RESOURCES: The runtime failed to allocate the necessary resources. This error may also occur when the core runtime library needs to spawn threads or create internal OS-specific events.

다시 보니까 가장 큰 문제였던 HSA_STATUS_ERROR_OUT_OF_RESOURCES 관련 에러 사진은 아니었네요
(그냥 환경세팅 열 받아서 찍은 사진..)

아무튼 2일간 삽질로 많은 정보들을 얻었습니다.

1. 그냥 Nvidia를 쓰자
2. 그냥 Nvidia를 쓰자
3. 그냥 Nvidia를 쓰자


최신 ROCm이 지원되지 않는 하드웨어

여담이지만 navi 아키텍처는 처음부터 지원이 되지 않았던 터라 아쉬움이 크네요
아무튼 중요한 건 아래 내용입니다.

ROCm 4.0(2020-12-19)부터 RX gfx803은 ROCm이 공식적으로 지원되지 않습니다. 제가 확인해본 지원되지 않는 제품은 다음과 같습니다.

Fiji

  • R9 Fury X
  • R9 Fury
  • R9 Nano
  • PRO DUO (Fiji)
  • Instinct MI8
  • FirePro S9300 X2

Polaris 10

  • RX 470
  • RX 480
  • PRO WX 5100
  • PRO WX 7100
  • PRO DUO (Polaris)
  • Instinct MI6

Polaris 11

  • RX 460
  • RX 480m
  • RX 490m
  • PRO WX 4100
  • PRO WX 4130
  • PRO WX 4150
  • PRO WX 4170
  • PRO 450
  • PRO 455
  • PRO 460

Polaris 12(Lexa)

  • RX 540
  • RX 550
  • PRO WX 2100
  • PRO WX 3100

Polaris 20

  • RX 570
  • RX 580

Polaris 21

  • RX 560

Polaris 30

  • RX 590

설치 방법 및 에러 해결 방법

해결 방법은 [https://github.com/Grench6/RX580-rocM-tensorflow-ubuntu20.4-guide]를 번역했습니다.

ROCm 제거

아직 ROCm을 설치하지 않은 분은 이 부분을 스킵하셔도 됩니다

  1. 터미널에 sudo apt autoremove rocm-dkms 입력
  2. /opt 에 존재하는 rocm 관련 폴더 모두 제거
  3. 터미널에 sudo dpkg -l | grep -E 'hsa|hip|llvm|rocm|rock' 입력했을 때 나오는 패키지들을 제거(sudo apt remove --purge 패키지이름)
  4. 재부팅

커널 설치

ROCm을 구동하기 위해서는 리눅스 커널 버전 5.4가 필요합니다. 현재 커널 버전은 uname -r을 이용해 확인할 수 있습니다.

  1. 터미널에 sudo apt install --install-recommends linux-generic를 입력해 커널 설치
  2. 재부팅하는데 GRUB 메뉴에서 "Additional options for Ubuntu" 를 선택한 다음 "Boot with kernel 5.4.0-x-generic"를 선택
  3. 터미널에 sudo apt remove --purge linux-generic-hwe-20.04 linux-oem-20.04 linux-hwe-* linux-oem-* linux-modules-5.1* linux-modules-5.8.0-* linux-modules-5.6.0-* 를 입력해 필요 없는 커널 제거
  • 중간점검: 이때 터미널에 uname -r를 입력했을 때 아래와 같이 출력되어야 합니다.:

    5.4.0-x-generic

ROCm 설치

sudo apt update
sudo apt dist-upgrade
sudo apt install libnuma-dev
sudo reboot

리포지터리 추가 후 rocm-dkms 설치:

wget -q -O - https://repo.radeon.com/rocm/rocm.gpg.key | sudo apt-key add -
echo 'deb [arch=amd64] http://repo.radeon.com/rocm/apt/3.5.1/ xenial main' | sudo tee /etc/apt/sources.list.d/rocm.list
sudo apt update
sudo apt install rocm-dkms && sudo reboot

VGA에 접근하기 위해 유저 권한을 설정:

sudo usermod -a -G video $LOGNAME
sudo usermod -a -G render $LOGNAME
sudo reboot

ROCm을 PATH에 추가:

echo 'export PATH=$PATH:/opt/rocm/bin:/opt/rocm/profiler/bin:/opt/rocm/opencl/bin' | sudo tee -a /etc/profile.d/rocm.sh
sudo ldconfig
sudo reboot
  • 중간점검: 터미널에 rocminfo 을 입력했을 때 에러가 발생하면 안됩니다. 정상적으로 설치된 경우 아래와 같은 메시지가 출력될 겁니다.

    Name: gfx803
    Uuid: GPU-XX
    Marketing Name: Ellesmere [Radeon RX 470/480/570/570X/580/580X/590]

절반정도 왔네요!

TensorFlow 설치하기

sudo apt install python3 python3-pip
sudo apt install rocm-libs miopen-hip
pip3 install -Iv tensorflow-rocm==2.2.0
sudo apt install rccl
sudo apt install libtinfo5
sudo reboot
  • 중간점검: python에서 tensorflow를 import해서 아래 코드를 실행시켰을 때 에러가 발생하면 안됩니다.
import tensorflow as tf
tf.add(2,5)
exit()

문제가 없으면 다음과 같이 출력될겁니다:

<tf.Tensor: shape=(), dtype=int32, numpy=7>

만약 문제가 발생했다면, 이런 에러 메시지가 출력될겁니다:

Could not load dynamic library 'libhip_hcc.so'; dlerror: libhip_hcc.so: cannot open shared object file: No such file or directory

문제가 발생한 경우 이 글을 참고하세요. '이 글'에 나와있는 방법은 일시적인 해결방법이므로 앞으로 부팅할 때마다 자동으로 적용되게 해주는 작업이 필요합니다. 해당 링크를 참고하셔도 좋지만, 귀찮으면 그냥 아래 명령어를 터미널에 입력하셔도 됩니다.:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rocm/hip/lib
sudo ldconfig

짜잔!

잘 돌아가는 모습을 확인하실 수 있습니다.

끝!

profile
Computational-neuroscience

0개의 댓글