ONNX 模型在 MLIR 编译器基础设施中的表示和参考下推
此项目由 onnx 维护
托管于 GitHub Pages — 主题来自 orderedlist
如果您在首次构建 onnx-mlir
时遇到问题,则可能需要检查我们构建所使用的 cmake 变量。请参阅本页的最后一节以获取帮助。
如果您已成功使用源目录一段时间,在从 main
分支合并最新更改后,您可能会遇到重建 onnx-mlir
的困难。
以下是您可以执行的几个步骤。如果其中任何一个适用,建议删除 onnx-mlir/build
子目录,并使用 cmake
命令从头开始重建。
如果最新的 onnx-mlir
main
分支已移至 llvm-project
的新 commit 级别,构建过程通常会遇到与 LLVM 和 MLIR 代码相关的多个编译器故障。
所需级别可在 Building ONNX-MLIR 页面的第一个代码框中,位于 git checkout
命令旁边。
代码中使用的级别可以通过在 llvm-project
子目录中执行 git log
来查找。
如果不匹配,请将 llvm 项目更新到所需级别。
通常,当我们更新 ONNX op 级别时,会在 third_party/onnx
子目录中产生新软件。未能更新该代码通常会导致与 ONNX dialect 代码相关的编译器故障。
更简单的方法是删除 third_party
目录,然后使用 git submodule update --init --recursive
重新安装代码。
有时 dialect 的更新需要整个构建目录重新构建。您可能会看到的典型错误是缺少声明,例如对 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
目标。
编译 ONNX-MLIR 时可以使用 LLVM 和 ONNX-MLIR 的以下 CMake 变量。
MLIR_DIR:PATH MLIR cmake 模块在 llvm-project 构建或安装目录中的路径(例如,c:/repos/llvm-project/build/lib/cmake/mlir)。如果 **MLIR_DIR** 在之前的 cmake 调用中未设置,则需要此变量。
LLVM_EXTERNAL_LIT:PATH lit 工具的路径。默认为空字符串,如果可能,LLVM 会根据 **MLIR_DIR** 查找工具。当 **MLIR_DIR** 指向安装目录时,需要此变量。