Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

Tiramisu、その3


Windows Subsystem for LinuxUbuntu 16.04上で、Tiramisuをビルドしてみました。

まずは、Windows Subsystem for Linux & bash をインストールします。

Build Troubleshooting Tiramisu (Build Troubleshooting)に従い、各種インストールします。
 % sudo apt-get install autoconf libtool cmake llvm-5.0 clang-5.0 

  $ sudo apt-get install libz-dev
    (Halideをビルドするときに、libz が必要になります)

次に、Tiramisu をクローンします。
  % git clone https://github.com/rbaghdadi/tiramisu.git
  % cd tiramisu

次に、ISL をダウンロードし、ビルドします。
  環境変数 LD_LIBRARY_PATH が設定されていないときは、
  /usr/lib:/lib を LD_LIBRARPY_PATH に設定しておきましょう。

  % export LD_LIBRARY_PATH=/usr/lib:lib

ISL のダウンロード、ビルド、インストール。
  % ./get_and_install_isl.sh

Tiramisu用のHalide をダウンロードの準備をします。

LLVM-5.0/clang-5.0をインストールしたので、get_and_install_halide.sh の
  export CLANG=${LLVM_CONFIG_BIN}clang
  export LLVM_CONFIG=${LLVM_CONFIG_BIN}llvm-config

を

  export CLANG=${LLVM_CONFIG_BIN}clang-5.0
  export LLVM_CONFIG=${LLVM_CONFIG_BIN}llvm-config-5.0

に変更します。

Tiramisu用のHalide をダウンロードします。
get_and_install_halide.sh を実行するとエラーになったので、下記のコマンドでダウンロードします。
Tiramisu用のHalideを使います。
  % git clone -b tiramisu_64_bit  https://github.com/jrayzero/Halide.git 

get_and_install_halide.sh の下記の行をコメントアウトします。
  # git submodule update --init --remote

  # git checkout tiramisu
  # git pull

Tiramisu用のHalide をビルドします。
  % ./get_and_install_halide.sh
エラーがでても、libHalide.so ができれば、OK!

最後に、tiramisu をビルドの準備をします。
  % sudo apt-get install libpng16-devtools libjpeg-dev
  これをインストールしないと、にエラーになります。
また、CMakeLists.txt の
  execute_process(COMMAND ${LLVM_CONFIG_BIN}llvm-config --ignore-libllvm --system-libs OUTPUT_VARIABLE LLVM_FLAGS)

を

  execute_process(COMMAND ${LLVM_CONFIG_BIN}llvm-config-5.0 --ignore-libllvm --system-libs OUTPUT_VARIABLE LLVM_FLAGS)

に変更します。 llvm-config-5.0 をインストールしたためです。

configure.cmake ファイルの

cmakeコマンドを実行して、Makefileの生成します。
  % cmake .
  % make -j tiramisu

isl_id_xxxx 関数が無いというエラーが発生する。これに対応するために、include/tiramisu/core.h に

  #include <isl/set.h>

の後に、

  #include <isl/id.h>

を追加します。もしかしたら、エラーは発生しないかもしれません。

ビルドに成功すると、
  build/libtiramisu.so

が生成されます。

以下、いろいろテスト。

チュートリアルの実行
  % make run_tutorial_XX

  OK = 01, 03, 05, 06, 08, 09, 10

  NG = 02 ( テスト内容がGPUのため、テスト環境ではGPUを搭載していない)

  実行無し(ソースコードも無い) = 04, 07

テストの実行
  % make test

  92% tests passed, 13 tests failed out of 164
  The following tests FAILED:
            2 - global (SEGFAULT)
           33 - 17_build (Failed)
           34 - 17 (Not Run)
          149 - 89_build (Failed)
          150 - 89 (Not Run)
          157 - 98_build (Failed)
          158 - 98 (Not Run)
          159 - 99_build (Failed)
          160 - 99 (Not Run)
          161 - 100_build (Failed)
          162 - 100 (Not Run)
          163 - 101_build (Failed)
          164 - 101 (Not Run)

  2は、test_02.cpp で不明
  33/34は、test_17.cpp で、GPU
  149/150は、test_89.cpp で不明
  157-164は、test_98,99,100,101.cpp で、分散処理。

benchmarkの実行
  % make benchmarks

ビルド中に、下記のようなエラーが発生したら、
エラー箇所の

  set_loop_iterator_default_data_type(p_int32)

の行をコメントアウトします。

docの生成
  % sudo apt-get install doxygen

  % make doc

以上、