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 の実装とコンバージョンを追加する
新しい機能を統合するために必要なコードは異なりますが、ほとんどの場合、 次の部分を変更する必要があります。
- 新しいオペレーションの場合:
<ph type="x-smartling-placeholder">
- </ph>
- VhloOps.td に演算を追加します。
- StablehloLegalizeToVhlo.cpp で StableHLO → VHLO 変換を追加
- VhloLegalizeToStablehlo.cpp で VHLO → StableHLO 変換を追加
- 既存のオペレーションの新しいバージョンの場合:
<ph type="x-smartling-placeholder">
- </ph>
- VhloOps.td に演算を追加します。
- MapStablehloToVhlo.h で StableHLO を VHLO マッピングに更新
- VhloToVersion.cpp で新旧の演算バージョン間の変換を追加する
- 新しいタイプまたは属性の場合:
<ph type="x-smartling-placeholder">
- </ph>
- 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
より前のバージョンです。演算の新しいバージョンを追加する場合は、
オペレーションをダウングレードできることを示す 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