StableHLO 仕様チェックリスト

このドキュメントでは、仕様に対する変更を確認するためのガイドラインについて概説します。現時点では、これらの変更は通常、複数のソースの複数の項目をチェックします。そのため、このドキュメントではレビューを簡素化するためにすべてを要約しています。

  1. status.md の [Specification] 列に [yes] と表示されていることを確認します。
  2. セクション タイトルが ODS 内の演算のニーモニックと一致しているかどうかを確認します。
  3. 「セマンティクス」セクションが XLA のオペレーション セマンティクスと一致するかどうかを確認します。
  4. [Inputs] セクションと [Outputs] セクションが次の条件を満たしているかどうかを確認します。
    1. ODS と同じアイテムをリストアップします。
    2. HloInstruction::CreateFromProto と同じアイテムをリストします。
    3. ODS とまったく同じように並べ替えられます。
    4. 不一致がある場合は、対応するチケットがあるかどうかを確認します。
  5. [制約] セクションで次の設定を確認します。
    1. XLA の shape_inference.cc と一致します。
    2. XLA の hlo_verifier.cc と一致します。
    3. ODS と一致します。
    4. StablehloOps.cpp と一致します。
    5. 不一致がある場合は、対応するチケットがあるかどうかを確認します。それらのチケットをすべて、可能な限り具体的な場所で、仕様にリンクします(たとえば、チケットが、実装されていない制約に関するものである場合は、その制約に直接チケットをリンクします)。
    6. ODS と StablehloOps.cpp の対応する部分が仕様と一致している場合は、status.md の [Verification] 列と [Type Inference] 列に「yes」と表示されていることを確認します。
  6. [Example](例)セクションが以下の項目にないかどうかを確認します。
    1. 例は 1 つだけです。(今後、StableHLO インタープリタ テストスイートの他の例へのリンクを掲載する予定です)。
    2. コードサンプルに対して stablehlo-opt を実行して、有効な MLIR 構文を使用します。
    3. stablehlo-opt -mlir-print-op-generic を実行することで取得できる汎用の MLIR 構文を使用します(プリティ プリンタの変更で仕様を変更しなくても済むよう、仕様における汎用構文のみ使用しています)。
  7. 演算の ODS の description が次の条件を満たしていることを確認します。
    1. 仕様の最初の一文を含めます。
    2. 仕様の対応するセクションへのリンクも記載しています。
    3. 次に、仕様と同じ例を使用しますが、stablehlo-opt を実行すると取得できるわかりやすい構文を使用します。
  8. 検証と型推論制約の実装に関連するファイルが、以下のガイドラインに従っていることを確認します。
    1. StablehloOps.td のガイドライン #1 に従います。
    2. TypeInference.cppStablehloOps.cpp のガイドライン #2 に従ってください。
    3. ops_stablehlo.mlir のガイドライン #5 に従います。
    4. infer_stablehlo.mlir のガイドライン 6 に従います。