實戰目標
PE數量擴大到原來4倍
原來配置
?tileRows: Int = 1,tileColumns: Int = 1,meshRows: Int = 16,meshColumns: Int = 16,
改后配置
?tileRows: Int = 1,tileColumns: Int = 1,meshRows: Int = 32,meshColumns: Int = 32,
修改配置
1. 修改gemmini的scala配置文件,用于構建 chipyard rtl和測試程序
修改配置文件,chipyard/generators/gemmini/src/main/scala/gemmini/GemminiConfigs.scala
的 GemminiArrayConfig? 內容
- meshRows/meshColumns 的數值
- Scratchpad and accumulator memory parameters ,同倍數放大
修改后如下:
object GemminiConfigs {val defaultConfig = GemminiArrayConfig[SInt, Float, Float](// DatatypesinputType = SInt(8.W),weightType = SInt(8.W),accType = SInt(32.W),spatialArrayInputType = SInt(8.W),spatialArrayWeightType = SInt(8.W),spatialArrayOutputType = SInt(20.W),// Spatial array size optionstileRows = 1,tileColumns = 1,// meshRows = 16,// meshColumns = 16,meshRows = 32,//擴大兩倍meshColumns = 32,//擴大兩倍// Spatial array PE optionsdataflow = Dataflow.BOTH,// Scratchpad and accumulator//sp_capacity = CapacityInKilobytes(256), //acc_capacity = CapacityInKilobytes(64),sp_capacity = CapacityInKilobytes(1024), //擴大四倍acc_capacity = CapacityInKilobytes(256),//擴大四倍
2 . 修改?spike 的Gemmini 配置文件,用于更新gemmini spike
有兩處gemmini_params.h 文件需要更新,他們分別位于?chipyard、generators/gemmini/software/gemmini-rocc-tests/include和/chipyard/generators/gemmini/software/libgemmini 中,修改后的關鍵內容如下:
#define XCUSTOM_ACC 3
//#define DIM 16
#define DIM 32 // 擴大到兩倍
#define ADDR_LEN 32
#define BANK_NUM 4
#define BANK_ROWS 4096
#define ACC_ROWS 1024
#define MAX_BYTES 64
#define MAX_BLOCK_LEN (MAX_BYTES/(DIM*1))
#define MAX_BLOCK_LEN_ACC (MAX_BYTES/(DIM*4))
重和新編譯
因為是重新編譯,-s 1 表示跳過第一條
cd $CY_DIR
./build-setup.sh -s 1 -s 4 -s 6 -s 7 -s 8 -s 9
更新libgemmini
source env.shcd $CY_DIR/generators/gemmini
make -C software/libgemmini install
重新編譯仿真器
cd $CY_DIR/sims/verilator
#make CONFIG=GemminiRocketConfig# Or, if you want a simulator that can generate waveforms, run this:
make -j$(nproc) debug CONFIG=GemminiRocketConfig
重新編譯測試程序
cd $CY_DIR/generators/gemmini/software/gemmini-rocc-tests
rm -rf build
./build.sh
運行用例
運行測試用例
cd $CY_DIR/sims/verilator# Run a small DNN workload in the functional simulator
spike --extension=gemmini ../../generators/gemmini/software/gemmini-rocc-tests/build/imagenet/resnet50-baremetal