Skip to content

lordrebel/TBC

Repository files navigation

TODO

for ubuntu version> 24.04

1. create venv

python3 -m venv ./pyenv
source ./pyenv/bin/activate

pepare env

source env.source

how to build

llvm prepare

1. pull code

cd ..
git clone --branch llvmorg-19.1.7 --depth 1  https://gitee.com/mirrors/LLVM.git

2. compile llvm

cd LLVM&&mkdir -p build && cd build
cmake -G Ninja ../llvm     -DLLVM_ENABLE_PROJECTS="mlir"     -DLLVM_INSTALL_UTILS=ON     -DLLVM_TARGETS_TO_BUILD=""     -DLLVM_ENABLE_ASSERTIONS=ON     -DMLIR_INCLUDE_TESTS=OFF     -DLLVM_INSTALL_GTEST=ON     -DMLIR_ENABLE_BINDINGS_PYTHON=ON     -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../../llvm_release -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLLVM_ENABLE_BINDINGS=ON   -DLLVM_ENABLE_LLD=ON -DLLVM_ENABLE_PIC=ON  -DMLIR_INCLUDE_INTEGRATION_TESTS=ON -DPython3_EXECUTABLE=$(which python3)

cmake --build . --target install

3. install omp

#for gcc
sudo apt-get install libomp-dev
#for clang-20
sudo apt install libomp-20-dev

4 ortools prepare

1. pull code

git clone --branch v9.14 --depth 1 https://github.com/google/or-tools.git

compile ortools

mkdir build &&cd build
make -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" -DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld" -DCMAKE_MODULE_LINKER_FLAGS="-fuse-ld=lld"  -S ../ -DBUILD_DEPS=ON -DCMAKE_BUILD_TYPE=Release   -DCMAKE_INSTALL_PREFIX=../ortools_release
cmake --build .  --config Release --target install

5. build

bash build.sh

how to use

simple test

  1. download lenet.onnx from here
  2. run
source env.source
model_transform.py --model_name lenet --model_path ./your/path/to/onnx --platform onnx - --mlir ./lenet.mlir
  1. for more details see model_transform.py --help

TODO List

  • test fp8/fp16 onnx model import
  • update cast/quantize/dequantize op type infer and converter
  • add torch converter
  • add svjson converter
  • add platform dependent pass for optmize imported model
  • test operator to kernel lowering
  • kernel dialect design
  • kernel pass design
  • kernel op fuse pass
  • kernel active to lut op
  • lenet from kernel dialect lowering to hal dialect
  • finish packWeight Pass (pack all weight into weight group and address assgin)
  • hal pass design
  • add pass for hal to assign tensorKind
  • hal dialect design
  • infernece pass design
  • toTOSA conversion
  • import pdll rewrite the canonical patterns
  • import transform dialect to do transform dynamically
  • consider using safetensor instead of cnpy

About

a compiler based on mlir

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published