ONNX 模型在 MLIR 编译器基础设施中的表示和参考降低
本项目由 onnx 维护
托管在 GitHub Pages 上 — 主题由 orderedlist 提供
如果在第一次 onnx-mlir
构建期间遇到问题,您可能需要检查我们构建使用的 cmake 变量。请参阅本页的最后一部分以获取帮助。
如果您已经成功使用源代码目录一段时间,在合并来自 main
分支的最新更改后,您在重新构建 onnx-mlir
时可能会遇到困难。
以下是您可以执行的几个步骤。如果其中任何一个适用,建议删除 onnx-mlir/build
子目录,并使用 cmake
命令从头开始重新构建。
如果最新的 onnx-mlir
main
分支已更新到 llvm-project
的更高提交级别,构建过程通常会遇到与 LLVM 和 MLIR 代码相关的多个编译器失败。
所需级别可在构建 ONNX-MLIR 页面的第一个代码框中找到,就在 git checkout
命令旁边。
代码中使用的级别可通过在 llvm-project
子目录中执行 git log
命令找到。
如果不匹配,请将 llvm 项目更新到所需级别。
通常,当我们更新 ONNX op 级别时,会在 third_party/onnx
子目录中产生新的软件。未能更新该代码通常会导致与 ONNX 方言代码相关的编译器失败。
最简单的方法是直接删除 third_party
目录,然后使用 git submodule update --init --recursive
重新安装代码。
有时候,方言更新需要重新构建整个构建目录。您可能会看到的典型错误包括缺失声明,例如 verifier
方法的声明。建议是直接删除 onnx-mlir/build
子目录,并使用 cmake
命令从头开始重新构建。
如果在构建期间遇到 Protobuf 相关错误,请检查以下潜在原因
这些以及设置构建环境的许多其他技巧是我们推荐使用 onnxmlir/onnx-mlir-dev docker 镜像进行开发的原因。
要运行 lit ONNX-MLIR 测试,请使用以下命令
[same-as-file]: <> ({“ref”: “utils/check-onnx-mlir.cmd”, “skip-ref”: 1})
call cmake --build . --config Release --target check-onnx-lit
或者只需在构建目录中为 ninja
或 make
调用 check-onnx-lit
目标。
要运行数值 ONNX-MLIR 测试,请使用以下命令
[same-as-file]: <> ({“ref”: “utils/check-onnx-numerical.cmd”, “skip-ref”: 1})
call cmake --build . --config Release --target check-onnx-numerical
或者只需在构建目录中为 ninja
或 make
调用 check-onnx-numerical
目标。
要运行文档 ONNX-MLIR 测试,请在安装下方所示的 third_party ONNX 后,使用以下命令。有关首先安装 third_party ONNX 项目的详细信息,请参阅此处。请注意,关键是安装我们 third_party 子目录中列出的 ONNX 项目版本,因为 ONNX-MLIR 可能落后于 ONNX 标准的最新版本。
[same-as-file]: <> ({“ref”: “utils/check-docs.cmd”, “skip-ref”: 1})
call cmake --build . --config Release --target check-docs
或者只需在构建目录中为 ninja
或 make
调用 check-docs
目标。
来自 LLVM 和 ONNX-MLIR 的以下 CMake 变量可在编译 ONNX-MLIR 时使用。
MLIR_DIR:PATH 指向 llvm-project 构建或安装目录中 mlir cmake 模块的路径(例如,c:/repos/llvm-project/build/lib/cmake/mlir)。如果 MLIR_DIR 尚未从先前的 cmake 调用中设置,则这是必需的。
LLVM_EXTERNAL_LIT:PATH 指向 lit 工具的路径。默认值为空字符串,如果可能,LLVM 将根据 MLIR_DIR 查找工具。当 MLIR_DIR 指向安装目录时,这是必需的。