Help us understand the problem. What is going on with this article?

例のグラボでTensorFlow環境を作る

例のグラボとは

いつぞや6000円くらいで大量に中古が出回っていたマイニング用のGfxカードです。
AMDのRX470相当品のようです。ちなみに改造して映像出力にも使ってます。

なんの情報か

自分でAMD GPUを使った環境を構築したのでその覚書です。

参考情報

以下のページを参考にさせていただきました。
https://qiita.com/hktm/items/ead2ed4ed3441fca7311
https://qiita.com/ymiura17/items/5ebd7e85abb679153447

環境

Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz(Skylake)
DDR3 20MByte
Radeon RX 470(8G) 映像出力改造済み
ubuntu 18.04.3 LTS

構築手順

以下、コマンドをそのまま記載します。
ディレクトリ構成とかが一緒で良ければこのままで動くはず。

ROCm関連のインストール

ROCm関連の環境をインストールします。終わったら再起動を行います。

cd ~
sudo apt update
sudo apt dist-upgrade
sudo apt install libnuma-dev
wget -qO - http://repo.radeon.com/rocm/apt/debian/rocm.gpg.key | sudo apt-key add -
sudo sh -c 'echo deb [arch=amd64] http://repo.radeon.com/rocm/apt/debian/ xenial main > /etc/apt/sources.list.d/rocm.list'
sudo apt update
sudo apt purge compute-firmware
sudo apt purge $(dpkg -l | grep 'kfd\|rocm' | grep linux | grep -v libc | awk '{print $2}')
sudo apt autoremove rocm-dkms
sudo apt install -y rocm-dkms
sudo usermod -a -G video $LOGNAME
sudo apt install -y clinfo
sudo reboot

再起動したら以下のコマンドを入力し、正常に認識していることを確認します。

/opt/rocm/bin/rocminfo 
clinfo

正常に認識していたら各種情報が出力されます。

環境変数の設定

必要な環境変数を設定します。

echo 'export HIP_VISIBLE_DEVICES=0' >> ~/.profile
echo 'export HCC_HOME=/opt/rocm/hcc' >> ~/.profile
echo 'export ROCM_HOME=/opt/rocm/bin' >> ~/.profile
echo 'export HIP_PATH=/opt/rocm/hip' >> ~/.profile
echo 'export PATH=/usr/local/bin:$HCC_HOME/bin:$HIP_PATH/bin:$ROCM_HOME:$PATH:/opt/rocm/opencl/bin/x86_64' >> ~/.profile
echo 'export LD_LIBRARY=$LD_LIBRARY:/opt/rocm/opencl/lib/x86_64' >> ~/.profile
echo 'export LC_ALL="en_US.UTF-8"' >> ~/.profile
echo 'export LC_CTYPE="en_US.UTF-8"' >> ~/.profile
source ~/.profile
export PIP=pip3
export PYTHON=python3
export HIP_PLATFORM=hcc
export PLATFORM=hcc

Python環境のインストール

ここでは直接システムに入れてしまったけど、Pyenvで切り替えできるようにしておくほうが良いです。

sudo apt update
sudo apt install -y build-essential python3 python3-dev python3-pip pkg-config check cmake libhdf5-dev
sudo pip3 install --upgrade pip
sudo pip3 install -y setuptools scipy numpy six pillow h5py

ROCm関連の開発ツール・ライブラリ

ROCm関連に必要な開発ツール関連をインストールする。

sudo apt install git
sudo apt install -y --allow-unauthenticated rocm-dkms rocm-dev rocm-libs rocm-device-libs hsa-ext-rocr-dev hsakmt-roct-dev hsa-rocr-dev rocm-opencl rocm-opencl-dev rocm-utils rocm-profiler cxlactivitylogger miopen-hip miopengemm
sudo apt install rccl
mkdir src
cd src
export C_INCLUDE=PATH
export C_INCLUDE_PATH=/opt/rocm/include:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=/opt/rocm/include:$CPLUS_INCLUDE_PATH
./install.sh 
cd ..
git clone https://github.com/ROCmSoftwarePlatform/hcFFT.git && cd hcFFT
./install.sh 
cd

OpenCVのインストール

ここではソースコードからOpenCVを入れます。ちょっと古いけど問題が少ない3.4.3を入れています。
CPUのコア数が4なので、makeでは-j 4を指定しています。

cd ~/src
sudo apt install -y build-essential
sudo apt install -y cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt install -y python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt install -y libxvidcore-dev libx264-dev
sudo apt install -y libgtk-3-dev
sudo apt install -y libatlas-base-dev gfortran pylint
sudo apt install -y python2.7-dev python3.5-dev
sudo apt install -y python2.7-dev python3.6-dev
sudo apt install -y unzip
wget https://github.com/opencv/opencv/archive/3.4.3.zip -O ~/src/opencv-3.4.3.zip
wget https://github.com/opencv/opencv_contrib/archive/3.4.3.zip -O ~/src/opencv_contrib-3.4.3.zip
unzip opencv-3.4.3.zip 
unzip opencv_contrib-3.4.3.zip 
cd opencv-3.4.3/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D USE_V4L=ON -D USE_V4L2=ON -D WITH_V4L=ON -D WITH_V4L2=ON -D INSTALL_C_EXAMPLES=OFF -D INSTALL_PYTHON_EXAMPLES=OFF -D BUILD_EXAMPLES=OFF -D WITH_QT=OFF -D WITH_QUICKTIME=OFF -D WITH_QTKIT=OFF -D WITH_OPENGL=OFF -D WITH_OPENCL=OFF -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D WITH_CUDA=OFF -D WITH_QUICKTIME=OFF -D WITH_GSTREAMER=OFF -D WITH_FFMPEG=ON -D BUILD_opencv_python2=ON -D BUILD_opencv_python3=ON ..
make -j4
sudo make install
sudo ldconfig
cd ~

ROCm対応のTensorFlowのインストール

TensorFlowを入れます。現時点(2019/9/24)では1.14.1が入ります。
setuptoolsをアップグレードしないと入らなかったのでそれも合わせて行います。

sudo pip3 install --upgrade launchpadlib
sudo pip3 install --upgrade setuptools
pip3 install tensorflow-rocm
sudo pip3 install tensorflow-rocm
pip3 install tensorflow_datasets

以上の手順でインストールが行えました。

実行時の注意

1.14.1ではRX470で動かすには以下の環境変数の設定が必要になります。
(ないとエラーで動きません)

export MIOPEN_DEBUG_GCN_ASM_KERNELS=0

この制約の詳細は以下参照
https://github.com/ROCmSoftwarePlatform/tensorflow-upstream/blob/develop-upstream/RELEASE.md#known-issues

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away