https://github.com/ROCm-Developer-Tools/HIP/tree/master/hipify-clang
hip-clangがどうやらROCm-devをインストールしても入れてもらえない?みたいな感じなので環境構築メモ
環境は
OS Ubuntu 16.04.06
ROCm version 2.6
HCC clang version 9.0.0
cmake version 3.5.1
CUDA Version 9.2
GPU 0 GTX1080Ti
GPU 1 RadeonⅦ
#必要なものを入れる
・clang/LLVMが必要
これがかなりめんどくさそうです
http://mcommit.hatenadiary.com/entry/2018/01/05/025802
LLVMのビルドについてまとめてみる
ここらへんの記事を参考に入れてみます、
LLVMのインストールはかなり手間っぽいので現時点では手探り状態
ROCm公式によるとLLVM versionは現時点で6.0.1が良いとのことなのでこれをinstallすると良さそうです。
該当記事で紹介されていたLLVMのビルドスクリプトを参考に動かしてみたいと思います。
sudo apt-get install clang cmake git g++
# OpenMP関係のパッケージをインストール
# OpenMPのビルドをしないのであれば不要
sudo apt install openmpi-bin openmpi-common libopenmpi-dev
# LLDBで必要になるパッケージのインストール
# LLDBをビルドしないのであれば不要
sudo apt-get install build-essential subversion swig python2.7-dev libedit-dev libncurses5-dev
# LLVM作業用ディレクトリの作成・移動
mkdir ~/clang-llvm
cd ~/clang-llvm
cd ~/clang-llvm
git clone https://github.com/martine/ninja.git
cd ninja
git checkout release
./bootstrap.py
sudo cp ninja /usr/bin/
cd ~/clang-llvm
# ソースの取得 version5.01の場合
wget http://releases.llvm.org/6.0.1/llvm-6.0.1.src.tar.xz
wget http://releases.llvm.org/6.0.1/cfe-6.0.1.src.tar.xz
wget http://releases.llvm.org/6.0.1/compiler-rt-6.0.1.src.tar.xz
wget http://releases.llvm.org/6.0.1/libcxx-6.0.1.src.tar.xz
wget http://releases.llvm.org/6.0.1/libcxxabi-6.0.1.src.tar.xz
wget http://releases.llvm.org/6.0.1/libunwind-6.0.1.src.tar.xz
wget http://releases.llvm.org/6.0.1/lld-6.0.1.src.tar.xz
wget http://releases.llvm.org/6.0.1/lldb-6.0.1.src.tar.xz
wget http://releases.llvm.org/6.0.1/openmp-6.0.1.src.tar.xz
wget http://releases.llvm.org/6.0.1/polly-6.0.1.src.tar.xz
wget http://releases.llvm.org/6.0.1/clang-tools-extra-6.0.1.src.tar.xz
wget http://releases.llvm.org/6.0.1/test-suite-6.0.1.src.tar.xz
# 展開
tar xfv llvm-6.0.1.src.tar.xz
tar xfv cfe-6.0.1.src.tar.xz
tar xfv compiler-rt-6.0.1.src.tar.xz
tar xfv libcxx-6.0.1.src.tar.xz
tar xfv libcxxabi-6.0.1.src.tar.xz
tar xfv libunwind-6.0.1.src.tar.xz
tar xfv lld-6.0.1.src.tar.xz
tar xfv lldb-6.0.1.src.tar.xz
tar xfv openmp-6.0.1.src.tar.xz
tar xfv polly-6.0.1.src.tar.xz
tar xfv clang-tools-extra-6.0.1.src.tar.xz
tar xfv test-suite-6.0.1.src.tar.xz
mv cfe-6.0.1.src llvm-6.0.1.src/tools/clang
mv compiler-rt-6.0.1.src llvm-6.0.1.src/projects/compiler-rt
mv libcxx-6.0.1.src llvm-6.0.1.src/projects/libcxx
mv libcxxabi-6.0.1.src llvm-6.0.1.src/projects/libcxxabi
mv libunwind-6.0.1.src llvm-6.0.1.src/runtimes/libunwind
mv lld-6.0.1.src llvm-6.0.1.src/tools/lld
mv openmp-6.0.1.src llvm-6.0.1.src/projects/openmp
mv polly-6.0.1.src llvm-6.0.1.src/tools/polly
mv clang-tools-extra-6.0.1.src llvm-6.0.1.src/tools/clang/tools/extra
mv test-suite-6.0.1.src llvm-6.0.1.src/projects/test-suite
mkdir build
cd build
cmake -G "Ninja" -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=Release -DLLVM_USE_LINKER=gold -DLLVM_BUILD_TEST=ON CMAKE_INSTALL_PREFIX=/usr/local ../llvm-6.0.1.src
DLLVM_USE_LINKER=gold -DLLVM_BUILD_TEST=ON -DCMAKE_INSTALL_PREFIX=/usr/local ../llvm-6.0.1.src
# ビルド実行
ninja
上記を~/build.shで保存して
$ sudo bash ./build.sh
$ sudo ninja install
git clone https://github.com/ROCm-Developer-Tools/HIP.git
cd ./HIP/
cd ./hipify-clang/
mkdir build dist
cd ./build
cmake -DCMAKE_INSTALL_PREFIX=/usr/ -DCMAKE_BUILD_TYPE=Release \..
sudo make -j install
これで/usr/binにhipify-clangが一応インストールされた・・・
ただいちいちLLVMをBuildしなくても
https://qiita.com/syoyo/items/03348e5c55a93e69714e
Ubuntu 18.04 + apt clang 8.0.1 で hipify-clang をビルドする
build済みバイナリがあるらしくもっと簡単にhipifyをinstallできるっぽいので悲しい
#動かしてみる
HIP-Examplesに入っているサンプルの.cuをまずは変換してhccでコンパイル&RUNさせてみる。
git clone https://github.com/ROCm-Developer-Tools/HIP-Examples.git
cd ./HIP-Examples/mini-nbody/cuda
$ hipify-clang ./nbody-block.cu --cuda-path=/usr/local/cuda-9.2/ -I/usr/local/cuda-9.2/samples/common/inc/
In file included from <built-in>:1:
/usr/local/lib/clang/6.0.1/include/__clang_cuda_runtime_wrapper.h:66:2: error: "Unsupported CUDA version!"
#error "Unsupported CUDA version!"
/usr/local/lib/clang/6.0.1/include/__clang_cuda_runtime_wrapper.h:148:10: fatal error: 'device_functions_decls.h' file not found
#include "device_functions_decls.h"
^~~~~~~~~~~~~~~~~~~~~~~~~~
error "Unsupported CUDA version!"
Unsupportedと言われてしまいました。
もしかしたらむりやりhipify-clangを/usr/binにinstallしたのが悪かったのかもしれません
CUDA Versionを8.0や7.5とか落とせば動くかもしれませんね
#todo
プリコンパイル済みのLLVMとかを試して見る
可能ならCUDA versionとかを下げてみる