Skip to content

Compile_vs_Runtime Check Specification

huzhiqiang edited this page Feb 6, 2020 · 6 revisions

单测规范:Op单测必须通过“编译时/运行时一致性检查”


Compile_vs_runtime Check Is Required for Op Test (English Version)


规范概要:

  • 第1节,背景
  • 第2节,本规范检查内容
  • 第3节,CI检查方法
  • 第4节,未通过检查的修改建议
  • 第5节,验证是否满足本规范

补充说明:

此规范在执行过程中,可能存在未考虑周全的地方。请大家积极反馈意见,在实施过程中不断补充与完善。

1. 背景

OP在编译时(compile-time)和运行时(runtime)会分别执行一次infershape()。为了保证两次运算信息的一致性,本规范在op_test里面添加了check_compile_vs_runtime方法,目前主要检查当输出为LoDTensor时,compile-time和runtime的lod_level是否一致。本规范在CI中添加了增量检查,除特殊情况外所有Op单测都需要调用check_compile_vs_runtime方法。

2. 本规范检查内容。

检查范围:Op的单测脚本中,所有继承了OpTest的测试样例,都会自动调用check_compile_vs_runtime方法进行“编译时/运行时信息一致性检查”。

特殊情况

除特殊情况外,其他的单测均被要求进行"编译时/运行时一致性”检查。

3. CI检查方法

当白名单文件compile_vs_runtime_white_list.py被修改时,会触发CI增量检测,需要特定人员审核并描述原因。

4. 未通过检查的修改建议

当单测未通过check_compile_vs_runtime的监控,可以参考以下建议进行修改:

  • 检查op->infershape()方法是否设置了输出的lod_level,并与运行时的lod_level一致。请参考示例

5. 验证是否满足本规范

OP单测进行验证:

  • 将该OP从白名单(python/paddle/fluid/tests/unittests/white_list/compile_vs_runtime_white_list.py中的COMPILE_RUN_OP_WHITE_LIST删除;
  • 在本地或者提交PR执行该单测;
  • 如果执行没有错误,则验证该OP单测满足本规范。如果报错提示无法通过统一误差阈值的前向和反向检查,则需要参考“4. 未满足本规范的修改建议”继续修改。

若遇到其他问题,请联系 @DannyIsFunny

Clone this wiki locally