commit | 357f770bbff020b4d65be3620d31374e17c4df04 | [log] [tgz] |
---|---|---|
author | Oleksandr "Alex" Zinenko <zinenko@google.com> | Wed Jan 11 18:07:52 2023 +0100 |
committer | GitHub <noreply@github.com> | Wed Jan 11 18:07:52 2023 +0100 |
tree | f0cef00fc47847fd51bf4792c14d3e5c421c5448 | |
parent | aa03d236821e180065ad2a08a4bf425629ec472f [diff] |
Remove the need for split_reduction match callback (#11795) This match callback was introduced to replace the original "match all generics/fills + split" approach, which itself required re-matching because of: 1. `apply_patterns` invalidating the parent function handle and thus all handles to nested ops; 2. `fuse_into_containing_op` not preserving the order of payload operations associated with the handle (and rather returning the results in the order in which they ended up being fused). Remedy 1. by marking `apply_patterns` as only reading and not consuming the function handle, thus avoiding its invalidation. This is made possible by the implementation of `apply_patterns` using the rewrite driver with tracking that preserves the handles even when the associated operations were affected. Remedy 2. by fusing one op at a time to obtain the handle to the op after fusion. This hit an issue with canonicalization effectively fusing a `fill` op into the loop when it is directly consumed, confusing the fusion op. Work around it by performing fusion inside a non-canonicalized sequence. This allows us to remove the `split_reduction` matcher and related code, as well as to simplify the transformation script by removing mutliple `take_first` that became redundant.
IREE (Intermediate Representation Execution Environment, pronounced as “eerie”) is an MLIR-based end-to-end compiler and runtime that lowers Machine Learning (ML) models to a unified IR that scales up to meet the needs of the datacenter and down to satisfy the constraints and special considerations of mobile and edge deployments.
See our website for project details, user guides, and instructions on building from source.
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!
See our website for more information.
IREE is licensed under the terms of the Apache 2.0 License with LLVM Exceptions. See LICENSE for more information.