This folder contains example of minimal MLIR setups that can showcase the intended binary footprint of the framework.
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