commit | df119bd5e87e07214d3b86ff1e425965a1f5512d | [log] [tgz] |
---|---|---|
author | bjacob <benoitjacob@google.com> | Fri Jun 16 10:27:00 2023 -0400 |
committer | GitHub <noreply@github.com> | Fri Jun 16 10:27:00 2023 -0400 |
tree | 4806d771c05151b354b043ed32517841e81bd6b4 | |
parent | 93038251a167c67a045fab2896ff34d3ed72aa9e [diff] |
Test the bring-your-own-LLVM path. (#14035) * Adds a`byo_llvm` CI job. Do we want to disable running it on PRs? It's enabled for now so we get live coverage while iterating on this PR but we can always flip that. * Note: the current CI job was the first to have ccache enabled so it didn't benefit from ccache hits; subsequent ones should be cheaper (this initial one took 15 minutes). * Changes to the (user-facing) `byo_llvm.sh` script: * Canonicalize paths to absolute paths. These end up in CMake variables like `CMAKE_MODULE_PATH` where relative paths are a footgun. * Defaults to buiding the `llvm-cpu` target backend. Users can still disable it, but at the moment about 20 tests fail without it enabled (filed #14034). Not a problem for users unless they run IREE tests. Until that's fixed, enabling that here allows to keep the CI job aligned with the default, and increases coverage (otherwise, users who do enable `llvm-cpu` would be outside of CI coverage). * Changes both the name and the default values of the environment variables controlling build/install dirs. **Caveat existing users, this could break incremental rebuilds -- as this is moving to a new directory, it will lose existing values of CMake variables, etc.** * `LLVM_BUILD_DIR` changed to `IREE_BYOLLVM_BUILD_DIR` because that's only the parent directory under which we create `llvm/`, `mlir/`, `iree/` subdirs. The former name made it sound like it was the `llvm/` build dir itself. * Default value `iree-llvm-build` likewise changed to `iree-byollvm-build`. * Changes to general CMake code: * Continuing along the lines of earlier `byo_llvm` fixes (#13968) which introduced `IREE_CLANG_BINARY` to refer to the `clang` binary regardless of whether it's a CMake target (which is only the case in the bundled build, not in `byo_llvm`), running tests revealed that we needed the same for `lld`, so here comes `IREE_LLD_BINARY`, so we can execute `lld` even if we don't have a `IREE_LLD_TARGET`. * The one part of the code that decidedly doesn't currently work with `byo_llvm` is the linking part of the Compiler API, because it relies on linking against LLD libraries, and for that it currently requires IREE_LLD_TARGET. I don't know how easy or feasible that would be to overcome (though that might be easy if those LLD libraries are exported by the LLVM install). * Changes to tests: * `assign_target_devices.mlir` was assuming the `vulkan-spirv` backend to be enabled. * A number of tests, mainly tests that depend on the Compiler API, are skipped when `IREE_LLD_TARGET` is not defined. Fixes #13989
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.