
Make it so that PDL in pattern rewrites can be optionally disabled. PDL is still enabled by default and not optional bazel. So this should be a NOP for most folks, while enabling other to disable. This only works with tests disabled. With tests enabled this still compiles but tests fail as there is no lit config to disable tests that depend on PDL rewrites yet.
Minimal MLIR binaries
This folder contains example of minimal MLIR setups that can showcase the intended binary footprint of the framework.
- mlir-cat: This includes the Core IR, the builtin dialect, the textual parser/printer, the support for bytecode serialization.
- mlir-minimal-opt: This adds all the tooling for an mlir-opt tool: the pass infrastructure and all the instrumentation associated with it.
- mlir-miminal-opt-canonicalize: This add the canonicalizer pass, which pulls in all the pattern/rewrite machinery, including the PDL compiler and intepreter.
Below are some example measurements taken at the time of the LLVM 17 release, using clang-14 on a X86 Ubuntu and bloaty.
Base | Os | Oz | Os LTO | Oz LTO | |
---|---|---|---|---|---|
mlir-cat |
1024KB | 840KB | 885KB | 706KB | 657KB |
mlir-minimal-opt |
1.62MB | 1.32MB | 1.36MB | 1.17MB | 1.07MB |
mlir-minimal-opt-canonicalize |
1.83MB | 1.40MB | 1.45MB | 1.25MB | 1.14MB |
Base configuration:
cmake ../llvm/ -G Ninja \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DLLVM_CCACHE_BUILD=ON \
-DLLVM_ENABLE_PROJECTS=mlir \
-DLLVM_BUILD_EXAMPLES=ON \
-DLLVM_TARGETS_TO_BUILD="Native" \
-DCMAKE_C_COMPILER=clang \
-DCMAKE_CXX_COMPILER=clang++ \
-DLLVM_ENABLE_LLD=ON \
-DLLVM_ENABLE_BACKTRACES=OFF \
-DMLIR_ENABLE_PDL_IN_PATTERNMATCH=OFF \
-DCMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO=-Wl,-icf=all
Note: to measure the on-disk size, you need to run strip bin/mlir-cat
first to
remove all the debug info (which are useful for bloaty
though).
The optimization level can be tuned with -Os
or -Oz
:
-DCMAKE_C_FLAGS_RELWITHDEBINFO="-Os -g -DNDEBUG" -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-Os -g -DNDEBUG"
-DCMAKE_C_FLAGS_RELWITHDEBINFO="-Oz -g -DNDEBUG" -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-Oz -g -DNDEBUG"
Finally LTO can also be enabled with -DLLVM_ENABLE_LTO=FULL
.
Bloaty can provide measurements using:
bloaty bin/mlir-cat -d compileunits --domain=vm
or
bloaty bin/mlir-cat -d symbols --demangle=full --domain=vm