如要瞭解 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 導入和轉換
整合新功能所需的確切程式碼將有所不同, 以下部分需要變更:
- 針對新的作業:
- 在 VhloOps.td 中新增運算
- 在 StablehloLegalizeToVhlo.cpp 中新增 StableHLO → VHLO 轉換
- 在 VhloLegalizeToStablehlo.cpp 中新增 VHLO → StableHLO 轉換
- 針對現有作業的新版本:
- 在 VhloOps.td 中新增運算
- 將 MapStablehloToVhlo.h 中的 StableHLO 與 VHLO 對應更新
- 在 VhloToVersion.cpp 中於新舊運算版本之間新增轉換
- 新類型或屬性:
- 在 VhloTypes.td 中新增類型 或是 VhloAttrs.td 中的屬性
- 在 StablehloLegalizeToVhlo.cpp 中新增 StableHLO → VHLO 轉換
- 在 VhloLegalizeToStablehlo.cpp 中新增 VHLO → StableHLO 轉換
3. 新增 / 更新單元測試
不相容變更的推動者必須同時 功能排除單元測試,以及相容性單元測試。
相容性單元測試包含更新 stablehlo_legalize_to_vhlo.mlir
確保往返 StableHLO 的來回行程是最新版的 VHLO
您必須遵守額外的前瞻相容性測試,例如:
如果使用 Y = X - 1
在 X
版本新增運算,請新增測試檔案,例如
不支援顯示運算的 vhlo_to_version_downgrade_invalid.0_Y_0.mlir
在第 X
版之前。如果新增 op 的新版本,請新增測試檔案,例如
vhlo_to_version_downgrade.0_Y_0.mlir
:顯示可以降級運算
如果您的運算有預設屬性,請納入指出預設值的測試 正確的序列化及去序列化程序。
4. 新增版本化序列化測試
在 stablehlo_legalize_to_vhlo.mlir
中新增測試後,請複製版本測試
然後將新版本的檔案加入新版本的新檔案中
新的測試檔案此外,您還必須建立相關聯的
使用 stablehlo-translate
的位元碼檔案:
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