commit | f6342cfb1545e7a28bb6466f03d9d980c3b81e9c | [log] [tgz] |
---|---|---|
author | Stella Laurenzo <laurenzo@google.com> | Tue Mar 21 17:39:30 2023 -0700 |
committer | GitHub <noreply@github.com> | Tue Mar 21 17:39:30 2023 -0700 |
tree | 6ee6911c39a6300ad33ba2ee0bd4aee28ab55d6a | |
parent | d5e5aa6626eb46782b33c98afc983bd1ddb33e7f [diff] |
Add C APIs sufficient for tunneling LLVM command line handling into derived tools. (#12710) This does some delicate surgery to rationalize the normal LLVM initialization sequence and make it suitable for API usage for the limited use case of subordinating IREE compiler's command line processing to an outer component (i.e. by having "--" style separators or "-Xcompiler" like options in another command line library). `iree-compile` itself still uses its privileged position as built-in to actually define new global command line options, which the C API does not expose. This works because it is always statically linked into the main libIREECompiler.so shared library. BREAKING C API CHANGE: `ireeCompilerGlobalInitialize()` now takes no arguments whereas it used to take a boolean "usesCommandLine" option which was a half-hearted attempt to make this case work previously. The only use of this as true was in-tree and it wasn't really possible to use right externally. If passing false, just drop the argument. If passing true, use a combination of ireeCompilerGetProcessCLArgs and ireeCompilerSetupGlobalCL as shown in iree_compile_lib.cc. Also, the sequencing has been reworked to allow nested calls to initialize/shutdown. The lack of this was causing unreliability in the PJRT client, which is the major out of tree user of the API. Given the low use and broken state of this API, it is preferable to just clean it up now vs retain compatibility.
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.