Add README.md Change-Id: Iedf073efdbf2f9470244c3720299ee4cf62f6053
diff --git a/README.md b/README.md new file mode 100644 index 0000000..0816101 --- /dev/null +++ b/README.md
@@ -0,0 +1,66 @@ +# Springbok Model Execution Repository + +This project contains ML model codegen and execution libraries/examples. The +artifacts built from this project is targeted for RISC-V 32-bit baremetal machine +(Springbok). + +## Prerequisite + +If you get this project from Project Shodan manifest, you are all set. If not, +you need to have following projects as well to build the project successfully. + +* [Springbok BSP](https://spacebeaker.googlesource.com/shodan/sw/vec): Under `<dir>/sw/vec` +* [IREE](https://github.com/google/iree): Under `<dir>/toolchain/iree` +* [Public ML models](https://spacebeaker.googlesource.com/shodan/ml-models-public): Under `<dir>/ml/ml-models-public` +* RISC-V 32-bit crosscompile toolchain + +This project needs to be at `<dir>/sw/vec_iree` + +## Code structure + +* build_tools: Utility scripts for the project +* cmake: CMake Macros for the project +* native_log: BSP support for the Linux userspace emulation +* samples: Codegen and execution of ML models based on IREE + * device: Device HAL driver library + * float_model: float model examples + * quant_model: quantized model examples + * simple_vec_mul: Point-wise vector multiplication examples + * util: Runtime utility library for model execution + +## Build the project + +If you are running from Project Shodan repo, you can build the artifacts with `m iree`. +If you download this project alone, you need to download/build IREE's host compiler, +then at the top level directory + +```bash + cmake -B <output dir> -G Ninja \ + -DCMAKE_TOOLCHAIN_FILE="$(realpath sw/vec_iree/cmake/riscv_iree.cmake)" \ + -DCMAKE_BUILD_TYPE=MinSizeRel \ + -DIREE_HOST_BINARY_ROOT="$(IREE_COMPILER_DIR)/install" \ + -DRISCV_TOOLCHAIN_ROOT=$(TOOLCHAINRV32_PATH) \ + <dir>/sw/vec_iree + cmake --build <output dir> --target all +``` + +## Run the executables + +You can run QEMU or RENODE emulation with the built executables. In Shodan repo, +`qemu_sim_springbok` for QEMU emulation, and `sim_springbok` for Renode simulation. +Out-of-repo emulation is possible but require more steps. + +## Test the executables + +In Shodan, this project utilizes LLVM `lit` and `FileCheck` to test the ML +executable performance. The tests are defined in the *_test.txt files under +`samples`. To run the test, at the Shodan top level directory + +```bash +lit --path <Filecheck dir> -a sw/vec_iree/samples +``` + +Filecheck in Debian testing is under `/usr/lib/llvm-11/bin` + +Add `-D FEATURES=internal` to enable the internal model tests. Add `-D RUNNER=qemu` +to enable the qemu tests.