在本文档中,我们总结了有关如何查看规范变更的指南。目前,这些更改通常涉及检查多个来源中的多项内容,为简化回顾,本文总结了所有这些内容:
- 检查 status.md 中的“规范”列是否显示为“是”。
- 检查部分标题是否与 ODS 中的操作的助记符匹配。
- 检查“语义”部分是否与 XLA 的操作语义匹配。
- 检查“Inputs”(输入)和“Outputs”(输出)部分是否:
- 列出与 ODS 相同的项。
- 列出与 HloInstruction::CreateFromProto 相同的项。
- 排序方式与 ODS 完全相同。
- 如果存在任何不匹配,请检查是否存在相应的工单。
- 检查“限制条件”部分是否:
- 与 XLA 的 shape_inference.cc 匹配。
- 匹配 XLA 的 hlo_verifier.cc。
- 与 ODS 匹配。
- 与 StablehloOps.cpp 匹配。
- 如果存在任何不匹配,请检查是否存在相应的工单。在尽可能具体的位置链接规范中的所有工单(例如,如果工单与尚未实现的约束条件相关,请直接在相应限制条件中关联工单)。
- 如果 ODS 和 StablehloOps.cpp 的相应部分符合规范,请检查 status.md 中的“Verification”和“类型推断”列是否显示“yes”。
- 检查“示例”部分是否:
- 只有一个样本。(将来,我们会提供来自 StableHLO 解释器测试套件的更多示例的链接。)
- 通过对代码示例运行
stablehlo-opt
,使用有效的 MLIR 语法。 - 使用通用 MLIR 语法,该语法可通过运行
stablehlo-opt -mlir-print-op-generic
获取(我们会遵循规范中的通用语法,以免无需更改有关 Interestprinter 更改的规范)。
- 检查操作的 ODS 中的
description
:- 包含规范的第一句。
- 然后链接到规范的相应部分。
- 然后,使用与规范相同的示例,但使用美观的语法,该语法可通过运行
stablehlo-opt
获取。
- 检查与实现验证和类型推断限制相关的文件是否遵循下述准则:
- 遵循 StablehloOps.td 的准则 1。
- 请遵循 TypeInference.cpp 和 StablehloOps.cpp 的准则 #2。
- 请遵循 ops_stablehlo.mlir 的准则 #5。
- 请遵循 infer_stablehlo.mlir 的准则 #6。