Mac 编译 onnx-mlir

onnx-mlir 是 Onnx 团队推出的一款图编译器,定义了 onnx dialect,将一个 .onnx 模型编译转成一个对应的 IR 表示。 这里主要是介绍 Mac 如何编译 onnx-mlir。

主要步骤还是根据官网的来,但是鉴于不同的版本,环境等,在编译过程中可能会遇到这样那样的小问题。这里记录一下在 M1 Mac 上编译的过程,希望可以帮助到有需要的小伙伴。

依赖安装
前置依赖
# 安装 Ninja
brew install ninja
# 安装 cmake
brew install cmake
# 安装 ptrotobuf
brew install protobuf
LLVM-MLIR 安装

因为 onnx-mlir 是基于 MLIR 做的一款图编译器,所以首先需要安装核心的依赖 MLIR,官网有相关的教程,注意这里一定要根据自己的 onnx-mlir 的版本,选择好对应的 llvm 版本,这个官网都会有说明,以 Onnx-mlir 官方 github 的版本为主,否则可能会遇到各种编译出错。

git clone https://github.com/llvm/llvm-project.git
# Check out a specific branch that is known to work with ONNX MLIR.
cd llvm-project && git checkout 0bf230d4220660af8b2667506f8905df2f716bdf && cd ..

切换好 llvm-project 版本以后,就可以先编译 llvm 了。

mkdir llvm-project/build
cd llvm-project/build
cmake -G Ninja ../llvm \
   -DLLVM_ENABLE_PROJECTS=mlir \
   -DLLVM_TARGETS_TO_BUILD="host" \
   -DCMAKE_BUILD_TYPE=Release \
   -DLLVM_ENABLE_ASSERTIONS=ON \
   -DLLVM_ENABLE_RTTI=ON

cmake --build . -- ${MAKEFLAGS}
cmake --build . --target check-mlir
设置环境变量

注意这里编译的 mlir 是没有 example 的,即没有官网的 toy 相关内容,如果需要可以在编译选项里加上: -DLLVM_BUILD_EXAMPLES=ON。llvm 成功编译以后需要设置一个环境变量 MLIR_DIR,等待会编译 onnx-mlir 的时候可以找到相关依赖。

export MLIR_DIR=/path/to/llvm-project/build/lib/cmake/mlir
编译 onnx-mlir

这里主要还是以官网的步骤为主:

git clone --recursive https://github.com/onnx/onnx-mlir.git

mkdir onnx-mlir/build && cd onnx-mlir/build
cmake -G Ninja .. -DCMAKE_CXX_COMPILER=/usr/bin/c++
cmake --build .

# Run lit tests:
export LIT_OPTS=-v
cmake --build . --target check-onnx-lit

如果顺利的话,上面的编译命令运行完就编译完成了。

可能遇到的问题1

我 clone onnx-mlir 项目的时候没有加 --recursive,在编译的时候遇到了下面的问题:

CMake Error at CMakeLists.txt:92 (add_subdirectory):
 The source directory
xxxxx

CMake Error at src/Runtime/CMakeLists.txt:56 (pybind11_add_module):
 Unknown CMake command "pybind11_add_module".

主要就是 onnx,pybind11,rapidcheck 三个第三方依赖报错。

解决方法:

git submodule init && git submodule update
可能遇到的问题2

刚开始我是在我自己 fork 的老分支上直接 git pull,但是并没有跟 master 对齐,llvm 又是直接参考的 onnx-mlir 最新的 master 导致 onnx-mlir 与 llvm 的版本没对应上,在编译的时候也是遇到了一些头文件找不到,或者在编 ONNXOps.hpp.in 这个文件的时候一些 error,类型不认识,未定义等问题,要确保 onnx-mlir 与 llvm 的版本是根绝官方推荐来的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值