在 MLIR 編譯器基礎架構中表示和參考降階 ONNX 模型
此專案由 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
目標。
若要執行 doc ONNX-MLIR 測試,請在安裝下方顯示的第三方 ONNX 後使用以下命令。首次安裝第三方 ONNX 專案的詳細資訊請參閱此處。請注意,關鍵是要安裝我們第三方子目錄中列出的 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 指向 llvm-project 建置或安裝目錄內 mlir cmake 模組的路徑(例如,c:/repos/llvm-project/build/lib/cmake/mlir)。如果先前 cmake 調用未設定 MLIR_DIR,則這是必需的。
LLVM_EXTERNAL_LIT:PATH 指向 lit 工具的路徑。預設為空字串,如果可能,LLVM 將根據 MLIR_DIR 找到該工具。當 MLIR_DIR 指向安裝目錄時,這是必需的。