commit | 321c904e1fd71c4b64e1a012269b458920c87755 | [log] [tgz] |
---|---|---|
author | David Gao <davidgao@google.com> | Tue Jun 18 08:53:41 2024 +0000 |
committer | David Gao <davidgao@google.com> | Fri Jun 21 20:07:46 2024 +0000 |
tree | 04fc28e34b12f679cd8c2c3c15a3f8955d2c0abe | |
parent | 0758fb83b3d7115324913424d14b6830da168971 [diff] |
Rewrite ConvPerChannelD1OD24_5x5 This new approach utilizes the aconv instruction to perform full matmul. Creative data shuffling methods allow the implementation to achieve significantly better useful MAC throughput. Activation min/max is assumed to be int8 limits to eliminate the clamping instructions in the postprocessing ambient_face_2.8.0_504x378_grayscale_per_axis_simulator_iss is used in testing. The following items are measured on the simulator: - Mismatch_count is 0. - #0 CONV_2D takes 1.52M ticks (down from 4.02M, 2.64x speedup). - Total cycles is now 52.9M (down from 57.9M, -8.6%). The implementation currently contains lots of repeated and near-repeated sections. They can be folded together in the future to improve readability. The following improvement items may be doable: - Further tweak data shuffling sections to take less time - Rearrange instructions on bottlenecks Change-Id: Ibfcea94988b9ece4ea98a61c139ce44e967b4fd8
This project contains the BSP to build the SW artifact that can run on the Kelvin core, and integrated as part of the Shodan repository.
The project supports two build systems -- Bazel and CMake -- for OSS integration reasons. Bazel is used by TFLM flow, while CMake is the build system for IREE.
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>/cache/toolchain_kelvin
This project needs to be at <dir>/sw/kelvin
.
The project uses Bazel 5.1.1, to align with OpenTitan build system requirements.
bazel build //...
To run the unit tests (with the kelvin_sim ISS) Make sure the Environment variable $ROOTDIR
is set to the root directory of the local repo (or run source build/setup.sh
)
bazel test //...
TODO: Add CMake flow
The binaries can be simulated with the kelvin simulator, located at <dir>/sim/kelvin
.
sim_kelvin <elf location>
Load the generated .bin
binaries to the FPGA emulator/Renode simulator.