项目简介
MLIR-EmitC 提供了一种将 ML 模型转换为 C++ 代码的方法。该存储库包含脚本和工具,用于将 Keras 和 TensorFlow 模型转换为 TOSA 和 StableHLO 方言,并将其转换为 EmitC。后者用于生成对引用实现的调用。
EmitC 方言本身以及 C++ 发射器是 MLIR 核心的一部分,不再通过此存储库提供。
签入此存储库的初始 EmitC 方言和C++发射器是从 https://reviews.llvm.org/D76571 分叉出来的。
免责声明:这是一个研究项目,不适用于日常使用。该代码在没有任何支持的情况下可用。但是,我们欢迎通过问题跟踪器提供任何形式的反馈。
开始
克隆
git clone https://github.com/iml130/mlir-emitc.git
cd mlir-emitc
git submodule update --init
构建和运行
构建 EmitC 有两种变体:作为 LLVM/MLIR 构建的一部分(通过 LLVM 外部项目机制)和针对预构建的 LLVM/MLIR。
使用预构建的 LLVM/MLIR 进行构建
安装程序假定您已在其中 $BUILD_DIR 构建了 LLVM 和 MLIR,并将它们安装到 $PREFIX 。您可以使用 build_tools/build_mlir.sh shell 脚本来配置、构建和安装 LLVM 和 MLIR。
注意:最新测试的 LLVM 版本的哈希值在 build_tools/llvm_version.txt 中给出。由于 MLIR 发展迅速,因此 EmitC 可能无法使用更新的 LLVM 进行构建。
若要生成并启动测试,请运行
mkdir build && cd build
cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .. -DMLIR_DIR=$PREFIX/lib/cmake/mlir -DLLVM_EXTERNAL_LIT=$BUILD_DIR/bin/llvm-lit
cmake --build . --target check-emitc
作为 LLVM/MLIR 构建的一部分进行构建
MLIR-EmitC 也可以使用该 LLVM_EXTERNAL_PROJECTS 机制作为 LLVM/MLIR 构建的一部分进行构建(参见 https://llvm.org/docs/CMake.html)。
若要生成并启动测试,请运行
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 ${ROOT_PATH_TO_llvm-project}/llvm
cmake --build . --target check-emitc
https://github.com/iml130/mlir-emitc