VHLO 核对清单

如需了解 VHLO,请参阅 vhlo.md

促成不兼容的更改

所有会产生兼容性影响的更改都必须通过 RFC 流程。 包括添加、弃用或重命名功能。启用 RFC 后 必须完成以下步骤:

1. 提高 Version.h 中的版本号并更新版本日志

在更新 VHLO 操作、属性、类型或转化之前,将 Version.h 中的次要版本号, 并更新 VhloDialect.td 中的版本日志

任何新增的 VHLO 功能都将使用此提升版本,例如 递增 VhloOps.td 中的新操作 0.10.0 --> 0.11.0 将使用:

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

2. 添加必需的 VHLO 实现和转换

集成新功能所需的具体代码会有所不同,但对于大多数 以下部分需要更改:

3. 添加 / 更新单元测试

不兼容的更改的促成者有正面和 功能的负面单元测试,以及兼容性单元测试。

兼容性单元测试涉及更新 stablehlo_legalize_to_vhlo.mlir 确保 StableHLO 使用最新版 VHLO 进行往返,以及 与所需的任何其他向前或向后兼容性测试相同。例如: 如果在版本 X 中以 Y = X - 1 添加新操作,请添加类似如下的测试文件: 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