LLVMをソースコードからBuildしてからhipify-clangのBuildして動作テストするメモ（失敗）

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のビルドスクリプトを参考に動かしてみたいと思います。


```bash


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とかを下げてみる