commit | 578ee653f100127e4d98a8251c1f2b43c3dd86c8 | [log] [tgz] |
---|---|---|
author | Lei Zhang <antiagainst@google.com> | Mon Aug 03 09:33:13 2020 -0700 |
committer | Geoffrey Martin-Noble <gcmn@google.com> | Mon Aug 03 09:37:49 2020 -0700 |
tree | 5213a984eadf515c810485083c517e9094cb4e47 | |
parent | bf41ff607412a67b2acf69424152c9b0d1f5f507 [diff] | |
parent | 6c1869bcb161aed401bc5283df9353bbbe21b9ae [diff] |
Merge main -> google * 6c1869bc Add license header to linker scripts (#2724) * 6d32fe81 Updates all e2e tests to use TracedModuleTestCase (#2736) * 7fea2dd1 Revert "[android] Ignore adb push status for the executable (#2627)" (#2735) * da48d03c Adds a class for tracing module calls and example tests. (#2660) * d66150d8 Enables `conv_test` on vulkan. (#2723) * a3b73bf6 Add .python-version to .gitignore (#2727) * 6d2bfd35 Enables passing MobileNet and MobileNetV2 vision tests (#2725) * 763dc098 Fix ModelBuilder build (#2726) * 528a86a7 Update the codegen pipeline example snippets to better demonstrate (#2709) * 91a05ff5 Merge google -> main (#2719) * f0307a87 Revert "Merge google -> main" (#2718) * 77d2f8b4 Merge google -> main (#2711) * aafabbcb Add linker scripts to cmake pyiree builds to hide symbols. (#2707) * 1918d5c7 Updated gather to run on LLVM and SPIRV (#2701) * ec38aa00 Add a VM to EmitC conversion and CModule Target (#2536) * 32fe2c9b Revert "Add a VM to EmitC conversion and CModule Target (#2536)" (#2703) * e7f90b61 Revert addition of DYLIB-LLVM-AOT as a default backend (#2702) * 48efada8 Dump input values to a file. (#2683) * 0fd8a550 Mark shell scripts as executable (#2699) * 966fe78f Add dep "//iree/base:localfile" to iree-run-mlir (#2687) * 64e29879 Merge google -> main (#2698) * ced7477f Update scripts for packaging wheels from bazel. * 1c05e0ae Disable dylib driver for android build (#2692) * e00a85f8 Disable a few gcc warnings that are chatty. * 74af1f01 Add a config for gcc. (#2696) * eec62a1e Remove dylib-llvm-aot tests (#2694) * 11bd7a00 Fix stdalign include in Android (#2688) * b9026bd6 Enable dylib-llvm-aot backend e2e/xla_op tests (#2639) * 8ed9f73f Added Complex operation lowerings to pre-target conversion (#2662) * 8224247a Working around duplicate func->llvm.func rewrites. (#2685) * f2d6649c Bump pybind11 to head. (#2592) * 9ac5241d [NFC] Remove empty ArrayRef<NamedAttribute> arg in op creation (#2686) * 36abdfde [ModelBuilder] Revert spurious path change (#2684) * c96bbb1d Merge pull request #2568 from google/benvanik-flatcc-vm * f80864f8 [ModelBuilder] Add MemRefUtil helpers for padding. (#2577) * 1425737d Fix flatcc target name and binary path (#2599) * 8c18b8c3 Refactoring bytecode_module to use flatcc instead of flatbuffers C++. This imp.. * 3762c132 Linking in the flatcc bytecode_module_def files. This ensures they are correct.. * eb53de3e Building bytecode_module_def with flatcc. PiperOrigin-RevId: 324296127
IREE (Intermediate Representation Execution Environment, pronounced as “eerie”) is an MLIR-based end-to-end compiler that lowers ML models to a unified IR optimized for real-time mobile/edge inference against heterogeneous hardware accelerators. IREE also provides flexible deployment solutions for the compiled ML models.
IREE is still in its early phase. We have settled down on the overarching infrastructure and are actively improving various software components as well as project logistics. It is still quite far from ready for everyday use and is made available without any support at the moment. With that said, we welcome any kind of feedback on any communication channels!
For development, IREE supports both Bazel and CMake on Windows and Linux. We are working on enabling macOS support. For deployment, IREE aims to additionally cover Android and iOS.
Please see the Getting Started pages on IREE's documentation hub to configure, compile, and run IREE in your favorite development environment!
IREE hosts all its documentation and project status dashboards on GitHub Pages. We are still building up the website; please feel free to create issues for the documentation you'd like to see!
We also have some public talks that explain IREE's concepts and architecture:
IREE adopts a holistic approach towards ML model compilation: the IR produced contains both the scheduling logic, required to communicate data dependencies to low-level parallel pipelined hardware/API like Vulkan, and the execution logic, encoding dense computation on the hardware in the form of hardware/API-specific binaries like SPIR-V.
The architecture of IREE is best illustrated by the following picture:
Being compilation-based means IREE does not have a traditional runtime that dispatches “ops” to their fat kernel implementations. What IREE provides is a toolbox for different deployment scenarios. It scales from running generated code on a particular API (such as emitting C code calling external DSP kernels), to a HAL (Hardware Abstraction Layer) that allows the same generated code to target multiple APIs (like Vulkan and Direct3D 12), to a full VM allowing runtime model loading for flexible deployment options and heterogeneous execution.
IREE aims to
IREE is still at its early stage; we have lots of exciting future plans. Please check out the long-term design roadmap and short-term focus areas.
We use GitHub Projects to track various IREE components and GitHub Milestones for major features and quarterly plans. Please check out for updated information.
CI System | Platform | Build System | Component | Status |
---|---|---|---|---|
Kokoro | Linux | Bazel | Core | |
Kokoro | Linux | Bazel | Bindings | |
Kokoro | Linux | Bazel | Integrations | |
Kokoro | Linux | CMake | Core + Bindings | |
Kokoro | Android | CMake | Runtime (build only) |
IREE is licensed under the terms of the Apache license. See LICENSE for more information.