TTK插件系统扩展指南:自定义Golden生成函数和输入数据生成函数的完整教程

发布时间:2026/5/20 12:35:26

TTK插件系统扩展指南:自定义Golden生成函数和输入数据生成函数的完整教程 TTK插件系统扩展指南自定义Golden生成函数和输入数据生成函数的完整教程【免费下载链接】ops-test-kitTTKOps Test Tool Kit是CANN算子库提供的全链路、自动化、批量化算子测试框架帮助开发者快速完成算子批量功能验证、性能评估以及Golden值比对提升算子开发质量和效率。项目地址: https://gitcode.com/cann/ops-test-kitTTKOps Test Tool Kit是CANN算子库提供的全链路、自动化、批量化算子测试框架帮助开发者快速完成算子批量功能验证、性能评估以及Golden值比对提升算子开发质量和效率。本文将详细介绍如何通过TTK的插件系统扩展自定义Golden生成函数和输入数据生成函数让你的算子测试流程更加灵活高效一、TTK插件系统简介 TTK插件系统允许开发者通过自定义函数扩展框架功能主要支持两类扩展Golden生成函数用于生成算子的标准输出结果Golden值输入数据生成函数用于生成特定算子的测试输入数据插件系统的核心优势在于无需修改框架源码即可扩展功能支持算子级别的个性化测试逻辑保持测试代码与业务代码分离相关模块路径Golden函数注册ttk/user_defined_modules/op/golden_funcs/registry.py输入函数注册ttk/user_defined_modules/op/input_funcs/registry.py二、自定义Golden生成函数开发指南 ✨2.1 Golden生成函数基础Golden生成函数负责计算算子的预期输出结果用于与实际运行结果进行比对。TTK默认提供了多种常用Golden函数如golden_funcs { floor_div: numpy.floor_divide, neg: numpy.negative, acos: numpy.arccos, # 更多内置函数... }2.2 创建自定义Golden函数创建自定义Golden函数需遵循以下步骤创建Python文件在ttk/user_defined_modules/op/golden_funcs/目录下创建新文件如custom_golden.py实现函数逻辑定义计算Golden值的函数示例import numpy as np def custom_add_golden(input1, input2): 自定义加法算子的Golden生成函数 # 添加自定义逻辑如特殊数值处理 result np.add(input1, input2) # 对结果进行四舍五入处理 return np.round(result, decimals4)注册函数使用register_golden装饰器注册函数from ttk.user_defined_modules.op.golden_funcs.registry import register_golden register_golden(operator_names[custom_add], need_original_input_arraysFalse) def custom_add_golden(input1, input2): # 实现逻辑同上2.3 注册装饰器参数说明register_golden装饰器支持以下参数operator_names算子名称列表指定该函数适用于哪些算子need_original_input_arrays是否需要原始输入数据未经过预处理的dma_copy_op是否为DMA拷贝算子影响INF/NAN值处理三、自定义输入数据生成函数开发指南 3.1 输入数据生成函数基础输入数据生成函数用于为特定算子生成测试用例输入数据覆盖算子的各种使用场景。TTK通过register_input装饰器管理这些函数。3.2 创建自定义输入函数创建自定义输入函数的步骤与Golden函数类似创建Python文件在ttk/user_defined_modules/op/input_funcs/目录下创建新文件如custom_input.py实现函数逻辑定义生成输入数据的函数示例import numpy as np def generate_sparse_matrix_input(param): 为稀疏矩阵乘法生成输入数据 # 获取参数信息 shape param.get(shape, (1024, 1024)) sparsity param.get(sparsity, 0.9) # 生成稀疏矩阵 matrix np.random.rand(*shape) matrix[matrix sparsity] 0 return [matrix]注册函数使用register_input装饰器注册函数from ttk.user_defined_modules.op.input_funcs.registry import register_input register_input(operator_names[sparse_matmul]) def generate_sparse_matrix_input(param): # 实现逻辑同上四、插件使用与测试流程 4.1 配置插件路径通过命令行参数指定插件路径python -m ttk.cli.kernel --plugin /path/to/your/plugins --operator custom_add4.2 验证插件功能运行测试命令python -m ttk.cli.kernel --testcase case_store/kernel/custom_add.csv --plugin ./user_plugins查看测试报告测试结果将生成在results/目录下可通过 docs/Result_Analysis.md 指南进行结果分析。五、高级扩展技巧 5.1 处理特殊算子需求对于需要特殊处理的算子如需要原始输入数据可在注册时设置相应参数register_golden(operator_names[special_op], need_original_input_arraysTrue) def special_op_golden(original_inputs, processed_inputs): # original_inputs 包含未经预处理的原始输入数据 # processed_inputs 包含经过框架预处理的输入数据 return custom_process(original_inputs)5.2 调试自定义函数可通过以下方式调试自定义函数在函数中添加日志输出使用--debug命令行参数运行TTK查看logs/目录下的调试日志六、常见问题解决 ️Q1: 自定义函数不生效怎么办A: 检查以下几点确认插件路径是否正确指定检查函数注册是否使用了正确的算子名称查看日志文件中是否有注册错误信息Q2: 如何覆盖已注册的函数A: TTK会对重复注册的函数发出警告但后注册的函数会覆盖先注册的函数。建议在开发时使用唯一的算子名称进行测试。Q3: 是否支持为同一个算子注册多个函数A: 不支持每个算子只能注册一个Golden生成函数和一个输入数据生成函数。七、总结通过TTK插件系统开发者可以轻松扩展自定义Golden生成函数和输入数据生成函数满足特定算子的测试需求。这种灵活的扩展机制大大提升了TTK框架的适应性使算子测试工作更加高效和个性化。如果你想了解更多TTK的高级功能请参考官方文档各类算子测试指南任务执行指南用例生成指南开始你的TTK插件开发之旅吧如有任何问题欢迎参与项目讨论或提交Issue。【免费下载链接】ops-test-kitTTKOps Test Tool Kit是CANN算子库提供的全链路、自动化、批量化算子测试框架帮助开发者快速完成算子批量功能验证、性能评估以及Golden值比对提升算子开发质量和效率。项目地址: https://gitcode.com/cann/ops-test-kit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻