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
mlonmcu/cli/load.py
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2022 TUM Department of Electrical and Computer Engineering.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of MLonMCU.
|
|
5
|
+
# See https://github.com/tum-ei-eda/mlonmcu.git for further info.
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
#
|
|
19
|
+
"""Command line subcommand for the load stage."""
|
|
20
|
+
|
|
21
|
+
from mlonmcu.cli.common import (
|
|
22
|
+
add_common_options,
|
|
23
|
+
add_context_options,
|
|
24
|
+
add_model_options,
|
|
25
|
+
add_flow_options,
|
|
26
|
+
kickoff_runs,
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
from .helper.parse import extract_config_and_feature_names, extract_frontend_names, extract_postprocess_names
|
|
30
|
+
from mlonmcu.context.context import MlonMcuContext
|
|
31
|
+
from mlonmcu.models import SUPPORTED_FRONTENDS
|
|
32
|
+
from mlonmcu.models.lookup import apply_modelgroups
|
|
33
|
+
from mlonmcu.session.run import RunStage
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def add_load_options(parser):
|
|
37
|
+
add_common_options(parser)
|
|
38
|
+
add_context_options(parser)
|
|
39
|
+
add_flow_options(parser)
|
|
40
|
+
add_model_options(parser)
|
|
41
|
+
load_parser = parser.add_argument_group("load options")
|
|
42
|
+
load_parser.add_argument(
|
|
43
|
+
"--frontend",
|
|
44
|
+
type=str,
|
|
45
|
+
metavar="FRONTEND",
|
|
46
|
+
choices=SUPPORTED_FRONTENDS.keys(),
|
|
47
|
+
default=None,
|
|
48
|
+
nargs=1,
|
|
49
|
+
help="Explicitly choose the frontends to use (choices: %(choices)s)",
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def get_parser(subparsers):
|
|
54
|
+
""" "Define and return a subparser for the load subcommand."""
|
|
55
|
+
parser = subparsers.add_parser("load", description="Load model using the ML on MCU flow.")
|
|
56
|
+
parser.set_defaults(flow_func=handle)
|
|
57
|
+
add_load_options(parser)
|
|
58
|
+
return parser
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _handle(args, context):
|
|
62
|
+
config = context.environment.vars
|
|
63
|
+
new_config, features, gen_config, gen_features = extract_config_and_feature_names(args, context=context)
|
|
64
|
+
config.update(new_config)
|
|
65
|
+
frontends = extract_frontend_names(args, context=context)
|
|
66
|
+
postprocesses = extract_postprocess_names(args, context=context)
|
|
67
|
+
session = context.get_session(label=args.label, resume=args.resume, config=config)
|
|
68
|
+
models = apply_modelgroups(args.models, context=context)
|
|
69
|
+
for model in models:
|
|
70
|
+
for f in gen_features:
|
|
71
|
+
for c in gen_config:
|
|
72
|
+
all_config = {**config, **c}
|
|
73
|
+
run = session.create_run(config=all_config)
|
|
74
|
+
all_features = list(set(features + f))
|
|
75
|
+
run.add_features_by_name(all_features, context=context) # TODO do this before load.py?
|
|
76
|
+
run.add_frontends_by_name(frontends, context=context)
|
|
77
|
+
run.add_model_by_name(model, context=context)
|
|
78
|
+
run.add_postprocesses_by_name(postprocesses, context=context) # TODO do this before load.py?
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def handle(args, ctx=None):
|
|
82
|
+
if ctx:
|
|
83
|
+
_handle(args, ctx)
|
|
84
|
+
else:
|
|
85
|
+
with MlonMcuContext(path=args.home, deps_lock="read") as context:
|
|
86
|
+
_handle(args, context)
|
|
87
|
+
kickoff_runs(args, RunStage.LOAD, context)
|
mlonmcu/cli/main.py
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2022 TUM Department of Electrical and Computer Engineering.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of MLonMCU.
|
|
5
|
+
# See https://github.com/tum-ei-eda/mlonmcu.git for further info.
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
#
|
|
19
|
+
"""Console script for mlonmcu."""
|
|
20
|
+
|
|
21
|
+
import os
|
|
22
|
+
import argparse
|
|
23
|
+
import sys
|
|
24
|
+
import subprocess
|
|
25
|
+
import platform
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
from mlonmcu.logging import get_logger
|
|
29
|
+
import mlonmcu.cli.init as init
|
|
30
|
+
import mlonmcu.cli.setup as setup
|
|
31
|
+
import mlonmcu.cli.flow as flow
|
|
32
|
+
import mlonmcu.cli.cleanup as cleanup
|
|
33
|
+
import mlonmcu.cli.export as export
|
|
34
|
+
import mlonmcu.cli.env as env
|
|
35
|
+
import mlonmcu.cli.models as models
|
|
36
|
+
from .common import handle_logging_flags, add_common_options
|
|
37
|
+
from ..version import __version__
|
|
38
|
+
|
|
39
|
+
logger = get_logger()
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def handle_docker(args):
|
|
43
|
+
if args.docker:
|
|
44
|
+
home = os.environ.get("MLONMCU_HOME")
|
|
45
|
+
assert home is not None, (
|
|
46
|
+
"To use the --docker functionality, please export the MLONMCU_HOME environment variable"
|
|
47
|
+
+ " to a directory which should be mounted by the container"
|
|
48
|
+
)
|
|
49
|
+
exec_args = sys.argv[1:]
|
|
50
|
+
exec_args.remove("--docker")
|
|
51
|
+
docker = subprocess.Popen(
|
|
52
|
+
[
|
|
53
|
+
"docker-compose",
|
|
54
|
+
"-f",
|
|
55
|
+
"docker/docker-compose.yml",
|
|
56
|
+
"run",
|
|
57
|
+
"-e",
|
|
58
|
+
f"MLONMCU_HOME={home}",
|
|
59
|
+
"--rm",
|
|
60
|
+
"mlonmcu",
|
|
61
|
+
"python3",
|
|
62
|
+
"-m",
|
|
63
|
+
"mlonmcu.cli.main",
|
|
64
|
+
*exec_args,
|
|
65
|
+
],
|
|
66
|
+
env={"MLONMCU_HOME": home},
|
|
67
|
+
)
|
|
68
|
+
stdout, stderr = docker.communicate()
|
|
69
|
+
exit_code = docker.wait()
|
|
70
|
+
if exit_code > 0:
|
|
71
|
+
logger.warning(f"Docker compose process completed with exit code: {exit_code}")
|
|
72
|
+
sys.exit(exit_code)
|
|
73
|
+
|
|
74
|
+
if platform.system() in ["Darwin", "Windows"]:
|
|
75
|
+
raise RuntimeError(
|
|
76
|
+
"Only Linux is supported at the Moment. If you have Docker installed, you may want to"
|
|
77
|
+
+ " try running this script using the `--docker` flag."
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
# def main(args):
|
|
82
|
+
def main(args=None):
|
|
83
|
+
"""Console script for mlonmcu."""
|
|
84
|
+
parser = argparse.ArgumentParser(
|
|
85
|
+
description="ML on MCU Flow",
|
|
86
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
87
|
+
)
|
|
88
|
+
# parser.add_argument('_', nargs='*')
|
|
89
|
+
parser.add_argument("-V", "--version", action="version", version="mlonmcu " + __version__)
|
|
90
|
+
add_common_options(parser)
|
|
91
|
+
subparsers = parser.add_subparsers(dest="subcommand") # this line changed
|
|
92
|
+
init.get_parser(subparsers)
|
|
93
|
+
setup.get_parser(subparsers)
|
|
94
|
+
flow.get_parser(subparsers)
|
|
95
|
+
cleanup.get_parser(subparsers)
|
|
96
|
+
export.get_parser(subparsers)
|
|
97
|
+
env.get_parser(subparsers)
|
|
98
|
+
models.get_parser(subparsers)
|
|
99
|
+
if args:
|
|
100
|
+
args = parser.parse_args(args)
|
|
101
|
+
else:
|
|
102
|
+
args = parser.parse_args()
|
|
103
|
+
handle_logging_flags(args)
|
|
104
|
+
handle_docker(args)
|
|
105
|
+
|
|
106
|
+
if hasattr(args, "func"):
|
|
107
|
+
args.func(args)
|
|
108
|
+
else:
|
|
109
|
+
print("Invalid subcommand for `mlonmcu`!")
|
|
110
|
+
parser.print_help(sys.stderr)
|
|
111
|
+
|
|
112
|
+
return 0
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
if __name__ == "__main__":
|
|
116
|
+
sys.exit(main(args=sys.argv[1:])) # pragma: no cover
|
mlonmcu/cli/models.py
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2022 TUM Department of Electrical and Computer Engineering.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of MLonMCU.
|
|
5
|
+
# See https://github.com/tum-ei-eda/mlonmcu.git for further info.
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
#
|
|
19
|
+
"""Command line subcommand for managing models."""
|
|
20
|
+
|
|
21
|
+
from mlonmcu.cli.common import add_common_options, add_context_options
|
|
22
|
+
from mlonmcu.context.context import MlonMcuContext
|
|
23
|
+
import mlonmcu.models
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def add_models_options(parser):
|
|
27
|
+
models_parser = parser.add_argument_group("models options")
|
|
28
|
+
models_parser.add_argument(
|
|
29
|
+
"--detailed",
|
|
30
|
+
default=False,
|
|
31
|
+
action="store_true",
|
|
32
|
+
help="Display more information (default: %(default)s)",
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def get_parser(subparsers):
|
|
37
|
+
""" "Define and return a subparser for the models subcommand."""
|
|
38
|
+
parser = subparsers.add_parser("models", description="Manage ML on MCU models.")
|
|
39
|
+
parser.set_defaults(func=handle)
|
|
40
|
+
add_common_options(parser)
|
|
41
|
+
add_context_options(parser)
|
|
42
|
+
add_models_options(parser)
|
|
43
|
+
return parser
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def handle(args):
|
|
47
|
+
with MlonMcuContext(path=args.home, deps_lock="read") as context:
|
|
48
|
+
mlonmcu.models.print_summary(context, detailed=args.detailed)
|
mlonmcu/cli/run.py
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2022 TUM Department of Electrical and Computer Engineering.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of MLonMCU.
|
|
5
|
+
# See https://github.com/tum-ei-eda/mlonmcu.git for further info.
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
#
|
|
19
|
+
"""Command line subcommand for the run process."""
|
|
20
|
+
|
|
21
|
+
from mlonmcu.cli.common import kickoff_runs
|
|
22
|
+
from mlonmcu.cli.compile import (
|
|
23
|
+
handle as handle_compile,
|
|
24
|
+
add_compile_options,
|
|
25
|
+
)
|
|
26
|
+
from mlonmcu.context.context import MlonMcuContext
|
|
27
|
+
from mlonmcu.session.run import RunStage
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def add_run_options(parser):
|
|
31
|
+
add_compile_options(parser)
|
|
32
|
+
_ = parser.add_argument_group("run options")
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def get_parser(subparsers):
|
|
36
|
+
""" "Define and return a subparser for the run subcommand."""
|
|
37
|
+
parser = subparsers.add_parser(
|
|
38
|
+
"run",
|
|
39
|
+
description="Run model using ML on MCU flow. This is meant to reproduce the behavior"
|
|
40
|
+
+ " of the original `run.py` script in older versions of mlonmcu.",
|
|
41
|
+
)
|
|
42
|
+
parser.set_defaults(flow_func=handle)
|
|
43
|
+
add_run_options(parser)
|
|
44
|
+
return parser
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def check_args(context, args):
|
|
48
|
+
# print("CHECK ARGS")
|
|
49
|
+
pass
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def handle(args):
|
|
53
|
+
with MlonMcuContext(path=args.home, deps_lock="read") as context:
|
|
54
|
+
check_args(context, args)
|
|
55
|
+
handle_compile(args, context)
|
|
56
|
+
kickoff_runs(args, RunStage.RUN, context)
|
mlonmcu/cli/setup.py
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2022 TUM Department of Electrical and Computer Engineering.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of MLonMCU.
|
|
5
|
+
# See https://github.com/tum-ei-eda/mlonmcu.git for further info.
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
#
|
|
19
|
+
"""Command line subcommand for installing a mlonmcu environment."""
|
|
20
|
+
from mlonmcu.context.context import MlonMcuContext
|
|
21
|
+
from mlonmcu.setup import setup
|
|
22
|
+
|
|
23
|
+
from mlonmcu.cli.common import (
|
|
24
|
+
add_common_options,
|
|
25
|
+
add_context_options,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
# from .helper.parse import extract_config_and_init_features
|
|
29
|
+
from .helper.parse import extract_config_and_feature_names
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def add_setup_options(parser):
|
|
33
|
+
setup_parser = parser.add_argument_group("setup options")
|
|
34
|
+
setup_parser.add_argument(
|
|
35
|
+
"-f",
|
|
36
|
+
"--feature",
|
|
37
|
+
type=str,
|
|
38
|
+
metavar="FEATURE",
|
|
39
|
+
# nargs=1,
|
|
40
|
+
action="append",
|
|
41
|
+
choices=[], # FIXME: only setup features?
|
|
42
|
+
help="Enabled features for setup (choices: %(choices)s)",
|
|
43
|
+
)
|
|
44
|
+
setup_parser.add_argument(
|
|
45
|
+
"-c",
|
|
46
|
+
"--config",
|
|
47
|
+
metavar="KEY=VALUE",
|
|
48
|
+
nargs="+",
|
|
49
|
+
action="append",
|
|
50
|
+
help=(
|
|
51
|
+
"Set a number of key-value pairs "
|
|
52
|
+
"(do not put spaces before or after the = sign). "
|
|
53
|
+
"If a value contains spaces, you should define "
|
|
54
|
+
"it with double quotes: "
|
|
55
|
+
'foo="this is a sentence". Note that '
|
|
56
|
+
"values are always treated as strings."
|
|
57
|
+
),
|
|
58
|
+
)
|
|
59
|
+
setup_parser.add_argument(
|
|
60
|
+
"-p",
|
|
61
|
+
"--progress",
|
|
62
|
+
action="store_true",
|
|
63
|
+
help="Display progress bar (default: %(default)s)",
|
|
64
|
+
)
|
|
65
|
+
setup_parser.add_argument(
|
|
66
|
+
"-r",
|
|
67
|
+
"--rebuild",
|
|
68
|
+
action="store_true",
|
|
69
|
+
help="Trigger a rebuild/refresh of already installed dependencies (default: %(default)s)",
|
|
70
|
+
)
|
|
71
|
+
setup_parser.add_argument(
|
|
72
|
+
"-l",
|
|
73
|
+
"--list",
|
|
74
|
+
action="store_true",
|
|
75
|
+
help="Only print a list of the tasks to be processed and quit (default: %(default)s)",
|
|
76
|
+
)
|
|
77
|
+
setup_parser.add_argument(
|
|
78
|
+
"-g",
|
|
79
|
+
"--generate-requirements",
|
|
80
|
+
action="store_true",
|
|
81
|
+
help="Generate requirements_addition.txt listing the dependent python packages.",
|
|
82
|
+
)
|
|
83
|
+
setup_parser.add_argument(
|
|
84
|
+
"--task",
|
|
85
|
+
type=str,
|
|
86
|
+
nargs=1,
|
|
87
|
+
default=None,
|
|
88
|
+
help="Invoke a single task manually by name (default: %(default)s)",
|
|
89
|
+
)
|
|
90
|
+
setup_parser.add_argument(
|
|
91
|
+
"--visualize",
|
|
92
|
+
type=str,
|
|
93
|
+
nargs=1,
|
|
94
|
+
help="Export a .dot file for the dependency graph.",
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def get_parser(subparsers):
|
|
99
|
+
""" "Define and return a subparser for the setup subcommand."""
|
|
100
|
+
parser = subparsers.add_parser("setup", description="Setup ML on MCU dependencies.")
|
|
101
|
+
parser.set_defaults(func=handle)
|
|
102
|
+
add_common_options(parser)
|
|
103
|
+
add_context_options(parser)
|
|
104
|
+
add_setup_options(parser)
|
|
105
|
+
return parser
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def handle(args):
|
|
109
|
+
with MlonMcuContext(path=args.home, deps_lock="write") as context:
|
|
110
|
+
# config, features = extract_config_and_init_features(args)
|
|
111
|
+
config, _, _, _ = extract_config_and_feature_names(args)
|
|
112
|
+
# installer = setup.Setup(features=features, config=config, context=context)
|
|
113
|
+
installer = setup.Setup(config=config, context=context)
|
|
114
|
+
if args.visualize:
|
|
115
|
+
installer.visualize(args.visualize[0], ordered=False)
|
|
116
|
+
elif args.list:
|
|
117
|
+
order = installer.get_dependency_order()
|
|
118
|
+
print("The following tasks have been selected:")
|
|
119
|
+
print("\n".join(["- " + key for key in order]))
|
|
120
|
+
elif args.task:
|
|
121
|
+
installer.invoke_single_task(
|
|
122
|
+
args.task[0],
|
|
123
|
+
progress=args.progress,
|
|
124
|
+
rebuild=args.rebuild,
|
|
125
|
+
)
|
|
126
|
+
elif args.generate_requirements:
|
|
127
|
+
installer.generate_requirements()
|
|
128
|
+
print(
|
|
129
|
+
"Next you should run `python -m pip install -r $MLONMCU_HOME/requirements_addition.txt` inside your"
|
|
130
|
+
" virtual environment."
|
|
131
|
+
)
|
|
132
|
+
else:
|
|
133
|
+
installer.install_dependencies(
|
|
134
|
+
progress=args.progress,
|
|
135
|
+
rebuild=args.rebuild,
|
|
136
|
+
)
|
mlonmcu/cli/tune.py
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2022 TUM Department of Electrical and Computer Engineering.
|
|
3
|
+
#
|
|
4
|
+
# This file is part of MLonMCU.
|
|
5
|
+
# See https://github.com/tum-ei-eda/mlonmcu.git for further info.
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
#
|
|
19
|
+
"""Command line subcommand for the tune stage."""
|
|
20
|
+
|
|
21
|
+
from mlonmcu.cli.common import kickoff_runs
|
|
22
|
+
from mlonmcu.cli.build import add_build_options, handle as handle_build
|
|
23
|
+
from mlonmcu.context.context import MlonMcuContext
|
|
24
|
+
from mlonmcu.session.run import RunStage
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def get_parser(subparsers, parent=None):
|
|
28
|
+
""" "Define and return a subparser for the tune subcommand."""
|
|
29
|
+
parser = subparsers.add_parser(
|
|
30
|
+
"tune",
|
|
31
|
+
description="Tune model using the ML on MCU flow.",
|
|
32
|
+
parents=[parent] if parent else [],
|
|
33
|
+
add_help=(parent is None),
|
|
34
|
+
)
|
|
35
|
+
parser.set_defaults(flow_func=handle)
|
|
36
|
+
add_build_options(parser)
|
|
37
|
+
return parser
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def handle(args, ctx=None):
|
|
41
|
+
if ctx:
|
|
42
|
+
handle_build(args, ctx, require_target=True)
|
|
43
|
+
else:
|
|
44
|
+
# args.features.append("autotune") # TODO: enable autotuning automatically?
|
|
45
|
+
# args.features.append("autotuned") # ?
|
|
46
|
+
with MlonMcuContext(path=args.home, deps_lock="read") as context:
|
|
47
|
+
handle_build(args, context, require_target=True)
|
|
48
|
+
kickoff_runs(args, RunStage.TUNE, context)
|