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 とラウンドトリップすることを確認し、 追加の前方互換性テストや下位互換性テストが 必要になる場合がありますたとえば 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 にテストを追加した後、バージョニングされたテストをコピーする 新しいファイルに変換して、現在のバージョンを そのファイルに新しいテストが追加されます。また、新しい Google Cloud リソースに 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