commit | 15d903960dff911f5ebaf28b467507f62876a5eb | [log] [tgz] |
---|---|---|
author | Ben Vanik <ben.vanik@gmail.com> | Thu Mar 14 15:28:29 2024 -0700 |
committer | GitHub <noreply@github.com> | Thu Mar 14 15:28:29 2024 -0700 |
tree | e0d0892f9edca456d0bafb0f8e6049b55b33b7b9 | |
parent | 05ff3e2b7d5d5e8d1c38a5f1610ebe84896df609 [diff] |
Embedding executable source contents in binaries for tracing. (#16757) This adds a new `CaptureExecutableSourcesPass` that allows for capture of individual `hal.executable.variant` ops at any number of compilation stages. Unlike the `DumpExecutableSourcesPass` this does not change the original source locations in the IR and instead captures both the textual IR and the remapped locations within it of each executable export at the time the pass is run. The textual IR is stored as resources and associated with the variants through linking and made available to serialization for embedding in target-specific formats. Because this increases compilation time (generating all of the sources multiple times per executable is expensive) and bloats binaries the capture is only enabled with the `--iree-hal-executable-debug-level=3` or greater flag set (default is `=2`). As part of this PR the CPU, Vulkan, and legacy ROCM formats have been updated to store the new information and source it at runtime. This is a breaking change to the executable library binary format. I'm not quite happy with it, but it's probably good enough for the next 6mo-1yr. To make this more usable a copy button has been added to the tracy source view: https://github.com/wolfpld/tracy/pull/750 Now clicking on a dispatch in the CPU or GPU timeline will show the source and the copy button can be used to get it in the clipboard. The source can then be run through `iree-compile --compile-mode=hal-executable` to generate binaries.  Fixes #15699. Closes #16223.
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.