mlonmcu 0.3.0.dev0__3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mlonmcu/__init__.py +26 -0
- mlonmcu/artifact.py +172 -0
- mlonmcu/cli/__init__.py +19 -0
- mlonmcu/cli/build.py +119 -0
- mlonmcu/cli/cleanup.py +75 -0
- mlonmcu/cli/common.py +227 -0
- mlonmcu/cli/compile.py +87 -0
- mlonmcu/cli/env.py +68 -0
- mlonmcu/cli/export.py +93 -0
- mlonmcu/cli/flow.py +67 -0
- mlonmcu/cli/helper/__init__.py +18 -0
- mlonmcu/cli/helper/filter.py +25 -0
- mlonmcu/cli/helper/parse.py +159 -0
- mlonmcu/cli/init.py +130 -0
- mlonmcu/cli/load.py +87 -0
- mlonmcu/cli/main.py +116 -0
- mlonmcu/cli/models.py +48 -0
- mlonmcu/cli/run.py +56 -0
- mlonmcu/cli/setup.py +136 -0
- mlonmcu/cli/tune.py +48 -0
- mlonmcu/config.py +219 -0
- mlonmcu/context/__init__.py +22 -0
- mlonmcu/context/context.py +545 -0
- mlonmcu/context/read_write_filelock.py +327 -0
- mlonmcu/environment/__init__.py +18 -0
- mlonmcu/environment/config.py +214 -0
- mlonmcu/environment/environment.py +501 -0
- mlonmcu/environment/init.py +191 -0
- mlonmcu/environment/list.py +81 -0
- mlonmcu/environment/loader.py +250 -0
- mlonmcu/environment/templates.py +69 -0
- mlonmcu/environment/writer.py +117 -0
- mlonmcu/feature/__init__.py +18 -0
- mlonmcu/feature/feature.py +230 -0
- mlonmcu/feature/features.py +1537 -0
- mlonmcu/feature/type.py +33 -0
- mlonmcu/flow/__init__.py +61 -0
- mlonmcu/flow/backend.py +234 -0
- mlonmcu/flow/framework.py +69 -0
- mlonmcu/flow/tflm/__init__.py +23 -0
- mlonmcu/flow/tflm/backend/__init__.py +23 -0
- mlonmcu/flow/tflm/backend/backend.py +47 -0
- mlonmcu/flow/tflm/backend/tflmc.py +129 -0
- mlonmcu/flow/tflm/backend/tflmi.py +385 -0
- mlonmcu/flow/tflm/framework.py +81 -0
- mlonmcu/flow/tvm/__init__.py +23 -0
- mlonmcu/flow/tvm/backend/__init__.py +26 -0
- mlonmcu/flow/tvm/backend/backend.py +282 -0
- mlonmcu/flow/tvm/backend/model_info.py +307 -0
- mlonmcu/flow/tvm/backend/python_utils.py +36 -0
- mlonmcu/flow/tvm/backend/tuner.py +41 -0
- mlonmcu/flow/tvm/backend/tvmaot.py +162 -0
- mlonmcu/flow/tvm/backend/tvmaotplus.py +51 -0
- mlonmcu/flow/tvm/backend/tvmc_utils.py +172 -0
- mlonmcu/flow/tvm/backend/tvmcg.py +102 -0
- mlonmcu/flow/tvm/backend/tvmllvm.py +106 -0
- mlonmcu/flow/tvm/backend/tvmrt.py +151 -0
- mlonmcu/flow/tvm/backend/wrapper.py +645 -0
- mlonmcu/flow/tvm/framework.py +96 -0
- mlonmcu/logging.py +79 -0
- mlonmcu/mlonmcu.py +19 -0
- mlonmcu/models/__init__.py +31 -0
- mlonmcu/models/convert_data.py +107 -0
- mlonmcu/models/frontend.py +571 -0
- mlonmcu/models/group.py +29 -0
- mlonmcu/models/lookup.py +345 -0
- mlonmcu/models/metadata.py +133 -0
- mlonmcu/models/model.py +104 -0
- mlonmcu/models/options.py +64 -0
- mlonmcu/models/utils.py +136 -0
- mlonmcu/platform/__init__.py +27 -0
- mlonmcu/platform/_platform.py +46 -0
- mlonmcu/platform/espidf/__init__.py +25 -0
- mlonmcu/platform/espidf/espidf.py +489 -0
- mlonmcu/platform/espidf/espidf_target.py +257 -0
- mlonmcu/platform/lookup.py +126 -0
- mlonmcu/platform/microtvm/__init__.py +25 -0
- mlonmcu/platform/microtvm/microtvm.py +580 -0
- mlonmcu/platform/microtvm/microtvm_arduino_target.py +68 -0
- mlonmcu/platform/microtvm/microtvm_backend.py +64 -0
- mlonmcu/platform/microtvm/microtvm_espidf_target.py +94 -0
- mlonmcu/platform/microtvm/microtvm_etissvp_target.py +98 -0
- mlonmcu/platform/microtvm/microtvm_host_target.py +46 -0
- mlonmcu/platform/microtvm/microtvm_spike_target.py +230 -0
- mlonmcu/platform/microtvm/microtvm_target.py +189 -0
- mlonmcu/platform/microtvm/microtvm_template_target.py +55 -0
- mlonmcu/platform/microtvm/microtvm_zephyr_target.py +91 -0
- mlonmcu/platform/mlif/__init__.py +25 -0
- mlonmcu/platform/mlif/mlif.py +300 -0
- mlonmcu/platform/mlif/mlif_target.py +86 -0
- mlonmcu/platform/platform.py +244 -0
- mlonmcu/platform/tvm/__init__.py +25 -0
- mlonmcu/platform/tvm/tvm.py +429 -0
- mlonmcu/platform/tvm/tvm_backend.py +57 -0
- mlonmcu/platform/tvm/tvm_target.py +165 -0
- mlonmcu/platform/zephyr/__init__.py +25 -0
- mlonmcu/platform/zephyr/zephyr.py +450 -0
- mlonmcu/platform/zephyr/zephyr_target.py +110 -0
- mlonmcu/plugins.py +26 -0
- mlonmcu/report.py +99 -0
- mlonmcu/session/__init__.py +18 -0
- mlonmcu/session/postprocess/__init__.py +43 -0
- mlonmcu/session/postprocess/postprocess.py +62 -0
- mlonmcu/session/postprocess/postprocesses.py +487 -0
- mlonmcu/session/run.py +1008 -0
- mlonmcu/session/session.py +373 -0
- mlonmcu/setup/__init__.py +18 -0
- mlonmcu/setup/cache.py +147 -0
- mlonmcu/setup/gen_requirements.py +619 -0
- mlonmcu/setup/setup.py +285 -0
- mlonmcu/setup/task.py +380 -0
- mlonmcu/setup/tasks/__init__.py +40 -0
- mlonmcu/setup/tasks/arm_gcc.py +58 -0
- mlonmcu/setup/tasks/cmsisnn.py +151 -0
- mlonmcu/setup/tasks/common.py +36 -0
- mlonmcu/setup/tasks/corstone300.py +64 -0
- mlonmcu/setup/tasks/espidf.py +87 -0
- mlonmcu/setup/tasks/etiss.py +147 -0
- mlonmcu/setup/tasks/llvm.py +67 -0
- mlonmcu/setup/tasks/mlif.py +49 -0
- mlonmcu/setup/tasks/muriscvnn.py +166 -0
- mlonmcu/setup/tasks/pulp.py +192 -0
- mlonmcu/setup/tasks/riscv_gcc.py +146 -0
- mlonmcu/setup/tasks/spike.py +190 -0
- mlonmcu/setup/tasks/tf.py +92 -0
- mlonmcu/setup/tasks/tflite.py +59 -0
- mlonmcu/setup/tasks/tflmc.py +141 -0
- mlonmcu/setup/tasks/tvm.py +172 -0
- mlonmcu/setup/tasks/utvmcg.py +96 -0
- mlonmcu/setup/tasks/zephyr.py +119 -0
- mlonmcu/setup/utils.py +374 -0
- mlonmcu/target/__init__.py +37 -0
- mlonmcu/target/_target.py +41 -0
- mlonmcu/target/arm/__init__.py +3 -0
- mlonmcu/target/arm/corstone300.py +235 -0
- mlonmcu/target/arm/util.py +109 -0
- mlonmcu/target/common.py +194 -0
- mlonmcu/target/elf.py +256 -0
- mlonmcu/target/host_x86.py +84 -0
- mlonmcu/target/metrics.py +75 -0
- mlonmcu/target/riscv/__init__.py +7 -0
- mlonmcu/target/riscv/etiss_pulpino.py +462 -0
- mlonmcu/target/riscv/gvsoc_pulp.py +215 -0
- mlonmcu/target/riscv/ovpsim.py +301 -0
- mlonmcu/target/riscv/riscv.py +185 -0
- mlonmcu/target/riscv/riscv_qemu.py +166 -0
- mlonmcu/target/riscv/spike.py +243 -0
- mlonmcu/target/riscv/util.py +134 -0
- mlonmcu/target/target.py +200 -0
- mlonmcu/utils.py +49 -0
- mlonmcu/version.py +21 -0
- mlonmcu-0.3.0.dev0.dist-info/LICENSE +202 -0
- mlonmcu-0.3.0.dev0.dist-info/METADATA +343 -0
- mlonmcu-0.3.0.dev0.dist-info/NOTICE +8 -0
- mlonmcu-0.3.0.dev0.dist-info/RECORD +376 -0
- mlonmcu-0.3.0.dev0.dist-info/WHEEL +5 -0
- mlonmcu-0.3.0.dev0.dist-info/entry_points.txt +3 -0
- mlonmcu-0.3.0.dev0.dist-info/top_level.txt +1 -0
- resources/frameworks/tvm/crt_config/README.md +7 -0
- resources/frameworks/tvm/crt_config/crt_config.h +53 -0
- resources/frameworks/tvm/tuning_records/riscv_cpu_v0.01.log.best +46 -0
- resources/patches/fix_esp32c3_march.patch +20 -0
- resources/patches/pulp_freertos_support.patch +55 -0
- resources/platforms/espidf/micro_speech_esp32devboard/CMakeLists.txt +29 -0
- resources/platforms/espidf/micro_speech_esp32devboard/README.md +70 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/CMakeLists.txt +78 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/Kconfig +76 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/default_data.c +26 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/default_model_support/process_input.c +35 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/default_model_support/process_output.c +45 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/include/exit.h +26 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/include/ml_interface.h +70 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/include/printing.h +31 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/ml_interface.c +74 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/ml_interface_tflm.cc +64 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/mlif2/ml_interface_tvm.c +53 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/tflite-lib/CMakeLists.txt +140 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/tflite-lib/Kconfig +8 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/tvm-lib/CMakeLists.txt +66 -0
- resources/platforms/espidf/micro_speech_esp32devboard/components/tvm-lib/Kconfig +7 -0
- resources/platforms/espidf/micro_speech_esp32devboard/example_test.py +38 -0
- resources/platforms/espidf/micro_speech_esp32devboard/info.txt +9 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/CMakeLists.txt +58 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/audio_provider.cc +193 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/audio_provider.h +49 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/command_responder.cc +53 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/command_responder.h +35 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/feature_provider.cc +132 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/feature_provider.cc.orig +145 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/feature_provider.h +55 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/kissfft/COPYING +11 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/kissfft/_kiss_fft_guts.h +168 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/kissfft/kiss_fft.c +408 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/kissfft/kiss_fft.h +124 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/kissfft/tools/kiss_fftr.c +159 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/kissfft/tools/kiss_fftr.h +46 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/main.cc +63 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/main_functions.cc +204 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/main_functions.h +37 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/micro_features_generator.cc +121 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/micro_features_generator.h +38 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/micro_model_settings.cc +23 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/micro_model_settings.h +43 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/bits.h +102 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/fft.cc +52 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/fft.h +50 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/fft_util.cc +69 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/fft_util.h +34 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/filterbank.c +134 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/filterbank.h +63 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/filterbank_util.c +220 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/filterbank_util.h +50 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/frontend.c +72 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/frontend.h +64 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/frontend_util.c +85 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/frontend_util.h +52 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/kiss_fft_common.h +48 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/kiss_fft_int16.cc +8 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/kiss_fft_int16.h +34 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/log_lut.c +30 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/log_lut.h +40 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/log_scale.c +83 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/log_scale.h +39 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/log_scale_util.c +27 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/log_scale_util.h +45 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/noise_reduction.c +51 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/noise_reduction.h +46 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/noise_reduction_util.c +45 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/noise_reduction_util.h +50 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/pcan_gain_control.c +56 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/pcan_gain_control.h +47 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/pcan_gain_control_util.c +92 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/pcan_gain_control_util.h +57 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/window.c +70 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/window.h +49 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/window_util.c +73 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/microfrontend/lib/window_util.h +45 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/pins.c +14 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/pins.h +30 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/recognize_commands.cc +150 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/recognize_commands.h +173 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/ringbuf.c +333 -0
- resources/platforms/espidf/micro_speech_esp32devboard/main/ringbuf.h +74 -0
- resources/platforms/espidf/micro_speech_esp32devboard/sdkconfig.defaults +36 -0
- resources/platforms/espidf/project/CMakeLists.txt +29 -0
- resources/platforms/espidf/project/README.md +70 -0
- resources/platforms/espidf/project/components/mlif/CMakeLists.txt +77 -0
- resources/platforms/espidf/project/components/mlif/Kconfig +76 -0
- resources/platforms/espidf/project/components/mlif/default_data.c +26 -0
- resources/platforms/espidf/project/components/mlif/default_model_support/process_input.c +35 -0
- resources/platforms/espidf/project/components/mlif/default_model_support/process_output.c +45 -0
- resources/platforms/espidf/project/components/mlif/include/exit.h +26 -0
- resources/platforms/espidf/project/components/mlif/include/ml_interface.h +60 -0
- resources/platforms/espidf/project/components/mlif/include/printing.h +31 -0
- resources/platforms/espidf/project/components/mlif/ml_interface.c +54 -0
- resources/platforms/espidf/project/components/mlif/ml_interface_tflm.cc +40 -0
- resources/platforms/espidf/project/components/mlif/ml_interface_tvm.c +40 -0
- resources/platforms/espidf/project/components/tflite-lib/CMakeLists.txt +142 -0
- resources/platforms/espidf/project/components/tflite-lib/Kconfig +8 -0
- resources/platforms/espidf/project/components/tvm-lib/CMakeLists.txt +66 -0
- resources/platforms/espidf/project/components/tvm-lib/Kconfig +7 -0
- resources/platforms/espidf/project/example_test.py +38 -0
- resources/platforms/espidf/project/main/CMakeLists.txt +25 -0
- resources/platforms/espidf/project/main/main.c +57 -0
- resources/platforms/espidf/project/sdkconfig.defaults +26 -0
- resources/platforms/zephyr/project/CMakeLists.txt +22 -0
- resources/platforms/zephyr/project/Kconfig +101 -0
- resources/platforms/zephyr/project/README.rst +33 -0
- resources/platforms/zephyr/project/cmake/AddAllSubdirs.cmake +21 -0
- resources/platforms/zephyr/project/cmake/ChooseTarget.cmake +22 -0
- resources/platforms/zephyr/project/cmake/LinkTFLite.cmake +223 -0
- resources/platforms/zephyr/project/cmake/LinkTVM.cmake +68 -0
- resources/platforms/zephyr/project/cmake/LookupClang.cmake +41 -0
- resources/platforms/zephyr/project/cmake/backends/tflmc.cmake +5 -0
- resources/platforms/zephyr/project/cmake/backends/tflmi.cmake +5 -0
- resources/platforms/zephyr/project/cmake/backends/tvmaot.cmake +10 -0
- resources/platforms/zephyr/project/cmake/backends/tvmaotplus.cmake +10 -0
- resources/platforms/zephyr/project/cmake/backends/tvmcg.cmake +10 -0
- resources/platforms/zephyr/project/cmake/backends/tvmllvm.cmake +8 -0
- resources/platforms/zephyr/project/cmake/backends/tvmrt.cmake +8 -0
- resources/platforms/zephyr/project/cmake/extras.cmake +9 -0
- resources/platforms/zephyr/project/cmake/features/auto_vectorize_gcc.cmake +65 -0
- resources/platforms/zephyr/project/cmake/features/auto_vectorize_llvm.cmake +20 -0
- resources/platforms/zephyr/project/cmake/features/cmsisnn.cmake +86 -0
- resources/platforms/zephyr/project/cmake/features/muriscvnn.cmake +87 -0
- resources/platforms/zephyr/project/cmake/frameworks/tflm.cmake +1 -0
- resources/platforms/zephyr/project/cmake/frameworks/tflm_mlif.cmake +8 -0
- resources/platforms/zephyr/project/cmake/frameworks/tvm.cmake +1 -0
- resources/platforms/zephyr/project/cmake/frameworks/tvm_mlif.cmake +37 -0
- resources/platforms/zephyr/project/lib/CMakeLists.txt +13 -0
- resources/platforms/zephyr/project/lib/drivers/fake_input.c +10 -0
- resources/platforms/zephyr/project/lib/drivers/fake_input.h +8 -0
- resources/platforms/zephyr/project/lib/ml_interface/CMakeLists.txt +31 -0
- resources/platforms/zephyr/project/lib/ml_interface/default_data.c +8 -0
- resources/platforms/zephyr/project/lib/ml_interface/default_model_support/CMakeLists.txt +2 -0
- resources/platforms/zephyr/project/lib/ml_interface/default_model_support/process_input.c +17 -0
- resources/platforms/zephyr/project/lib/ml_interface/default_model_support/process_output.c +27 -0
- resources/platforms/zephyr/project/lib/ml_interface/ml_interface.c +36 -0
- resources/platforms/zephyr/project/lib/ml_interface/ml_interface.h +47 -0
- resources/platforms/zephyr/project/lib/ml_interface/ml_interface_tflm.cc +22 -0
- resources/platforms/zephyr/project/lib/ml_interface/ml_interface_tvm.c +22 -0
- resources/platforms/zephyr/project/lib/support/CMakeLists.txt +2 -0
- resources/platforms/zephyr/project/lib/support/dummy.c +0 -0
- resources/platforms/zephyr/project/lib/support/exit.h +8 -0
- resources/platforms/zephyr/project/lib/support/printing.h +11 -0
- resources/platforms/zephyr/project/lib/support/quantize.h +23 -0
- resources/platforms/zephyr/project/lib/targets/corstone300.c +62 -0
- resources/platforms/zephyr/project/lib/targets/default.c +2 -0
- resources/platforms/zephyr/project/lib/targets/etiss_pulpino.c +112 -0
- resources/platforms/zephyr/project/lib/targets/generic_riscv.c +112 -0
- resources/platforms/zephyr/project/lib/targets/riscv_qemu.c +112 -0
- resources/platforms/zephyr/project/lib/targets/target.h +2 -0
- resources/platforms/zephyr/project/prj.conf +11 -0
- resources/platforms/zephyr/project/sample.yaml +19 -0
- resources/platforms/zephyr/project/src/main.c +71 -0
- resources/platforms/zephyr/project2/CMakeLists.txt +72 -0
- resources/platforms/zephyr/project2/Kconfig +101 -0
- resources/platforms/zephyr/project2/README.rst +33 -0
- resources/platforms/zephyr/project2/cmake/AddAllSubdirs.cmake +21 -0
- resources/platforms/zephyr/project2/cmake/ChooseTarget.cmake +22 -0
- resources/platforms/zephyr/project2/cmake/LinkTFLite.cmake +223 -0
- resources/platforms/zephyr/project2/cmake/LinkTVM.cmake +68 -0
- resources/platforms/zephyr/project2/cmake/LookupClang.cmake +41 -0
- resources/platforms/zephyr/project2/cmake/backends/tflmc.cmake +5 -0
- resources/platforms/zephyr/project2/cmake/backends/tflmi.cmake +5 -0
- resources/platforms/zephyr/project2/cmake/backends/tvmaot.cmake +10 -0
- resources/platforms/zephyr/project2/cmake/backends/tvmaotplus.cmake +10 -0
- resources/platforms/zephyr/project2/cmake/backends/tvmcg.cmake +10 -0
- resources/platforms/zephyr/project2/cmake/backends/tvmllvm.cmake +8 -0
- resources/platforms/zephyr/project2/cmake/backends/tvmrt.cmake +8 -0
- resources/platforms/zephyr/project2/cmake/extras.cmake +9 -0
- resources/platforms/zephyr/project2/cmake/features/auto_vectorize_gcc.cmake +65 -0
- resources/platforms/zephyr/project2/cmake/features/auto_vectorize_llvm.cmake +20 -0
- resources/platforms/zephyr/project2/cmake/features/cmsisnn.cmake +86 -0
- resources/platforms/zephyr/project2/cmake/features/muriscvnn.cmake +87 -0
- resources/platforms/zephyr/project2/cmake/frameworks/tflm.cmake +1 -0
- resources/platforms/zephyr/project2/cmake/frameworks/tflm_mlif.cmake +8 -0
- resources/platforms/zephyr/project2/cmake/frameworks/tvm.cmake +1 -0
- resources/platforms/zephyr/project2/cmake/frameworks/tvm_mlif.cmake +37 -0
- resources/platforms/zephyr/project2/default_data.c +8 -0
- resources/platforms/zephyr/project2/default_model_support/CMakeLists.txt +3 -0
- resources/platforms/zephyr/project2/default_model_support/process_input.c +17 -0
- resources/platforms/zephyr/project2/default_model_support/process_output.c +27 -0
- resources/platforms/zephyr/project2/lib/CMakeLists.txt +13 -0
- resources/platforms/zephyr/project2/lib/drivers/fake_input.c +10 -0
- resources/platforms/zephyr/project2/lib/drivers/fake_input.h +8 -0
- resources/platforms/zephyr/project2/lib/support/CMakeLists.txt +2 -0
- resources/platforms/zephyr/project2/lib/support/dummy.c +0 -0
- resources/platforms/zephyr/project2/lib/support/exit.h +8 -0
- resources/platforms/zephyr/project2/lib/support/printing.h +11 -0
- resources/platforms/zephyr/project2/lib/support/quantize.h +23 -0
- resources/platforms/zephyr/project2/lib/targets/corstone300.c +62 -0
- resources/platforms/zephyr/project2/lib/targets/default.c +2 -0
- resources/platforms/zephyr/project2/lib/targets/etiss_pulpino.c +112 -0
- resources/platforms/zephyr/project2/lib/targets/generic_riscv.c +112 -0
- resources/platforms/zephyr/project2/lib/targets/riscv_qemu.c +112 -0
- resources/platforms/zephyr/project2/lib/targets/target.h +2 -0
- resources/platforms/zephyr/project2/ml_interface.c +36 -0
- resources/platforms/zephyr/project2/ml_interface.h +47 -0
- resources/platforms/zephyr/project2/ml_interface_tflm.cc +22 -0
- resources/platforms/zephyr/project2/ml_interface_tvm.c +22 -0
- resources/platforms/zephyr/project2/prj.conf +13 -0
- resources/platforms/zephyr/project2/sample.yaml +19 -0
- resources/platforms/zephyr/project2/settings.json +6 -0
- resources/platforms/zephyr/project2/src/main.c +35 -0
- resources/pycharm/.run/README.md +73 -0
- resources/pycharm/.run/step1_ init env.run.xml +24 -0
- resources/pycharm/.run/step2_ setup.run.xml +25 -0
- resources/pycharm/.run/step3_ run resnet on pulpxpulpissimo.run.xml +25 -0
- resources/templates/default.yml.j2 +258 -0
- resources/templates/dev.yml.j2 +212 -0
- resources/templates/minimal.yml.j2 +234 -0
- resources/templates/phi.yml.j2 +282 -0
- resources/templates/pulp.yml.j2 +267 -0
- resources/templates/research.yml.j2 +237 -0
- resources/templates/tumeda.yml.j2 +239 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
IF(DEFINED DEBUG_ARENA_USAGE)
|
|
2
|
+
IF(DEBUG_ARENA_USAGE)
|
|
3
|
+
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG_ARENA_USAGE=1")
|
|
4
|
+
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG_ARENA_USAGE=1")
|
|
5
|
+
ELSE()
|
|
6
|
+
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG_ARENA_USAGE=0")
|
|
7
|
+
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG_ARENA_USAGE=0")
|
|
8
|
+
ENDIF()
|
|
9
|
+
ENDIF()
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
IF(NOT RISCV_VEXT)
|
|
2
|
+
MESSAGE(FATAL_ERROR "RISCV_AUTO_VECTORIZE requires RISCV_VEXT")
|
|
3
|
+
ENDIF()
|
|
4
|
+
IF(RISCV_RVV_VLEN)
|
|
5
|
+
SET(VLEN ${RISCV_RVV_VLEN})
|
|
6
|
+
ELSE()
|
|
7
|
+
SET(VLEN "?")
|
|
8
|
+
ENDIF()
|
|
9
|
+
SET(CMAKE_CXX_FLAGS_RELEASE
|
|
10
|
+
"${CMAKE_CXX_FLAGS_RELEASE} \
|
|
11
|
+
-ftree-vectorize \
|
|
12
|
+
-mriscv-vector-bits=${VLEN} \
|
|
13
|
+
"
|
|
14
|
+
)
|
|
15
|
+
SET(CMAKE_C_FLAGS_RELEASE
|
|
16
|
+
"${CMAKE_C_FLAGS_RELEASE} \
|
|
17
|
+
-ftree-vectorize \
|
|
18
|
+
-mriscv-vector-bits=${VLEN} \
|
|
19
|
+
"
|
|
20
|
+
)
|
|
21
|
+
IF(DEFINED RISCV_AUTO_VECTORIZE_LOOP)
|
|
22
|
+
IF(NOT RISCV_AUTO_VECTORIZE_LOOP)
|
|
23
|
+
SET(CMAKE_CXX_FLAGS_RELEASE
|
|
24
|
+
"${CMAKE_CXX_FLAGS_RELEASE} \
|
|
25
|
+
-fno-tree-loop-vectorize \
|
|
26
|
+
"
|
|
27
|
+
)
|
|
28
|
+
SET(CMAKE_C_FLAGS_RELEASE
|
|
29
|
+
"${CMAKE_C_FLAGS_RELEASE} \
|
|
30
|
+
-fno-tree-loop-vectorize \
|
|
31
|
+
"
|
|
32
|
+
)
|
|
33
|
+
ENDIF()
|
|
34
|
+
ENDIF()
|
|
35
|
+
IF(DEFINED RISCV_AUTO_VECTORIZE_SLP)
|
|
36
|
+
IF(NOT RISCV_AUTO_VECTORIZE_SLP)
|
|
37
|
+
SET(CMAKE_CXX_FLAGS_RELEASE
|
|
38
|
+
"${CMAKE_CXX_FLAGS_RELEASE} \
|
|
39
|
+
-fno-tree-slp-vectorize \
|
|
40
|
+
"
|
|
41
|
+
)
|
|
42
|
+
SET(CMAKE_C_FLAGS_RELEASE
|
|
43
|
+
"${CMAKE_C_FLAGS_RELEASE} \
|
|
44
|
+
-fno-tree-slp-vectorize \
|
|
45
|
+
"
|
|
46
|
+
)
|
|
47
|
+
ENDIF()
|
|
48
|
+
ENDIF()
|
|
49
|
+
# Also interesting:
|
|
50
|
+
# -mriscv-vector-lmul=<lmul> Set the vf using lmul in auto-vectorization
|
|
51
|
+
# -fsimd-cost-model=[unlimited|dynamic|cheap|very-cheap] Specifies the vectorization cost model for code marked with a simd directive
|
|
52
|
+
IF(RISCV_AUTO_VECTORIZE_VERBOSE)
|
|
53
|
+
SET(CMAKE_CXX_FLAGS_RELEASE
|
|
54
|
+
"${CMAKE_CXX_FLAGS_RELEASE} \
|
|
55
|
+
-fopt-info-vec \
|
|
56
|
+
-fopt-info-vec-missed \
|
|
57
|
+
"
|
|
58
|
+
)
|
|
59
|
+
SET(CMAKE_C_FLAGS_RELEASE
|
|
60
|
+
"${CMAKE_C_FLAGS_RELEASE} \
|
|
61
|
+
-fopt-info-vec \
|
|
62
|
+
-fopt-info-vec-missed \
|
|
63
|
+
"
|
|
64
|
+
)
|
|
65
|
+
ENDIF()
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
IF(NOT RISCV_VEXT)
|
|
2
|
+
MESSAGE(FATAL_ERROR "RISCV_AUTO_VECTORIZE requires RISCV_VEXT")
|
|
3
|
+
ENDIF()
|
|
4
|
+
IF(RISCV_RVV_VLEN)
|
|
5
|
+
SET(VLEN ${RISCV_RVV_VLEN})
|
|
6
|
+
ELSE()
|
|
7
|
+
SET(VLEN "?")
|
|
8
|
+
ENDIF()
|
|
9
|
+
SET(CMAKE_CXX_FLAGS_RELEASE
|
|
10
|
+
"${CMAKE_CXX_FLAGS_RELEASE} \
|
|
11
|
+
-mllvm \
|
|
12
|
+
--riscv-v-vector-bits-min=${VLEN} \
|
|
13
|
+
"
|
|
14
|
+
)
|
|
15
|
+
SET(CMAKE_C_FLAGS_RELEASE
|
|
16
|
+
"${CMAKE_C_FLAGS_RELEASE} \
|
|
17
|
+
-mllvm \
|
|
18
|
+
--riscv-v-vector-bits-min=${VLEN} \
|
|
19
|
+
"
|
|
20
|
+
)
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
IF(NOT CMSISNN_DIR)
|
|
2
|
+
MESSAGE(FATAL_ERROR "Missing value: CMSISNN_DIR")
|
|
3
|
+
ENDIF()
|
|
4
|
+
|
|
5
|
+
IF(NOT ARM_MVEI)
|
|
6
|
+
SET(USE_MVEI OFF)
|
|
7
|
+
ELSE()
|
|
8
|
+
SET(USE_MVEI ON)
|
|
9
|
+
ENDIF()
|
|
10
|
+
|
|
11
|
+
IF(NOT ARM_DSP)
|
|
12
|
+
SET(USE_DSP OFF)
|
|
13
|
+
ELSE()
|
|
14
|
+
SET(USE_DSP ON)
|
|
15
|
+
ENDIF()
|
|
16
|
+
|
|
17
|
+
SET(BUILD_FLAGS "")
|
|
18
|
+
# IF(USE_MVEI) SET(BUILD_FLAGS "${BUILD_FLAGS} -D__ARM_FEATURE_MVE=1 -DARM_MATH_MVEI=1") ENDIF() IF(USE_DSP)
|
|
19
|
+
# SET(BUILD_FLAGS "${BUILD_FLAGS} -D__ARM_FEATURE_DSP=1 -DARM_MATH_DSP=1") ENDIF()
|
|
20
|
+
|
|
21
|
+
SET(CMSISNN_INCLUDE_DIRS ${CMSISNN_DIR} ${CMSISNN_DIR}/CMSIS/Core/Include ${CMSISNN_DIR}/CMSIS/NN/Include
|
|
22
|
+
${CMSISNN_DIR}/CMSIS/DSP/Include
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
# TODO: propagarting all toolchain specific vars does not scale well
|
|
26
|
+
|
|
27
|
+
MESSAGE(STATUS "ARM_CPU=${ARM_CPU}")
|
|
28
|
+
INCLUDE(ExternalProject)
|
|
29
|
+
EXTERNALPROJECT_ADD(
|
|
30
|
+
cmsisnn
|
|
31
|
+
PREFIX cmsisnn
|
|
32
|
+
SOURCE_DIR ${CMSISNN_DIR}/CMSIS/NN/
|
|
33
|
+
CMAKE_ARGS -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
|
|
34
|
+
-DCMAKE_C_FLAGS:STRING=${BUILD_FLAGS}
|
|
35
|
+
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE}
|
|
36
|
+
-DTC_PREFIX=${TC_PREFIX}
|
|
37
|
+
-DEXE_EXT=${EXE_EXT}
|
|
38
|
+
-DARM_CPU=${ARM_CPU}
|
|
39
|
+
-DARM_FLOAT_ABI=${ARM_FLOAT_ABI}
|
|
40
|
+
-DARM_FPU=${ARM_FPU}
|
|
41
|
+
-DRISCV_ARCH=${RISCV_ARCH}
|
|
42
|
+
-DRISCV_ABI=${RISCV_ABI}
|
|
43
|
+
BUILD_COMMAND "${CMAKE_COMMAND}" --build .
|
|
44
|
+
INSTALL_COMMAND ""
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
EXTERNALPROJECT_GET_PROPERTY(cmsisnn BINARY_DIR)
|
|
48
|
+
SET(CMSISNN_LIB ${BINARY_DIR}/Source/libcmsis-nn.a)
|
|
49
|
+
|
|
50
|
+
# TFLite integration
|
|
51
|
+
IF(TFLM_OPTIMIZED_KERNEL_LIB)
|
|
52
|
+
LIST(APPEND TFLM_OPTIMIZED_KERNEL_LIB ${CMSISNN_LIB})
|
|
53
|
+
ELSE()
|
|
54
|
+
SET(TFLM_OPTIMIZED_KERNEL_LIB ${CMSISNN_LIB})
|
|
55
|
+
ENDIF()
|
|
56
|
+
|
|
57
|
+
IF(TFLM_OPTIMIZED_KERNEL_INCLUDE_DIR)
|
|
58
|
+
LIST(APPEND TFLM_OPTIMIZED_KERNEL_INCLUDE_DIR ${CMSISNN_INCLUDE_DIRS})
|
|
59
|
+
ELSE()
|
|
60
|
+
SET(TFLM_OPTIMIZED_KERNEL_INCLUDE_DIR ${CMSISNN_INCLUDE_DIRS})
|
|
61
|
+
ENDIF()
|
|
62
|
+
|
|
63
|
+
IF(TFLM_OPTIMIZED_KERNEL_DEPS)
|
|
64
|
+
LIST(APPEND TFLM_OPTIMIZED_KERNEL_DEPS cmsisnn)
|
|
65
|
+
ELSE()
|
|
66
|
+
SET(TFLM_OPTIMIZED_KERNEL_DEPS cmsisnn)
|
|
67
|
+
ENDIF()
|
|
68
|
+
|
|
69
|
+
# TVM integration
|
|
70
|
+
IF(TVM_EXTRA_LIBS)
|
|
71
|
+
LIST(APPEND TVM_EXTRA_LIBS ${CMSISNN_LIB})
|
|
72
|
+
ELSE()
|
|
73
|
+
SET(TVM_EXTRA_LIBS ${CMSISNN_LIB})
|
|
74
|
+
ENDIF()
|
|
75
|
+
|
|
76
|
+
IF(TVM_EXTRA_INCS)
|
|
77
|
+
LIST(APPEND TVM_EXTRA_INCS ${CMSISNN_INCLUDE_DIRS})
|
|
78
|
+
ELSE()
|
|
79
|
+
SET(TVM_EXTRA_INCS ${CMSISNN_INCLUDE_DIRS})
|
|
80
|
+
ENDIF()
|
|
81
|
+
|
|
82
|
+
IF(TVM_EXTRA_DEPS)
|
|
83
|
+
LIST(APPEND TVM_EXTRA_DEPS cmsisnn)
|
|
84
|
+
ELSE()
|
|
85
|
+
SET(TVM_EXTRA_DEPS cmsisnn)
|
|
86
|
+
ENDIF()
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
IF(NOT MURISCVNN_DIR)
|
|
2
|
+
MESSAGE(FATAL_ERROR "Missing value: MURISCVNN_DIR")
|
|
3
|
+
ENDIF()
|
|
4
|
+
|
|
5
|
+
IF(NOT RISCV_VEXT)
|
|
6
|
+
SET(USE_VEXT OFF)
|
|
7
|
+
ELSE()
|
|
8
|
+
SET(USE_VEXT ON)
|
|
9
|
+
ENDIF()
|
|
10
|
+
|
|
11
|
+
IF(NOT RISCV_PEXT)
|
|
12
|
+
SET(USE_PEXT OFF)
|
|
13
|
+
ELSE()
|
|
14
|
+
SET(USE_PEXT ON)
|
|
15
|
+
ENDIF()
|
|
16
|
+
|
|
17
|
+
IF(NOT MURISCVNN_TOOLCHAIN)
|
|
18
|
+
SET(MURISCVVN_TOOLCHAIN GCC)
|
|
19
|
+
# SET(MURISCVVN_TOOLCHAIN NONE)
|
|
20
|
+
ENDIF()
|
|
21
|
+
|
|
22
|
+
SET(MURISCVNN_INCLUDE_DIRS ${MURISCVNN_DIR}/Include ${MURISCVNN_DIR}/Include/CMSIS/NN/Include)
|
|
23
|
+
|
|
24
|
+
# TODO: propagarting all toolchain specific vars does not scale well
|
|
25
|
+
|
|
26
|
+
INCLUDE(ExternalProject)
|
|
27
|
+
EXTERNALPROJECT_ADD(
|
|
28
|
+
muriscvnn
|
|
29
|
+
PREFIX muriscvnn
|
|
30
|
+
SOURCE_DIR ${MURISCVNN_DIR}
|
|
31
|
+
CMAKE_ARGS -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
|
|
32
|
+
-DUSE_VEXT=${USE_VEXT}
|
|
33
|
+
-DUSE_PEXT=${USE_PEXT}
|
|
34
|
+
-DTOOLCHAIN=${MURISCVNN_TOOLCHAIN}
|
|
35
|
+
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE}
|
|
36
|
+
-DENABLE_TESTS=OFF
|
|
37
|
+
-DTC_PREFIX=${TC_PREFIX}
|
|
38
|
+
-DEXE_EXT=${EXE_EXT}
|
|
39
|
+
-DRISCV_ARCH=${RISCV_ARCH}
|
|
40
|
+
-DRISCV_ABI=${RISCV_ABI}
|
|
41
|
+
-DARM_CPU=${ARM_CPU}
|
|
42
|
+
-DARM_FLOAT_ABI=${ARM_FLOAT_ABI}
|
|
43
|
+
-DARM_FPU=${ARM_FPU}
|
|
44
|
+
BUILD_COMMAND "${CMAKE_COMMAND}" --build .
|
|
45
|
+
INSTALL_COMMAND ""
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
EXTERNALPROJECT_GET_PROPERTY(muriscvnn BINARY_DIR)
|
|
49
|
+
SET(MURISCVNN_LIB ${BINARY_DIR}/Source/libmuriscv_nn.a)
|
|
50
|
+
|
|
51
|
+
# TFLite integration
|
|
52
|
+
IF(TFLM_OPTIMIZED_KERNEL_LIB)
|
|
53
|
+
LIST(APPEND TFLM_OPTIMIZED_KERNEL_LIB ${MURISCVNN_LIB})
|
|
54
|
+
ELSE()
|
|
55
|
+
SET(TFLM_OPTIMIZED_KERNEL_LIB ${MURISCVNN_LIB})
|
|
56
|
+
ENDIF()
|
|
57
|
+
|
|
58
|
+
IF(TFLM_OPTIMIZED_KERNEL_INCLUDE_DIR)
|
|
59
|
+
LIST(APPEND TFLM_OPTIMIZED_KERNEL_INCLUDE_DIR ${MURISCVNN_INCLUDE_DIRS})
|
|
60
|
+
ELSE()
|
|
61
|
+
SET(TFLM_OPTIMIZED_KERNEL_INCLUDE_DIR ${MURISCVNN_INCLUDE_DIRS})
|
|
62
|
+
ENDIF()
|
|
63
|
+
|
|
64
|
+
IF(TFLM_OPTIMIZED_KERNEL_DEPS)
|
|
65
|
+
LIST(APPEND TFLM_OPTIMIZED_KERNEL_DEPS muriscvnn)
|
|
66
|
+
ELSE()
|
|
67
|
+
SET(TFLM_OPTIMIZED_KERNEL_DEPS muriscvnn)
|
|
68
|
+
ENDIF()
|
|
69
|
+
|
|
70
|
+
# TVM integration
|
|
71
|
+
IF(TVM_EXTRA_LIBS)
|
|
72
|
+
LIST(APPEND TVM_EXTRA_LIBS ${MURISCVNN_LIB})
|
|
73
|
+
ELSE()
|
|
74
|
+
SET(TVM_EXTRA_LIBS ${MURISCVNN_LIB})
|
|
75
|
+
ENDIF()
|
|
76
|
+
|
|
77
|
+
IF(TVM_EXTRA_INCS)
|
|
78
|
+
LIST(APPEND TVM_EXTRA_INCS ${MURISCVNN_INCLUDE_DIRS})
|
|
79
|
+
ELSE()
|
|
80
|
+
SET(TVM_EXTRA_INCS ${MURISCVNN_INCLUDE_DIRS})
|
|
81
|
+
ENDIF()
|
|
82
|
+
|
|
83
|
+
IF(TVM_EXTRA_DEPS)
|
|
84
|
+
LIST(APPEND TVM_EXTRA_DEPS muriscvnn)
|
|
85
|
+
ELSE()
|
|
86
|
+
SET(TVM_EXTRA_DEPS muriscvnn)
|
|
87
|
+
ENDIF()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
SET(TF_OUT_DIR ${CONFIG_MLONMCU_CODEGEN_DIR}/)
|
|
2
|
+
SET(GEN_SRC ${TF_OUT_DIR}/model.cc)
|
|
3
|
+
GET_FILENAME_COMPONENT(GEN_SRC ${GEN_SRC} REALPATH)
|
|
4
|
+
GET_FILENAME_COMPONENT(EXTRA_INC ${GEN_SRC} DIRECTORY)
|
|
5
|
+
SET(EXTRA_SRC ml_interface_tflm.cc ${GEN_SRC})
|
|
6
|
+
SET(EXTRA_LIBS tflm)
|
|
7
|
+
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DTFLMC_DEBUG_ALLOCATIONS")
|
|
8
|
+
LIST(APPEND EXTRA_LIBS ${CUSTOM_OPS_LIBS})
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
SET(TVM_OUT_DIR ${CONFIG_MLONMCU_CODEGEN_DIR}/codegen/host/)
|
|
2
|
+
SET(EXTRA_SRC ml_interface_tvm.c)
|
|
3
|
+
|
|
4
|
+
FILE(GLOB TVM_SRCS ${TVM_OUT_DIR}/src/*_lib*.c ${TVM_OUT_DIR}/src/*_lib*.cc)
|
|
5
|
+
|
|
6
|
+
IF(NOT TVM_SRCS)
|
|
7
|
+
MESSAGE(STATUS "NO SOURCES")
|
|
8
|
+
FILE(GLOB TVM_OBJS ${TVM_OUT_DIR}/lib/*_lib*.o)
|
|
9
|
+
MESSAGE(STATUS "TVM_OBJS=${TVM_OBJS}")
|
|
10
|
+
ADD_LIBRARY(tvm_extension OBJECT IMPORTED)
|
|
11
|
+
|
|
12
|
+
SET_PROPERTY(TARGET tvm_extension PROPERTY
|
|
13
|
+
IMPORTED_OBJECTS ${TVM_OBJS}
|
|
14
|
+
)
|
|
15
|
+
ELSE()
|
|
16
|
+
# Need this in extra target to avoid circular dependency .
|
|
17
|
+
ADD_LIBRARY(tvm_extension STATIC ${TVM_SRCS})
|
|
18
|
+
TARGET_INCLUDE_DIRECTORIES(tvm_extension PUBLIC ${TVM_HEADERS} ${TVM_OUT_DIR}/include ${CONFIG_MLONMCU_CODEGEN_DIR})
|
|
19
|
+
TARGET_LINK_LIBRARIES(tvm_extension PUBLIC m)
|
|
20
|
+
TARGET_LINK_LIBRARIES(tvm_extension PUBLIC ${TVM_LIB})
|
|
21
|
+
ENDIF()
|
|
22
|
+
|
|
23
|
+
SET(EXTRA_SRC ${EXTRA_SRC} ${CONFIG_MLONMCU_CODEGEN_DIR}/${TVM_WRAPPER_FILENAME})
|
|
24
|
+
TARGET_LINK_LIBRARIES(${TVM_LIB} PUBLIC tvm_extension)
|
|
25
|
+
SET(EXTRA_INC ${TVM_OUT_DIR}/include ${CONFIG_MLONMCU_CODEGEN_DIR})
|
|
26
|
+
|
|
27
|
+
SET(EXTRA_LIBS tvm_extension ${TVM_LIB})
|
|
28
|
+
|
|
29
|
+
FOREACH(ENTRY ${CONFIG_TVM_EXTRA_LIBS})
|
|
30
|
+
TARGET_LINK_LIBRARIES(tvm_extension PUBLIC ${ENTRY})
|
|
31
|
+
ENDFOREACH()
|
|
32
|
+
FOREACH(ENTRY ${CONFIG_TVM_EXTRA_INCS})
|
|
33
|
+
TARGET_INCLUDE_DIRECTORIES(tvm_extension PUBLIC ${ENTRY})
|
|
34
|
+
ENDFOREACH()
|
|
35
|
+
FOREACH(ENTRY ${CONFIG_TVM_EXTRA_DEPS})
|
|
36
|
+
ADD_DEPENDENCIES(tvm_extension ${ENTRY})
|
|
37
|
+
ENDFOREACH()
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
PROJECT(target_sw_lib)
|
|
2
|
+
|
|
3
|
+
ADD_SUBDIRECTORY(support)
|
|
4
|
+
ADD_SUBDIRECTORY(ml_interface)
|
|
5
|
+
|
|
6
|
+
SET(TARGET_LIB_SOURCE targets/${TARGET_SYSTEM}.c)
|
|
7
|
+
IF(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_LIB_SOURCE})
|
|
8
|
+
SET(TARGET_LIB_SOURCE targets/default.c)
|
|
9
|
+
ENDIF()
|
|
10
|
+
|
|
11
|
+
ADD_LIBRARY(${PROJECT_NAME} STATIC drivers/fake_input.c ${TARGET_LIB_SOURCE})
|
|
12
|
+
TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} PUBLIC lib/drivers lib/targets)
|
|
13
|
+
TARGET_LINK_LIBRARIES(${PROJECT_NAME} PUBLIC support ml_interface)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
PROJECT(ml_interface)
|
|
2
|
+
|
|
3
|
+
INCLUDE(extras)
|
|
4
|
+
|
|
5
|
+
INCLUDE(frameworks/${CONFIG_MLONMCU_FRAMEWORK}_mlif)
|
|
6
|
+
|
|
7
|
+
IF(CONFIG_MODEL_DIR)
|
|
8
|
+
GET_FILENAME_COMPONENT(MODEL_SUPPORT_DIR ${CONFIG_MODEL_DIR}/support REALPATH)
|
|
9
|
+
GET_FILENAME_COMPONENT(MODEL_NAME ${CONFIG_MODEL_DIR} NAME)
|
|
10
|
+
ENDIF()
|
|
11
|
+
|
|
12
|
+
IF(MODEL_SUPPORT_DIR AND EXISTS ${MODEL_SUPPORT_DIR})
|
|
13
|
+
ADD_SUBDIRECTORY(${MODEL_SUPPORT_DIR} model_support_bin_${MODEL_NAME})
|
|
14
|
+
ELSE()
|
|
15
|
+
ADD_SUBDIRECTORY(default_model_support)
|
|
16
|
+
ENDIF()
|
|
17
|
+
|
|
18
|
+
IF(NOT CONFIG_DATA_SRC)
|
|
19
|
+
SET(CONFIG_DATA_SRC "default_data.c")
|
|
20
|
+
ENDIF()
|
|
21
|
+
|
|
22
|
+
ADD_LIBRARY(${PROJECT_NAME}_base STATIC ${CONFIG_DATA_SRC})
|
|
23
|
+
TARGET_LINK_LIBRARIES(${PROJECT_NAME}_base PUBLIC support ${EXTRA_LIBS})
|
|
24
|
+
TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME}_base PUBLIC . ${EXTRA_INC})
|
|
25
|
+
|
|
26
|
+
ADD_LIBRARY(${PROJECT_NAME} STATIC ml_interface.c ${EXTRA_SRC})
|
|
27
|
+
TARGET_LINK_LIBRARIES(${PROJECT_NAME} PUBLIC ${PROJECT_NAME}_base model_support)
|
|
28
|
+
TARGET_LINK_LIBRARIES(${PROJECT_NAME} PUBLIC ${PROJECT_NAME}_base model_support zephyr)
|
|
29
|
+
IF(CONFIG_NUM_RUNS)
|
|
30
|
+
TARGET_COMPILE_DEFINITIONS(${PROJECT_NAME} PUBLIC NUM_RUNS=${CONFIG_NUM_RUNS})
|
|
31
|
+
ENDIF()
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#include "ml_interface.h"
|
|
2
|
+
#include <stddef.h>
|
|
3
|
+
const int num_data_buffers_in = 0;
|
|
4
|
+
const int num_data_buffers_out = 0;
|
|
5
|
+
const unsigned char *const data_buffers_in[] = {};
|
|
6
|
+
const unsigned char *const data_buffers_out[] = {};
|
|
7
|
+
const size_t data_size_in[] = {};
|
|
8
|
+
const size_t data_size_out[] = {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#include <stdlib.h>
|
|
2
|
+
#include <memory.h>
|
|
3
|
+
|
|
4
|
+
#include "printing.h"
|
|
5
|
+
#include "exit.h"
|
|
6
|
+
|
|
7
|
+
void mlif_process_input(const void *in_data, size_t in_size, void *model_input_ptr, size_t model_input_sz) {
|
|
8
|
+
if (in_size != 0) {
|
|
9
|
+
if (in_size != model_input_sz) {
|
|
10
|
+
DBGPRINTF("MLIF: Given input size (%lu) does not match model input buffer size (%lu)!\n", in_size,
|
|
11
|
+
model_input_sz);
|
|
12
|
+
exit(EXIT_MLIF_INVALID_SIZE);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
memcpy(model_input_ptr, in_data, in_size);
|
|
17
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#include <stdlib.h>
|
|
2
|
+
#include <memory.h>
|
|
3
|
+
|
|
4
|
+
#include "printing.h"
|
|
5
|
+
#include "exit.h"
|
|
6
|
+
|
|
7
|
+
void mlif_process_output(void *model_output_ptr, size_t model_output_sz, const void *expected_out_data,
|
|
8
|
+
size_t expected_out_size) {
|
|
9
|
+
#ifdef _DEBUG
|
|
10
|
+
if (model_output_sz >= 4) {
|
|
11
|
+
DBGPRINTF("MLIF: First float of output: %f\n", *(float *)model_output_ptr);
|
|
12
|
+
}
|
|
13
|
+
DBGPRINTF("MLIF: Model output data: ");
|
|
14
|
+
for (size_t i = 0; i < model_output_sz; i++) {
|
|
15
|
+
DBGPRINTF("\\x%02X", ((unsigned char *)model_output_ptr)[i]);
|
|
16
|
+
fflush(0);
|
|
17
|
+
}
|
|
18
|
+
DBGPRINTF("\n");
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
if (model_output_sz == expected_out_size && memcmp(model_output_ptr, expected_out_data, model_output_sz) == 0) {
|
|
22
|
+
DBGPRINTF("MLIF: Output data matches expected data\n");
|
|
23
|
+
} else {
|
|
24
|
+
DBGPRINTF("MLIF: Wrong output data!\n");
|
|
25
|
+
exit(EXIT_MLIF_MISSMATCH);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#include "ml_interface.h"
|
|
2
|
+
#include "printing.h"
|
|
3
|
+
|
|
4
|
+
#include <string.h>
|
|
5
|
+
#include <stdlib.h>
|
|
6
|
+
|
|
7
|
+
__attribute__((weak)) bool mlif_request_input(void *model_input_ptr, size_t model_input_sz) {
|
|
8
|
+
static int num_done = 0;
|
|
9
|
+
if (num_done == num_data_buffers_in) {
|
|
10
|
+
static bool run_once = true;
|
|
11
|
+
if (num_data_buffers_in == 0 && run_once) {
|
|
12
|
+
// Minimal run. Just run the model without data.
|
|
13
|
+
run_once = false;
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
mlif_process_input(data_buffers_in[num_done], data_size_in[num_done], model_input_ptr, model_input_sz);
|
|
20
|
+
num_done++;
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
__attribute__((weak)) void mlif_handle_result(void *model_output_ptr, size_t model_output_sz) {
|
|
25
|
+
static int num_done = 0;
|
|
26
|
+
|
|
27
|
+
if (num_data_buffers_out == 0) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (num_done < num_data_buffers_out) {
|
|
32
|
+
mlif_process_output(model_output_ptr, model_output_sz, data_buffers_out[num_done], data_size_out[num_done]);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
num_done++;
|
|
36
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#ifndef TARGETLIB_ML_INTERFACE_H
|
|
2
|
+
#define TARGETLIB_ML_INTERFACE_H
|
|
3
|
+
|
|
4
|
+
#include <stddef.h>
|
|
5
|
+
#include <stdbool.h>
|
|
6
|
+
|
|
7
|
+
#ifndef NUM_RUNS
|
|
8
|
+
#define NUM_RUNS 1
|
|
9
|
+
#endif /* NUM_RUNS */
|
|
10
|
+
|
|
11
|
+
#ifdef __cplusplus
|
|
12
|
+
extern "C" {
|
|
13
|
+
#endif
|
|
14
|
+
|
|
15
|
+
// This runs the ML model using the callbacks above.
|
|
16
|
+
// The default implementation will run with garbage data.
|
|
17
|
+
void mlif_run();
|
|
18
|
+
|
|
19
|
+
// These can be overridden by use code.
|
|
20
|
+
|
|
21
|
+
// Provides input data for the model. The default implementation retrieves input from
|
|
22
|
+
// the global variables below and fills the model input with mlif_process_input.
|
|
23
|
+
bool mlif_request_input(void *model_input_ptr, size_t model_input_sz);
|
|
24
|
+
// Is called when the output data is available. The default implementation
|
|
25
|
+
void mlif_handle_result(void *model_output_ptr, size_t model_output_sz);
|
|
26
|
+
|
|
27
|
+
// Callback for any preprocessing on the input data. Responsible for copying the data.
|
|
28
|
+
void mlif_process_input(const void *in_data, size_t in_size, void *model_input_ptr, size_t model_input_sz);
|
|
29
|
+
// Callback for any postprocessing on the output data. The default implementation prints
|
|
30
|
+
// the output and verifies consistency with the expected output.
|
|
31
|
+
void mlif_process_output(void *model_output_ptr, size_t model_output_sz, const void *expected_out_data,
|
|
32
|
+
size_t expected_out_size);
|
|
33
|
+
|
|
34
|
+
extern const int num_data_buffers_in;
|
|
35
|
+
extern const int num_data_buffers_out;
|
|
36
|
+
extern const unsigned char *const data_buffers_in[];
|
|
37
|
+
extern const unsigned char *const data_buffers_out[];
|
|
38
|
+
extern const size_t data_size_in[];
|
|
39
|
+
extern const size_t data_size_out[];
|
|
40
|
+
|
|
41
|
+
extern const int num;
|
|
42
|
+
|
|
43
|
+
#ifdef __cplusplus
|
|
44
|
+
}
|
|
45
|
+
#endif
|
|
46
|
+
|
|
47
|
+
#endif
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#include "ml_interface.h"
|
|
2
|
+
|
|
3
|
+
#include "model.cc.h"
|
|
4
|
+
|
|
5
|
+
void mlif_run() {
|
|
6
|
+
model_init();
|
|
7
|
+
|
|
8
|
+
size_t input_num = 0;
|
|
9
|
+
size_t remaining = NUM_RUNS;
|
|
10
|
+
while (mlif_request_input(model_input_ptr(input_num), model_input_size(input_num)) || remaining) {
|
|
11
|
+
if (input_num == model_inputs() - 1) {
|
|
12
|
+
model_invoke();
|
|
13
|
+
for (size_t i = 0; i < model_outputs(); i++) {
|
|
14
|
+
mlif_handle_result(model_output_ptr(i), model_output_size(i));
|
|
15
|
+
}
|
|
16
|
+
input_num = 0;
|
|
17
|
+
remaining = remaining > 0 ? remaining - 1 : 0;
|
|
18
|
+
} else {
|
|
19
|
+
input_num++;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#include "ml_interface.h"
|
|
2
|
+
#include "tvm_wrapper.h"
|
|
3
|
+
|
|
4
|
+
void mlif_run() {
|
|
5
|
+
TVMWrap_Init();
|
|
6
|
+
|
|
7
|
+
size_t input_num = 0;
|
|
8
|
+
size_t remaining = NUM_RUNS;
|
|
9
|
+
// inout data will only be applied in the first run!
|
|
10
|
+
while (mlif_request_input(TVMWrap_GetInputPtr(input_num), TVMWrap_GetInputSize(input_num)) || remaining) {
|
|
11
|
+
if (input_num == TVMWrap_GetNumInputs() - 1) {
|
|
12
|
+
TVMWrap_Run();
|
|
13
|
+
for (size_t i = 0; i < TVMWrap_GetNumOutputs(); i++) {
|
|
14
|
+
mlif_handle_result(TVMWrap_GetOutputPtr(i), TVMWrap_GetOutputSize(i));
|
|
15
|
+
}
|
|
16
|
+
input_num = 0;
|
|
17
|
+
remaining = remaining > 0 ? remaining - 1 : 0;
|
|
18
|
+
} else {
|
|
19
|
+
input_num++;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#ifndef SUPPORT_QUANTIZE_H
|
|
2
|
+
#define SUPPORT_QUANTIZE_H
|
|
3
|
+
|
|
4
|
+
#include <stdint.h>
|
|
5
|
+
#include <limits.h>
|
|
6
|
+
#include <math.h>
|
|
7
|
+
|
|
8
|
+
inline float DequantizeInt8ToFloat(int8_t value, float scale, int zero_point) {
|
|
9
|
+
return static_cast<float>(value - zero_point) * scale;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
inline int8_t QuantizeFloatToInt8(float value, float scale, int zero_point) {
|
|
13
|
+
int32_t result = round(value / scale) + zero_point;
|
|
14
|
+
if (result < INT8_MIN) {
|
|
15
|
+
result = INT8_MIN;
|
|
16
|
+
}
|
|
17
|
+
if (result > INT8_MAX) {
|
|
18
|
+
result = INT8_MAX;
|
|
19
|
+
}
|
|
20
|
+
return static_cast<int8_t>(result);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
#endif
|