# TBC **Repository Path**: lordrebel/TBC ## Basic Information - **Project Name**: TBC - **Description**: a compiler based on mlir - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-28 - **Last Updated**: 2026-03-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TODO ## for ubuntu version> 24.04 ### 1. create venv ```bash python3 -m venv ./pyenv source ./pyenv/bin/activate ``` ## pepare env ```bash source env.source ``` ## how to build ### llvm prepare #### 1. pull code ```bash cd .. git clone --branch llvmorg-19.1.7 --depth 1 https://gitee.com/mirrors/LLVM.git ``` #### 2. compile llvm ```bash 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 ```bash #for gcc sudo apt-get install libomp-dev #for clang-20 sudo apt install libomp-20-dev ``` ### 4 ortools prepare #### 1. pull code ```bash git clone --branch v9.14 --depth 1 https://github.com/google/or-tools.git ``` #### compile ortools ```bash 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 bash build.sh ``` ## how to use ### simple test 1. download lenet.onnx from [here](https://github.com/ONNC/onnc-tutorial/blob/master/models/lenet/lenet.onnx) 2. run ```bash source env.source model_transform.py --model_name lenet --model_path ./your/path/to/onnx --platform onnx - --mlir ./lenet.mlir ``` 3. for more details see `model_transform.py --help` ## TODO List - [X] test fp8/fp16 onnx model import - [X] update cast/quantize/dequantize op type infer and converter - [X] add torch converter - [X] add svjson converter - [X] add platform dependent pass for optmize imported model - [X] test operator to kernel lowering - [ ] opreorder pass - [X] simple layergroup pass - [ ] kernel dialect design - [ ] kernel pass design - [ ] kernel op fuse pass - [ ] kernel active to lut op - [X] lenet from kernel dialect lowering to hal dialect - [X] finish packWeight Pass (pack all weight into weight group and address assgin) - [ ] prototype of layergroupPass - [ ] hal pass design - [X] add pass for hal to assign tensorKind - [ ] hal dialect design - [ ] infernece pass design - [ ] toTOSA conversion - [X] import `pdll` rewrite the canonical patterns - [X] import `transform` dialect to do transform dynamically - [ ] consider using safetensor instead of cnpy