前回紹介したオープンソースのGPGPU "NyuziProcessor" はどうやらダウンロードして簡単に試行できるようだ。試してみよう。
Ubuntuで試行する場合は、必要なパッケージをダウンロードした。
sudo apt-get -y install autoconf cmake make gcc g++ bison flex python \ python3 perl emacs openjdk-8-jdk swig zlib1g-dev python-dev \ libxml2-dev libedit-dev libncurses5-dev libsdl2-dev gtkwave imagemagick
次に、リポジトリをダウンロードする。非常に軽いリポジトリだ。こんなので本当に動くのかなあ?
git clone https://github.com/jbush001/NyuziProcessor.git
そして、おもむろにsetupのスクリプトを走らせると、リポジトリのダウンロードが始まった。そういうことか。
./build/setup_tools.sh
あああ、と思ったらCMakeのバージョンを上げなければならないらしい。というか、結論としてはXilinxのツールとしてデフォルトでインストールされるものと被っていた。
CMake Error at CMakeLists.txt:3 (cmake_minimum_required): CMake 3.4.3 or higher is required. You are running version 3.3.2
というわけでバージョンアップするとビルド出来るようになったのだが、ずいぶんと時間がかかる。時間切れ。。。
CMakeの環境が整うと、あとはビルドを実行するだけだ。ただし、非常に時間がかかるのでCPUを1つ以上持っている場合は並列化することをお勧めする。
- ./build/setup_tools.sh
diff --git a/build/setup_tools.sh b/build/setup_tools.sh index a6edf4b..d724be3 100755 --- a/build/setup_tools.sh +++ b/build/setup_tools.sh @@ -39,7 +39,7 @@ if [ ! -f Makefile ]; then ./configure || fail "Error configurating Verilator" fi -make || fail "Error building verilator" +make -j3 || fail "Error building verilator" sudo make install || fail "Error installing verilator" ) @@ -58,5 +58,5 @@ else cd tools/NyuziToolchain/build fi -make || fail "Error building toolchain" +make -j3 || fail "Error building toolchain" sudo make install || fail "Error installing toolchain"
ビルドが完了すると次はテストを動かしてみる。テストはmake test
で実行する。何本もテストが流れていくので、それを眺めているだけである。これはおそらくCTestを使っているのかな?
make[1]: ディレクトリ '/home/msyksphinz/work/NyuziProcessor/tests' に入ります cd remote-gdb && python3 ./runtest.py gdb_breakpoint [PASS] gdb_remove_breakpoint [PASS] gdb_breakpoint_errors [PASS] gdb_single_step [PASS] gdb_single_step_breakpoint [PASS] gdb_read_write_memory [PASS] gdb_read_write_register [PASS] gdb_register_info [PASS] gdb_select_thread [PASS] gdb_thread_info [PASS] gdb_invalid_command [PASS] gdb_big_command [PASS] gdb_queries [PASS] gdb_vcont [PASS] gdb_crash [PASS] 0/15 tests failed cd core/isa/ && python3 ./runtest.py int_arithmetic_verilator [PASS] int_arithmetic_emulator [PASS] branch_verilator [PASS] branch_emulator [PASS] compare_verilator [PASS] compare_emulator [PASS] shuffle_verilator [PASS] shuffle_emulator [PASS] load_store_verilator [PASS] load_store_emulator [PASS] atomic_verilator [PASS] atomic_emulator [PASS] float_ops_verilator [PASS] float_ops_emulator [PASS] float_verilator [PASS] float_emulator [PASS] 0/16 tests failed cd core/cache_control/ && python3 ./runtest.py dflush [PASS] dinvalidate [PASS] ...
サンプルプログラムを動かす
テストが通るようになったので、サンプルプログラムを動かしてみよう。 その前に一つ注意事項だが、私はVirtual Box上のUbuntuでシミュレーションをしている。この場合、Virtual Boxの設定を変更して、3DアクセラレーションをOFFにしておく必要がある。
サンプルプログラムのディレクトリに移って、実行してみる。
cd software/apps/sceneview/
make run
GUIが表示されて、アプリケーションが動作する。なにこれ面白い!