commit | 1a82e44fbe6774f9e199cd97f094f7c0eb45c386 | [log] [tgz] |
---|---|---|
author | Adam Jesionowski <jesionowski@google.com> | Fri Sep 16 10:28:59 2022 -0700 |
committer | Adam Jesionowski <jesionowski@google.com> | Fri Sep 16 18:15:42 2022 +0000 |
tree | a817100ec6cb8e471d7ed9628409a5f35e88e4f7 | |
parent | fc8e73fa6b07f17b079e20a676a4a2a54ec48487 [diff] |
sw/vec_iree: Populate output_length in IREE exec This CL enables populating the output_length variable in the output header. First we create a new output_header struct, placing it at the top of the model_output section. The return code and epc are already populated using crt0. When I first added the MlOutput struct I thought we would have an arbitrary pointer, but now the output lives right after the header. Remove that struct and have the process_output call populate a length instead. Change-Id: I0b0005dcdc56ea53f124993cac81646fb8cd4561
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).
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.
<dir>/sw/vec
<dir>/toolchain/iree
<dir>/ml/ml-models-public
This project needs to be at <dir>/sw/vec_iree
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
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
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.
In Shodan, this project utilizes LLVM lit
and FileCheck
to test the ML executable performance. The tests are defined in the *_test.run files under <output dir>
. To run the test, at the Shodan top level directory
lit --path <Filecheck dir> -a <output dir>
Filecheck in Debian testing is under /usr/lib/llvm-11/bin
Add -D RUNNER=qemu
to enable the qemu tests.