commit | fdc340ed5a99b2b924fa6a45ff1eea70c5fe6473 | [log] [tgz] |
---|---|---|
author | bjacob <benoitjacob@google.com> | Mon Dec 05 17:00:24 2022 -0500 |
committer | GitHub <noreply@github.com> | Mon Dec 05 17:00:24 2022 -0500 |
tree | 666b0e34414fee3a65a6531f63d90183d3305e24 | |
parent | 8da14f8a89d45ce242fb1772db2c81a576788d74 [diff] |
ukernel tweaks (#11280) - Remove validation code from non-validation builds, including in callers (vmvx module entry points). - Consistently enclose validation code in `IREE_UK_ENABLE_VALIDATION` - Instead of going to `NDEBUG` everytime. - When validation is not enabled, do not even define the enum values besides `status_ok`). - This allows to assume unreachability of `if(status != status_ok)` (since the other enum values don't even exist at compile time, the only way to return them would be some likely unintentional type punning, and since the only enum value is 0, it's probably UB anyway for any other value to be represented by that enum). - On AArch64, this saves 50--100 bytes of code (plus rodata for the caller's status message format string) per caller (e.g. `iree_vmvx_mmt4d`, `iree_vmvx_pack`, etc --- this is multiplied by the number of entry points that call ukernels, which could grow large) plus the constant savings of code plus rodata for the literal strings in `iree_uk_status_message`. At the moment, this is overall a ~ 500 bytes saving. - Rename PACK to TIE, UNPACK to UNTIE for the helpers munging together 8bit type IDs into 16bit/32bit words. Was confusing with pack/unpack ukernels. - Move attributes/builtins checks up in `common.h`. - Move `iree_uk_memset` to `common.h` (now a true memset, was `iree_uk_memset_zero`. Checked that that doesn't affect compilation).
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.