资讯动态

CANN/tensorflow NPURunConfig调试功能

发布时间:2026/8/20 1:58:43 来源:尧图企业网站定制
功能调试【免费下载链接】tensorflowAscend TensorFlow Adapter项目地址: https://gitcode.com/cann/tensorflowenable_exception_dump是否dump异常算子数据。0关闭异常算子数据dump功能。1开启普通ExceptionDumpdump异常算子的输入输出数据、tensor描述信息shape、dtype、format等以及workspace信息。dump数据存储路径优先级为环境变量NPU_COLLECT_PATH 环境变量ASCEND_WORK_PATH 默认路径当前脚本执行路径下的extra-info目录。2默认值开启LiteExceptionDumpdump异常算子的输入输出数据、workspace信息、Tiling信息等导出的数据用于分析AI Core Error问题关于AI Core Error问题的信息收集及定位详细说明请参见《故障处理》手册中的“典型故障专题 AI Core Error问题定位专题”。dump数据存储路径优先级为环境变量ASCEND_WORK_PATH 默认路径指当前脚本执行路径下的extra-info/data-dump/device_id目录。[!NOTE]说明 若配置了环境变量NPU_COLLECT_PATH不论配置项“enable_exception_dump”的取值如何都按照“1普通ExceptionDump”进行异常算子数据dump且dump数据存储在环境变量NPU_COLLECT_PATH的指定目录下。关于环境变量的详细说明可参见《环境变量参考》。配置示例config NPURunConfig(enable_exception_dump1)op_debug_configGlobal Memory内存检测功能开关。取值为.cfg配置文件路径配置文件内多个选项用英文逗号分隔oom在算子执行过程中检测Global Memory是否内存越界。算子编译时会在当前执行路径下的kernel_meta文件夹中保留.o算子二进制文件和.json文件算子描述文件并加入如下检测逻辑inline __aicore__ void CheckInvalidAccessOfDDR(xxx) { if (access_offset 0 || access_offset access_extent ddr_size) { if (read_or_write 1) { trap(0X5A5A0001); } else { trap(0X5A5A0002); } } }用户可配合使用dump_cce参数在生成的.cce文件中查看上述代码。编译过程中若存在内存越界会抛出“EZ9999”错误码。dump_cce算子编译时在当前执行路径下的kernel_meta文件夹中保留算子的cce文件*.cce算子二进制文件*.o以及算子描述文件*.json。dump_loc算子编译时在当前执行路径下的kernel_meta文件夹中保留算子的cce文件*.cce算子二进制文件*.o算子描述文件*.json以及python-cce映射文件*_loc.json。ccec_O0算子编译时开启ccec编译器的默认编译选项-O0此编译选项针对调试信息不会执行任何优化操作。ccec_g 算子编译时开启ccec编译器的编译选项-g此编译选项相对于-O0会生成优化调试信息。check_flag算子执行时检测算子内部流水线同步信号是否匹配。算子编译时在生成的kernel_meta文件夹中保留.o算子二进制文件和.json文件算子描述文件并加入如下检测逻辑set_flag(PIPE_MTE3, PIPE_MTE2, EVENT_ID0); set_flag(PIPE_MTE3, PIPE_MTE2, EVENT_ID1); set_flag(PIPE_MTE3, PIPE_MTE2, EVENT_ID2); set_flag(PIPE_MTE3, PIPE_MTE2, EVENT_ID3); .... pipe_barrier(PIPE_MTE3); pipe_barrier(PIPE_MTE2); pipe_barrier(PIPE_M); pipe_barrier(PIPE_V); pipe_barrier(PIPE_MTE1); pipe_barrier(PIPE_ALL); wait_flag(PIPE_MTE3, PIPE_MTE2, EVENT_ID0); wait_flag(PIPE_MTE3, PIPE_MTE2, EVENT_ID1); wait_flag(PIPE_MTE3, PIPE_MTE2, EVENT_ID2); wait_flag(PIPE_MTE3, PIPE_MTE2, EVENT_ID3); ...用户可配合使用dump_cce参数在生成的.cce文件中查看上述代码。编译过程中若存在算子内部流水线同步信号不匹配的情况会在有问题的算子处超时报错报错信息示例为Aicore kernel execute failed, ..., fault kernel_name算子名,... rtStreamSynchronizeWithTimeout execute failed....配置示例config NPURunConfig(op_debug_config/root/test0.cfg)其中test0.cfg文件信息为op_debug_config ccec_O0,ccec_g,oom使用约束算子编译时如果用户不想编译所有AI Core算子而是指定某些AI Core算子进行编译则需要在上述test0.cfg配置文件中新增op_debug_list字段算子编译时只编译该列表指定的算子并按照op_debug_config配置的选项进行编译。op_debug_list字段要求如下支持指定算子名称或者算子类型。算子之间使用英文逗号分隔若为算子类型则以“OpType::typeName“格式进行配置支持算子类型和算子名称混合配置。要编译的算子必须放在op_debug_config参数指定的配置文件中。test0.cfg文件配置示例如下op_debug_config ccec_g,oom op_debug_listGatherV2,opType::ReduceSum模型编译时GatherV2、ReduceSum算子按照ccec_g,oom选项进行编译。说明开启ccec编译选项的场景下即ccec_O0、ccec_g选项会增大算子Kernel*.o文件的大小。动态shape场景下由于算子编译时会遍历可能存在的所有场景最终可能会导致由于算子Kernel文件过大而无法进行编译的情况此种场景下建议不要开启ccec编译选项。 由于算子kernel文件过大而无法编译的日志显示如下message:link error ld.lld: error: InputSection too large for range extension thunk ./kernel_meta_xxxxx.o:(xxxx)ccec编译选项ccec_O0和oom选项不可同时开启会导致AI Core Error报错报错信息示例如下...there is an aivec error exception, core id is 49, error code 0x4 ...此参数取值为dump_cce、dump_loc时可通过“debug_dir”参数指定调试相关过程文件的存放路径。配置编译选项oom、dump_cce、dump_loc时若模型中含有如下通算融合算子算子编译目录kernel_meta中不会生成下述算子的*.o、*.json、*.cce文件。MatMulAllReduce MatMulAllReduceAddRmsNorm AllGatherMatMul MatMulReduceScatter AlltoAllAllGatherBatchMatMul BatchMatMulReduceScatterAlltoAll若配置了NPU_COLLECT_PATH环境变量不支持打开“检测Global Memory是否内存越界”的开关即不支持将此参数指定的配置文件中配置“oom”否则编译出来的模型文件或算子kernel包在使用时会报错。debug_dir用于配置保存算子编译生成的调试相关的过程文件的路径包括算子.o/.json/.cce等文件。算子编译生成的调试文件存储优先级为配置参数“debug_dir” 环境变量ASCEND_WORK_PATH 默认存储路径当前脚本执行路径。关于环境变量ASCEND_WORK_PATH的详细说明可参见《环境变量参考》。配置示例config NPURunConfig(debug_dir/home/test)export_compile_stat用户配置图编译过程中是否生成算子融合信息的结果文件fusion_result.json支持如下取值0不生成算子融合信息结果文件。1默认值程序运行正常退出时生成算子融合信息结果文件。2图编译完成时即生成算子融合信息结果文件即如果图编译已完成后续程序中断也会生成算子融合信息结果文件。fusion_result.json文件于记录图编译过程中使用的融合规则文件中关键字段含义如下session_and_graph_id__xx_xx_表示融合结果所属线程和图编号。graph_fusion表示图融合。ub_fusion表示UB融合Ascend 950PR/Ascend 950DT不支持UB融合不会生成该信息。match_times表示图编译过程中匹配到的融合规则次数。effect_times表示实际生效的次数。repository_hit_times优化UB融合知识库命中的次数Ascend 950PR/Ascend 950DT不支持UB融合不会生成该信息。说明若环境中未配置环境变量ASCEND_WORK_PATH算子融合信息结果保存至当前执行目录的fusion_result.json文件若环境中配置了环境变量ASCEND_WORK_PATH则保存至$ASCEND_WORK_PATH/FE/${进程号}/fusion_result.json文件。通过“fusion_switch_file”参数关闭的融合规则不会在fusion_result.json中呈现。配置示例config NPURunConfig(export_compile_stat1)【免费下载链接】tensorflowAscend TensorFlow Adapter项目地址: https://gitcode.com/cann/tensorflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价