commit | 38c6418477361a8edd831a96bfcfeb9b29e112d1 | [log] [tgz] |
---|---|---|
author | Ben Vanik <benvanik@google.com> | Mon Nov 29 13:14:38 2021 -0800 |
committer | GitHub <noreply@github.com> | Mon Nov 29 13:14:38 2021 -0800 |
tree | 18559cc5af91810bae55822bc3c4faa72eba8717 | |
parent | 9f8b9cf19d5887b889a14f3768eb3fb5800bf804 [diff] |
Exposes control over the partitioning favor mode on the command line. (#7755) The `#stream.partitioning_config` attribute can be added to the module/functions/etc to control this explicitly and otherwise the `-iree-stream-partitioning-favor=` flag will be used as a default. - `debug` disables all partitioning for concurrency (and in the future when partitioning command buffers for concurrency). - `min-peak-memory` attempts to preserve the debug-level memory consumption by only optimistically scheduling work concurrently. - `max-concurrency` reorders ops to try to extract the maximum amount of concurrency allowed by the program - it's not a fantastic algorithm and in the future we can reduce the memory consumption. Models primarily designed for single-threaded execution should favor `min-peak-memory` while those for multithreaded/GPU should favor `max-concurrency`. We can extend these modes in the future and make them smarter: for example, min-peak-memory should perform reordering to minimize live ranges. Examples from the JAX mnist_train model: `-iree-stream-partitioning-favor=debug`: 12MB transients, 0 concurrent dispatches `-iree-stream-partitioning-favor=min-peak-memory`: 12MB transients, ~80 concurrent dispatches `-iree-stream-partitioning-favor=max-concurrency`: 22MB transients, ~350 concurrent dispatches
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.