Jacques Pienaar 6ae7f66ff5 [mlir] Add config for PDL (#69927)
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.
2024-01-03 20:37:20 -08:00
..
2024-01-03 20:37:20 -08:00

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