MLIR-Based Ideas Landing Project (Project page).
This project uses LLVM/MLIR as an external library. Please make sure the dependencies are available on your machine.
$ git clone [email protected]:buddy-compiler/buddy-mlir.git
$ cd buddy-mlir
$ git submodule update --init
$ cd buddy-mlir
$ mkdir llvm/build
$ cd llvm/build
$ cmake -G Ninja ../llvm \
-DLLVM_ENABLE_PROJECTS="mlir;clang" \
-DLLVM_TARGETS_TO_BUILD="host;RISCV" \
-DLLVM_ENABLE_ASSERTIONS=ON \
-DCMAKE_BUILD_TYPE=RELEASE
$ ninja check-mlir check-clang
If your target machine includes a Nvidia GPU, you can use the following configuration:
$ cmake -G Ninja ../llvm \
-DLLVM_ENABLE_PROJECTS="mlir" \
-DLLVM_TARGETS_TO_BUILD="host;NVPTX" \
-DMLIR_ENABLE_CUDA_RUNNER=ON \
-DLLVM_ENABLE_ASSERTIONS=ON \
-DCMAKE_BUILD_TYPE=RELEASE
$ cd buddy-mlir
$ mkdir build
$ cd build
$ cmake -G Ninja .. \
-DMLIR_DIR=$PWD/../llvm/build/lib/cmake/mlir \
-DLLVM_DIR=$PWD/../llvm/build/lib/cmake/llvm \
-DLLVM_ENABLE_ASSERTIONS=ON \
-DCMAKE_BUILD_TYPE=RELEASE
$ ninja check-buddy
If you want to add domain-specific framework support, please add the following cmake options:
Framework | Enable Option | Other Options |
---|---|---|
OpenCV | -DBUDDY_ENABLE_OPENCV=ON |
Add -DOpenCV_DIR=</PATH/TO/OPENCV/BUILD/> or install OpenCV release version on your local device. |
Bud dialect is designed for testing and demonstrating.
DIP dialect is designed for digital image processing abstraction.
The buddy-opt is the driver for dialects and optimization in buddy-mlir project.
The AutoConfig
mechanism is designed to detect the target hardware and configure the toolchain automatically.
The purpose of the examples is to give users a better understanding of how to use the passes and the interfaces in buddy-mlir. Currently, we provide three types of examples.
- IR level conversion and transformation examples.
- Domain-specific application level examples.
- Testing and demonstrating examples.
For more details, please see the documentation of the examples.
The benchmarks in this repo use JIT tool (mlir-cpu-runner) as the execution engine. For AOT benchmarks, please see buddy-benchmark repo.
We provide the following benchmarks:
- Conv2D
$ cd buddy-mlir/benchmark
$ make
For more features and configurations, please see the benchmark document.