Dump工具应用场景——算子执行报错(输入数据值越界)

现象

部分算子在错误的输入下可能会报错,例如Gather算子,获取执行下标的数据,如果下标越界,算子访存越界会执行失败。

思路

框架默认会开启海思的异常dump,但其支持的算子有限,执行失败后可以先查看当前目录下是否有extra-info目录,如果有数据,即可找海思同事定位。

如果没有数据,需要开启框架的异常Dump保存报错算子输入,查看输入是否异常。

配置

  • 配置项:“op_debug_mode”: 4
  • 相关配置:不支持指定step(iteration字段不生效),不支持指定算子(kernels字段不生效),不支持执行统计信息/Tensor(saved_data默认为Tensor),不支持异步。
{
    "common_dump_settings": {
        "op_debug_mode": 4,
        "dump_mode": 0,
        "path": "/absolute_path",
        "net_name": "ResNet50",
        "iteration": "all",
        "saved_data": "tensor",
        "input_output": 0,
        "kernels": ["Default/Conv-op12"],
        "support_device": [0,1,2,3,4,5,6,7]
    },
    "e2e_dump_settings": {
        "enable": true,
        "trans_flag": true
    }
}

性能

性能膨胀约2倍

资源占用

磁盘

只存异常算子输出,占用少

显存

理论上不会增加显存占用