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 を更新して、最新バージョンの VHLO との StableHLO ラウンドトリップを確実に行うとともに、必要な上位互換性テストまたは下位互換性テストを追加します。たとえば、Y = X - 1 でバージョン X に新しいオペレーションを追加する場合は、バージョン X より前にオペレーションがサポートされていないことを示す vhlo_to_version_downgrade_invalid.0_Y_0.mlir などのテストファイルを追加します。オペレーションの新しいバージョンを追加する場合は、オペレーションを正常にダウングレードできることを示す 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