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 - 1 在版本 X 中添加了新操作,请添加一个测试文件(例如 vhlo_to_version_downgrade_invalid.0_Y_0.mlir),以表明该操作在版本 X 之前不受支持。如果添加操作的新版本,请添加一个类似 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