LoginSignup
1
1

More than 3 years have passed since last update.

ISPC 本体を AARCH64 向けにクロスコンパイルする

Last updated at Posted at 2019-07-13

俺得 ISPC AARCH64 版で ISPC を動かすのはこちら.

ISPC を aarch64 で動かす
https://qiita.com/syoyo/items/36f089548323325bb5e1

最近(2019/05), ISPC 本体に AARCH64 対応が入ったようなので, 俺得版ではなく, 本体を AARCH64 対応でビルドしてみます.

対象環境

  • Linux(Ubuntu 16.04 or later)

LLVM/clang のビルド

ISPC は LLVM 3.4 とかでも動くようですが, AARCH64 対応が進んでいる LLVM/clang 最新版を使いたいですね. ここでは LLVM/clang 8.0 を使います.

ISPC では LLVM のdump 関数を使っていますが, これは LLVM 5.0 から deprecated になり, prebuilt package などでは dump 関数は有効になっていないため, まずは dump 関数を有効にして LLVM/clang をビルドする必要があります.

を参考にします. 必要なソースコードをダウロードしてビルドするユーティリティ alloy.py(合金?)スクリプトを使います(上記 dump 機能を有効にして LLVM/clang をビルドします).

LLVM_HOME にソースコードとビルドのインストール先パス, ISPC_HOME に ispc repo のパスを設定して起動します. LLVM_HOME に相対パスを指定すると build ディレクトリがおかしなところに生成されるようなので注意ください.

$ LLVM_HOME=/path/to/llvm-dist ISPC_HOME=/path/to/ispc python alloy.py -b --version=8.0

--force が追加で必要かもしれません. ビルドが終わるまで待ちます(30 分 ~ 1 時間くらい)

ISPC のビルド

上記でビルドした LLVM バイナリ(bin-8.0)を PATH に加えて llvm-config が見つかるようにして, cmake bootstrap します.

ARM_ENABLED=On にして, ARM 対応で ISPC をビルドします.

$ rmdir build
$ mkdir build
$ cd build
$ PATH=/path/to/llvm/build/bin-8.0:$PATH cmake -DARM_ENABLED=On ..
$ make

ISPC がビルドできました. ispc のヘルプを出して, --archaarch64 があれば成功です.

AARM64 向けコードの生成

--target に neon 系を指定します.

$ ispc --arch=aarch64 --target=neon-i32x4 ...

generic だと現状実行時エラーになりますので注意ください.

TODO

クロスコンパイルされたバイナリを Raspberry Pi 3(ARM64 kernel) などで動くか確認する

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1