前言
Mlir 现在合并到了 llvm 工程项目中,虽然官网贴出了编译的命令,但是因为环境配置或者是系统的问题直接用官网的命令会遇到各种错误,这里对 Mac 编译 llvm 中的 mlir 做一个记录,希望也可以帮助到有需要的小伙伴。
前期环境配置
首先要 clone 下来整个 llvm 项目,可以使用下面的命令:
git clone https://github.com/llvm/llvm-project.git
但是 llvm 整个项目比较大,下载速度可能会很慢,并且下载中途会出现下载中断的问题,这里推荐参考下面的链接,来加速下载过程:
git clone https://github.com.cnpmjs.org/llvm/llvm-project.git
Mac 中需要安装下面几个需要用到的依赖:
# 安装 ninja
brew install ninja
# 安装 cmake
brew install cmake
编译
cd llvm-project
mkdir build && cd 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 \
-DLLVM_BUILD_EXAMPLES=ON
cmake --build . -- ${MAKEFLAGS} # 等待编译完成
cmake --build . --target check-mlir
最后顺利的话,会是下面的输出:
可能遇到的问题
刚开始我根据 Mlir 官网的编译命令直接编译:
cmake -G Ninja ../llvm \
-DLLVM_ENABLE_PROJECTS=mlir \
-DLLVM_BUILD_EXAMPLES=ON \
-DLLVM_TARGETS_TO_BUILD="X86;NVPTX;AMDGPU" \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_ASSERTIONS=ON \
# -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLLVM_ENABLE_LLD=ON
cmake --build . --target check-mlir
编译半天,最后总是会遇到下面的问题:
总有 failed 的 case。折腾了半天,在另一个项目中找到了上面使用的不会有 failed case 的编译命令。
刚开始我认为上面就是编译失败了,一直在想着是不是环境有什么问题,又是卸载如果是要学习 mlir 的 toy examples,跟着官方文档走一遍,实测即使是上面这种 test 没过的情况,还是会有 build/bin/toyc-ch*
的二进制生成,case 没过也可以正常运行 toy 的例子的。