서론
MLIR-EmitC provides a way to translate ML models into C++ code.
The repository contains scripts and tools to translate Keras and TensorFlow models into the TOSA and MHLO dialect and to convert those to EmitC.
목차
사전작업
LLVM Project가 사전에 빌드되어있어야 한다.
ONNX-MLIR 설치부분까지는 작업할 필요없으니 그 전까지만 빌드하자.
Git에서 가져오기
git clone https://github.com/iml130/mlir-emitc.git
cd mlir-emitc
git submodule update --init
빌드하기
mkdir build && cd build
sudo apt install clang
cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DEMITC_ENABLE_HLO=OFF -DLLVM_ENABLE_PROJECTS=mlir -DLLVM_EXTERNAL_PROJECTS="mlir-emitc" -DLLVM_EXTERNAL_MLIR_EMITC_SOURCE_DIR=`realpath ../` -DLLVM_TARGETS_TO_BUILD=host ${ROOT_PATH_TO_llvm-project}/llvm
cmake --build . --target check-emitc
아래는 위 코드에 대한 실제로 사용된 Sample Code다 빌드할때 참조하자
mkdir build && cd build
cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DEMITC_ENABLE_HLO=OFF -DLLVM_ENABLE_PROJECTS=mlir -DLLVM_EXTERNAL_PROJECTS="mlir-emitc" -DLLVM_EXTERNAL_MLIR_EMITC_SOURCE_DIR=`realpath ../` -DLLVM_TARGETS_TO_BUILD=host /home/jj/llvm-project/llvm
cmake --build . --target check-emitc
MobileNet 가져오기
cd ..
cd scripts
pip3 install -r requirements.txt
mkdir model_saved
python3 get_mobilenet_v2.py --output-file model_saved
Saved Model pb 가져오기
python3 model_to_savedmodel_with_predict_function.py mobilenet_v2.h5 ./result
./e2e_test_tosa.sh ./model_saved /home/jj/llvm-project/mlir-emitc/reference-implementation/include /home/jj/llvm-project/mlir-emitc/build/bin/emitc-opt /usr/bin/g++ 1 0 ./t
https://github.com/iml130/mlir-emitc
g++ test.cpp -I./
./a.out
Comment