File: README.md

package info (click to toggle)
llvm-toolchain-19 1%3A19.1.7-3~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,998,492 kB
  • sloc: cpp: 6,951,680; ansic: 1,486,157; asm: 913,598; python: 232,024; f90: 80,126; objc: 75,281; lisp: 37,276; pascal: 16,990; sh: 10,009; ml: 5,058; perl: 4,724; awk: 3,523; makefile: 3,167; javascript: 2,504; xml: 892; fortran: 664; cs: 573
file content (51 lines) | stat: -rw-r--r-- 2,226 bytes parent folder | download | duplicates (14)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# 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](https://github.com/google/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`