はじめに
今回はAMD製のGPU『Radeon RX Vega 56』を搭載した自作PCにGPUコンピューティングの環境を構築します。
手順としてはこのような流れで行いますが、初心者の方でもコピーアンドペーストでできるように書いていきたいと思います。
- UbuntuのブートUSBからOSをインストールする
- ROCmをインストールする
- Python3のライブラリをインストールする
- MIOpenをインストールする
- OpenCVをインストールする
- TensorFlowをインストールする
環境
Radeon RX Vega 56 Air Boost 8G
UbuntuのブートUSBからOSをインストールする
UbuntuのブートUSBの作成方法は前回の記事に詳しい手順がありますので参考にしてください。
実際にブートUSBからOSをインストールする方法はこちらの記事にスクリーンショット付きで分かりやすく解説されています。
ROCmをインストールする
ROCm(Radeon Open Compute platform)とは、AMD製のGPUを使ってGPUコンピューティングするためのプラットフォームです。
NVIDIA社のGPUを使う場合はCUDA(Compute Unified Device Architecture)と呼ばれるものがあるのですが、今回はAMD社のGPUを使うためROCmをインストールします。
Ubuntuがインストールできたらターミナルを開き、下記のコマンドをひとつずつ順番に打ち込みます。
詳しく知りたい方はこちらのGitHubをご覧ください。
sudo apt update
sudo apt dist-upgrade
sudo apt install libnuma-dev
sudo reboot
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 libhsakmt
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
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
GPU EATERというGPUクラウドサービスの公式サイトのヘルプも参考にさせていただきました。
Python3のライブラリをインストールする
次に主要なPython3のライブラリをインストールします。
下記のコマンドをひとつずつ順番に打ち込んでください。
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
正しくインストールできているか確認します。
次のようにPython3を立ち上げて、試しにNumPyをインポートしてみてエラーがでなければ完了です。
python3
>>> import numpy
>>> quit()
MIOpenをインストールする
続いて、MIOpen(Machine Learning Open)をインストールします。
MIOpenは先ほどインストールしたROCmと組み合わせることで、より高度な機械学習ができるようになります。
sudo apt update
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
cd ~/src
git clone https://github.com/ROCmSoftwarePlatform/hcRNG.git && cd hcRNG
./install.sh
cd ~/src
git clone https://github.com/ROCmSoftwarePlatform/hcFFT.git && cd hcFFT
./install.sh
OpenCVをインストールする
こちらのサイトを参考にさせていただきました。
「#」が付いている行は説明なので飛ばして1行ずつコマンドを打ち込みます。
# Update packages
sudo apt update
sudo apt upgrade
# Install dependencies
sudo apt install -y build-essential
sudo apt install -y cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
# To process images
sudo apt install -y python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
# To process videos
sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt install -y libxvidcore-dev libx264-dev
# For GUI
sudo apt install -y libgtk-3-dev
# For optimization
sudo apt install -y libatlas-base-dev gfortran pylint
# To build OpenCV binding for both python 2 and 3
sudo apt install -y python2.7-dev python3.5-dev
# To Download OpenCV
mkdir -p ~/src
# To Download OpenCV 3.3.0
wget https://github.com/opencv/opencv/archive/3.3.0.zip -O ~/src/opencv-3.3.0.zip
# To Download OpenCV Contrib 3.3.0
wget https://github.com/opencv/opencv_contrib/archive/3.3.0.zip -O ~/src/opencv_contrib-3.3.0.zip
# We need to unzip to extract the zip files
sudo apt install -y unzip
# Extract OpenCV and OpenCV Contrib
cd ~/src
unzip opencv-3.3.0.zip
unzip opencv_contrib-3.3.0.zip
cd opencv-3.3.0
mkdir build
cd build
# Run cmake
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 ..
次のコマンドを打ち込み、出力された数字を覚えておいてください。
nproc
今回は「8」でしたのでその数字に合わせて次のコマンドを打ちます。
$ make -j8
続いてこちらのコマンドを打てば、OpenCVのインストールは完了です。
sudo make install
sudo ldconfig
それでは正しくインストールできたか確認してみます。
エラーがでなければ成功です。
python3
>>> import cv2
>>> cv2.__version__
>>> quit()
TensorFlowをインストールする
最後にTensorFlowをインストールします。
こちらのサイトを参考にしています。
sudo pip3 install wheel cython
wget http://repo.radeon.com/rocm/misc/tensorflow/tensorflow-1.3.0-cp35-cp35m-linux_x86_64.whl
sudo pip3 install tensorflow-1.3.0-cp35-cp35m-linux_x86_64.whl && rm tensorflow-1.3.0-cp35-cp35m-linux_x86_64.whl
正常にインストールできているか確認してみます。
python3
>>> import tensorflow
>>> quit()
以上で全てのインストールが終了しました。お疲れ様でした。
最後に
今回はAMD+ROCm(OpenCL)の上に機械学習や画像処理などに必要な主要ライブラリをインストールしてGPUコンピューティング環境を構築しました。
初心者の方でも気軽に真似できるようにインストールの手順をメインに書いており、それぞれのライブラリなどの専門知識は極力避けましたので、興味のある方はご自身で調べてみてください。
GPUといえばNVIDIA+CUDAが有名でドキュメントの量も圧倒的に多いので、AMD製のGPUを使う方に少しでも参考になれば幸いです。