Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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: wolfpld/tracy#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. ![image](https://github.com/openxla/iree/assets/75337/e690e1f8-52a7-40db-a3aa-5fd7e781791b) Fixes #15699. Closes #16223.
- Loading branch information