Running Test Programs on Gemmini Simulators
Luffcaでは、RISC-V SoCデザインフレームワークであるChipyardの環境構築を行うと共に、DNNアクセラレータのGemminiのシミュレータを作成し、テストプログラムのgemmini-rocc-tests
を実行しました。
関連記事は、こちら。
- Running Test Programs on Gemmini Simulators(本記事)
- Running ResNet-50 on FPGA with Gemmini SoC
- Running ONNX Model on FPGA with Gemmini SoC
Chipyard
Chipyardは、UCB(カリフォルニア大学バークレイ校)が開発を進めているアジャイルRISC-V SoCデザインフレームワークです。
Chipyardには、RocketやBOOMなどのRISC-V CPU、アクセラレータなどが含まれています。
Gemmini
Gemminiは、Chipyardに含まれるRTLジェネレータの一つで、シストリックアレイ方式のDNNアクセラレータを生成することができます。
また、RISC-V CPUのRocketまたはBOOMとGemminiを組み合わせることによって、SoCを構成できます。
Gemmini Simulator
Gemminiには、いくつかのシミュレータがあります。今回は、以下のシミュレータを作成しました。
- Spike: Functional Simulator
- Verilator: Cycle-Accurate Simulator
なお、ファンクショナル・シミュレータのSpikeには、Gemmini用の拡張が追加されています。
Running Test Programs on Spike
以下は、Spikeを用いてResNet-50を実行したときの様子です。
$ cd $CHIPYARD_ROOT/generators/gemmini $ ./scripts/run-spike.sh resnet50 ... Prediction: 75 (score: 45) Prediction: 900 (score: 43) Prediction: 641 (score: 40) Prediction: 897 (score: 57) Total cycles: 4958105 (100%) Matmul cycles: 695733 (14%) Im2col cycles: 0 (0%) Conv cycles: 1769030 (35%) Pooling cycles: 0 (0%) Depthwise convolution cycles: 0 (0%) Res add cycles: 2398040 (48%) Other cycles: 95302 (1%) PASS
Running Test Programs on Verilator
以下は、Verilatorを用いてconv_first_layer
を実行したときの様子です。
$ cd $CHIPYARD_ROOT/generators/gemmini $ ./scripts/run-verilator.sh conv_first_layer This emulator compiled with JTAG Remote Bitbang client. To enable, use +jtag_rbb_enable=1. Listening on port 33079 [UART] UART0 is here (stdin/stdout). Output dimension: 9 Randomize inputs... Randomize weights... Randomize bias... CPU conv... CPU conv took 2238789 cycles Flatten weights... Gemmini conv... Gemmini conv took 1796 cycles
まとめ
Luffcaでは、Chipyardの環境構築を行うと共に、DNNアクセラレータのGemminiのシミュレータを作成し、テストプログラムのgemmini-rocc-tests
を実行しました。