StableHLO 规范核对清单

在本文档中,我们总结了有关如何查看规范变更的指南。目前,这些更改通常涉及检查多个来源中的多项内容,为简化回顾,本文总结了所有这些内容:

  1. 检查 status.md 中的“规范”列是否显示为“是”。
  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”和“类型推断”列是否显示“yes”。
  6. 检查“示例”部分是否:
    1. 只有一个样本。(将来,我们会提供来自 StableHLO 解释器测试套件的更多示例的链接。)
    2. 通过对代码示例运行 stablehlo-opt,使用有效的 MLIR 语法。
    3. 使用通用 MLIR 语法,该语法可通过运行 stablehlo-opt -mlir-print-op-generic 获取(我们会遵循规范中的通用语法,以免无需更改有关 Interestprinter 更改的规范)。
  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