FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

オープンソースGPGPU "NyuziProcessor"を試行する (1. ダウンロードとビルド, サンプル実行)

前回紹介したオープンソース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にしておく必要がある。

f:id:msyksphinz:20171014003913p:plain

サンプルプログラムのディレクトリに移って、実行してみる。

cd software/apps/sceneview/
make run

GUIが表示されて、アプリケーションが動作する。なにこれ面白い!

f:id:msyksphinz:20171014004144g:plain