tflite: mtk_neuron: Add BlockedByPreviousInference test

This CL adds a test to ensure that we can send two models at
the same time while both models trying to utilize every NPU
cores.
The expected behavior is that one of the model will need to
wait until the other model finish, so the time spent of the
later model should be the sum of the first model and itself.

This test send two identical models to NPU, and check if the
time of the second one is around 2x of the first one.
My experiments show that usually it's around 1.89x.

BUG=b:374245241
TEST=neuron_delegate_test on navi

Change-Id: I123c2e6ca5177f0198e8bafe625f062aba27f4be
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/tflite/+/6437795
Reviewed-by: Shik Chen <shik@chromium.org>
Tested-by: Tommy Chiang <ototot@google.com>
Commit-Queue: Tommy Chiang <ototot@google.com>
1 file changed
tree: 5dff470273f9f56aed98fef4c50275fb7cd85446
  1. android/
  2. common/
  3. delegate/
  4. patch/
  5. script/
  6. tool/
  7. udev/
  8. .bazelignore
  9. .bazelrc
  10. .bazelversion
  11. .clang-format
  12. .gitignore
  13. BUILD.bazel
  14. CPPLINT.cfg
  15. DIR_METADATA
  16. OWNERS
  17. PRESUBMIT.cfg
  18. README.md
  19. WORKSPACE.bazel
README.md

ChromeOS TFLite

This repository hosts the core ChromeOS TFLite components, enabling on-device machine learning (ODML) workloads accelerated by NPU.

The corresponding ebuild can be found at: tensorflow-9999.ebuild

TensorFlow Patch Management

Patches are stored in the patch/ directory and explicitly listed in WORKSPACE.bazel. A helper script, ./script/patcher.py, is included to facilitate patch management within a TFLite workspace.

The typical workflow:

  1. Eject (Download) TensorFlow Source Code

    Download the TensorFlow source code into a local git repository with patches applied as individual commits:

    ./script/patcher.py eject
    

    This creates a new local git repository at tensorflow/.

  2. Modify the TensorFlow Repository

    Make changes to the tensorflow/ repository as needed, following standard git workflows. Optionally, include a PATCH_NAME= tag in commit messages to specify the filename of the corresponding patch.

  3. Seal the Repository

    Regenerate the patch files and update the WORKSPACE.bazel file:

    ./script/patcher.py seal
    

    This updates the patches in the patch/ directory and reflects the changes in WORKSPACE.bazel.

It's preferred to submit changes to upstream TensorFlow first and cherry-pick them as patches. This helps minimize divergence and makes TensorFlow updates easier.