TenstorrentのISSであるWhisperを使って、riscv_arch_testsのテストパタンがどのように動くのかを確認してみる。
使用環境はUbuntu-22.04 LTSである。
以下のパッケージをインストールする必要がある。
sudo apt install libboost-dev libboost-program-options-dev
git clone https://github.com/tenstorrent/riscv_arch_tests.git --recurse-submodules cd riscv_arch_tests make -j$(nproc) BOOST_DIR=/usr/include/boost/
ビルド後に、build-Linux/whisper
が作成される。
./build-Linux/whisper --version Version 1.792 compiled on Mar 23 2023 at 10:49:36
次にスクリプトを実行するのだが、quals file
と書いてあるが、このquals file
の定義が書いていなくて意味が分からない。
とりあえず中身を見てみると、whisper_config.json
を直下のディレクトリにコピーしなければならないらしい。
cd riscv_tests ln -s ../infra/whisper_config.json ../infra/quals.py --quals_file rv_i/rvi_compute_register_immediate.list
subprocess.CalledProcessError: Command '/home/msyksphinz/work/riscv/riscv_arch_tests/infra/../whisper/whisper ..//riscv_tests/rv_i/rvi_compute_register_immediate/rvi_compute_register_immediate_10 --configfile /home/msyksphinz/work/riscv/riscv_arch_tests/infra/whisper_config.json --maxinst 50000 --csv --memorysize 0x40000000000000 --logfile rvi_compute_register_immediate_10_whisper.log ' returned non-zero exit status 127.
これはバイナリの位置が違うのでこうなるのは当たり前なのだが、これでいいのだろうか? とりあえずLinux向けに改造してみる。
diff --git a/infra/quals.py b/infra/quals.py index 6a08194..7cb42bb 100755 --- a/infra/quals.py +++ b/infra/quals.py @@ -111,7 +111,7 @@ class WhisperRunner(Runner): f'--memorysize 0x40000000000000 ' f'--logfile {testname}_whisper.log ' ) - self._tool = f'{current_path}/../whisper/whisper' + self._tool = f'{current_path}/../whisper/build-Linux/whisper' if opts == "default": self._opts = self._default_opts
簡単なテストは全部PASSしたようだ。
../infra/quals.py --quals_file rv_i/rvi_compute_register_immediate.list
|TESTNAME |STATUS | |rvi_compute_register_immediate_10 |PASS | |rvi_compute_register_immediate_11 |PASS | |rvi_compute_register_immediate_1 |PASS | |rvi_compute_register_immediate_12 |PASS | |rvi_compute_register_immediate_2 |PASS | |rvi_compute_register_immediate_3 |PASS | |rvi_compute_register_immediate_4 |PASS | |rvi_compute_register_immediate_5 |PASS | |rvi_compute_register_immediate_6 |PASS | |rvi_compute_register_immediate_7 |PASS | |rvi_compute_register_immediate_8 |PASS | |rvi_compute_register_immediate_9 |PASS |
../infra/quals.py --quals_file rv_i/rvi_load_store.list
|TESTNAME |STATUS |
|rvi_load_store_10 |PASS |
|rvi_load_store_11 |PASS |
|rvi_load_store_12 |PASS |
|rvi_load_store_13 |PASS |
|rvi_load_store_14 |PASS |
|rvi_load_store_15 |PASS |
|rvi_load_store_1 |PASS |
|rvi_load_store_2 |PASS |
|rvi_load_store_3 |PASS |
|rvi_load_store_4 |PASS |
|rvi_load_store_5 |PASS |
|rvi_load_store_6 |PASS |
|rvi_load_store_7 |PASS |
|rvi_load_store_8 |PASS |
|rvi_load_store_9 |PASS |