在本文档中,我们总结了实施和查看 op。我们有意包含一些辅助操作 关于验证器和类型推断的概念, 与解释器实现放在一起。
在实现操作时
- 在 PR 说明中提供明确编写的测试策略 类似于 这个 在审核验证和类型推断时参考 方法和相应的测试。审核人员会仔细检查 说明是否全面。
- 咨询 hlo_evaluator 找出棘手的实现细节和潜在的功能缺陷。
- 如果您发现任何 bug,请提交相应软件组件的工单。 或功能缺失问题
在实现相应操作后
在 StablehloOps.td 中:
- 确保操作的 ODS 中的
summary
遵循标准格式。 (相关票) 添加引用限制条件标签(例如
Cn
或In
)的注释(来自 对于操作XyzOp
,格式为xyz_cn
或xyz_in
ODS 中的约束条件与规范之间的对应关系。通过 以下示例展示了如何将限制条件标签添加为注释 以及 mlirTraits
和TypeConstraints
。备注xyz_c4
是指 在StableHLO_FooOp
类中定义的约束条件(例如StableHLO_ShapedInterfaceOp
、StableHLO_UnaryElementwiseOp
、StableHLO_Op
等)。def StableHLO_XyzOp: StableHLO_FooOp<"xyz", [Trait1, Trait2 /*xyz_c1, xyz_c2*/, InferTensorType /*xyz_c3*/]> { /*xyz_c4*/ ... let summary = "Xyz operation"; let arguments = (ins 1DTensorOf<[HLO_Float]>:$a, /*xyz_c5, xyz_i1*/ HLO_Tensor:$b, /*xyz_i2*/ .... ); );
- 确保操作的 ODS 中的
在 TypeInference.cpp 中 和 StablehloOps.cpp:
- 删除诸如“请验证以下属性: ...”。
- 添加引用限制条件标签(例如
Cn
或In
)的注释(来自 对于操作XyzOp
,采用xyz_cn
或xyz_in
格式的规范,用于标识 验证程序的哪些部分和形状函数对应于哪个部分 的约束。- 可以添加带有多个限制条件标签的注释,也可以将
多个注释具有相同的约束条件标签。这完全取决于
限制条件的实施方式。如果存在连续约束条件,
将其压缩为
xyz_cn...xyz_cm, xyz_in...xyz_jn
。 - 如果 还是规范中的实施,请确保 反映该差异的待解决问题。
- 可以添加带有多个限制条件标签的注释,也可以将
多个注释具有相同的约束条件标签。这完全取决于
限制条件的实施方式。如果存在连续约束条件,
将其压缩为
在解释器测试中:
- 添加一个名为
<op_mnemonic>.mlir
的文件。 - 按照测试准则编写测试。
- 添加一个名为
在 testdata 目录中:
- 运行新添加的操作所涵盖的所有已停用测试。
- 如果测试通过,可通过将
RUN-DISABLED
转换为RUN
来启用测试。 - 如果测试因某种原因(精度不匹配除外)失败,请修复 实现/测试。
- 对于精度不匹配的情况,请使用
RUN-DISABLED(#1278)
标记测试(如果 (还未完成)。
在 ops_stablehlo.mlir 中:
- 确保每项测试都至少有一项测试(阳性或阴性) 验证器和类型推断方法中的约束条件;限制条件 不在 ODS 中的涵盖范围内。这类检测大多为阴性 测试来确认未满足约束条件或不满足约束条件为正值, 正确。
- 确保与被测操作相关的所有测试都已放置 。
- 确保与被测操作相关的所有测试均
附加一个
CHECK-LABEL
指示宏。 - 使用以下格式选择测试的函数名称
xyz_cn_im_...
,用于测试约束条件Cn
、Im
、 等。XyzOp
如果所提议的格式不符合 应用,但保留现有名称。 - 完成上述步骤后,对与操作相关的所有测试进行排序 被测对象(根据函数名称的字母顺序)。
- 继续添加测试,直到出现 ccov 显示该操作的覆盖率不低于 90%。
在 infer_stablehlo.mlir 中:
- 确保与形状推理测试相关的所有约束条件都存在 。
- 将任何形状推理测试从 ops_stablehlo.mlir 中移出。 复制到此文件中
在 spec.md 中:
- 添加指向“
stablehlo/tests/interpret/<op_mnemonic>.mlir
”的链接 到“示例”部分部分 (例如,“更多示例”)。 - 请确保规范中只有 1 个示例。
- 请确保规范示例符合测试指南。
- 确保规范示例测试是可解释的。
- 请确保规范示例与 ODS 中的示例相同。
- 添加指向“
在 status.md 中:
- 更新“翻译工具”列设为
yes
。
- 更新“翻译工具”列设为