VHLO 檢查清單

如要瞭解 VHLO,請參閱 vhlo.md

提供不相容的變更

所有可能影響相容性的變更都必須經過 RFC 程序。包括新增、淘汰或重新命名功能。RFC 核准後,您必須完成下列步驟:

1. 在 Version.h 中調高版本號碼,並更新版本記錄

在更新 VHLO 運算、屬性、類型或轉換之前,請先在 Version.h 中增加次要版本編號,然後更新 VhloDialect.td 中的版本記錄

任何新增的 VHLO 功能都會使用這個串場廣告版本,例如擴散 0.10.0 --> 0.11.0 後,VhloOps.td 中的新運算會使用:

VHLO_Op<"abs_v2", "0.11.0", "current">

2. 新增必要的 VHLO 導入和轉換

整合新功能所需的確切程式碼將有所不同,但在大部分情況下,必須變更下列事項:

3. 新增/更新單元測試

不相容變更的貢獻者負責執行該功能的正面和負面單元測試,以及相容性單元測試。

相容性單元測試包括更新 stablehlo_legalize_to_vhlo.mlir,以確保 StableHLO 可與最新版的 VHLO 進行往返,以及任何必要的額外前向或回溯相容性測試。例如,如果透過 Y = X - 1X 版本新增運算,請新增測試檔案 (例如 vhlo_to_version_downgrade_invalid.0_Y_0.mlir),顯示該運算在 X 版本之前不受支援。如要新增 Ops 版本,請新增測試檔案 (例如 vhlo_to_version_downgrade.0_Y_0.mlir),顯示運算成功降級。

如果作業含有預設屬性,請加入測試,證明預設值已正確序列化和反序列化。

4. 新增版本化序列化測試

stablehlo_legalize_to_vhlo.mlir 中新增測試後,請將具有最大版本的版本化測試檔案複製到新版本的新檔案中,並將新測試新增至該檔案。您還需要使用 stablehlo-translate 建立相關聯的 bytecode 檔案:

export TARGET_VERSION=1.X.0
export TARGET_FILENAME=${TARGET_VERSION//./_}
stablehlo-translate --serialize --target=$TARGET_VERSION --strip-debuginfo stablehlo/tests/vhlo/stablehlo_legalize_to_vhlo.$TARGET_FILENAME.mlir > stablehlo/tests/vhlo/stablehlo_legalize_to_vhlo.$TARGET_FILENAME.mlir.bc