
oil-gas-ops-prospect 测试体系全解析UT/ST/精度/性能四类用例一条命令跑通【免费下载链接】oil-gas-ops-prospect面向油气勘探oil gas exploration领域的昇腾自定义算子库。仓名即 oil-gas-ops油气算子 prospect勘探目标面向地震成像、全波形反演等勘探计算场景项目地址: https://gitcode.com/cann/oil-gas-ops-prospectoil-gas-ops-prospect是面向油气勘探场景地震成像、全波形反演的昇腾 CANN 自定义算子库它的测试体系把UT、ST、精度、性能四类用例统一到一条命令下bash build.sh -u跑完自动生成 Markdown 测试报告。本文带你完整看懂这套测试体系是怎么组织的、每一类测什么、如何按需选择子集运行。 一张表看懂四类核心用例各测什么类别测什么代码位置需要 NPUUT-host切分算法UB 预算、对齐、退化输入、核间覆盖tests/ut/op_host/op/test_*_tiling.cpp❌UT-device上板真正 launch kernel内联小 tensorexamples/aclnn/op/✅ST多 shape 两段式 aclnn numpy 真值比对tests/st/aclnnOpType/✅精度Python 对拍 PyTorch / autograd看相对误差tests/ascendc/op/test_*_npu.py --mode precision✅性能Python 计时、加速比同上--mode perf✅分类逻辑很简单按目的分不按“有没有卡”分。切分逻辑不依赖硬件就能验证而“UT 要上板”指的是 UT-device 必须在 NPU 上把算子跑起来。完整说明见 tests/README.md。UT先验证切分再验证上板UT-host纯 CPU针对 tiling 切分算法做单元测试例如 test_complex_mul_tiling.cpp 覆盖 UB 预算、对齐、退化输入等边界场景由 tests/ascendc/ophost/CMakeLists.txt 汇总编译成ophost_ut。UT-device上板如 examples/aclnn/complex_mul/ 下的 C 两段式小样例把 kernel 真正 launch 起来是算子最轻量的上板冒烟。ST多 shape 循环 numpy 真值ST系统测试比 UT-device 更重按cases.json循环多个 shape每次用gen_data.py生成 numpy golden 数据再用 aclnn 两段式 API 在 NPU 上执行并逐元素比对。以 ComplexMul 为例cases.json 里就登记了2d_8x64、small_2x2、rank1_64三种形态目录结构与运行方式见 tests/st/aclnnComplexMul/README.md。当前登记的 ST 清单共 4 个算子aclnnComplexMul、aclnnComplexMulGrad、aclnnFusedBiasSoftmax、aclnnFusedSoftmaxGrad统一登记在 tests/suites.json。精度对拍 PyTorch 看相对误差精度测试走 Python APIpybind不是 C aclnn 路径。以 tests/ascendc/complex_mul/ 为例test_complex_mul_npu.py --mode precision会把自定义算子的输出与等价的 PyTorch 逐元素表达式对拍分别打印前向、反向、autograd 封装的相对误差退出码0即精度达标。验收标准可参考 docs/zh/develop/precision_acceptance_template.md。性能Python 计时算加速比同一脚本加--mode perf即切换为性能模式输出形如[perf] fwd torch...ms ascendc...ms speedup...x直接给出相对 PyTorch 的加速比。composite 算子如 conv3d_custom通过bench_conv3d_custom_perf.py走同一套--mode precision/perf协议接入见 tests/composite/conv3d_custom/。 一条命令跑通build.sh -u 子集开关-u表示「进入测试模式」不带子集开关就全量跑跟某一类的开关就只跑那一类开关可自由组合# 四类一起UT ST 精度 性能 bash build.sh -u --ut --st --precision --perf # 只跑切分无 NPU 也能跑 bash build.sh -u --ophost # 只跑 ST并过滤指定算子 bash build.sh -u --st --opscomplex_mul,fused_bias_softmax # 只跑性能 指定算子 bash build.sh -u --perf --opscomplex_mul常用开关速查命令跑哪些类无 NPU 时bash build.sh -u全部上板类SKIP不失败bash build.sh -u --ophost只 UT-host可跑bash build.sh -u --st只 STFAILbash build.sh -u --precision只精度FAILbash build.sh -u --perf只性能FAILbash build.sh -u --triton/--composite/--aotCPU 侧 pytest 类可跑两个实用细节无 NPU 环境直接bash build.sh -u上板类会自动SKIP而不报错适合在普通 Linux 机器上先跑 UT-host Triton CPU AOT 编译检查。辅助开关--gtest_filterpattern只作用于 UT-host、--noexec只编译不执行、--reportpath自定义报告路径。 跑完产出什么测试报告三件套跑测统一由 scripts/run_tests.py 驱动build.sh内部调用完成后自动写出三份产物到test_result/test_report_时间戳.md—— 本次运行的 Markdown 报告test_report.md—— 最新一次报告test_results.json—— 结构化数据是开源测试报告的数据源需要对外发布测试报告时追加--opensource-report即可按本次 JSON 生成完整开源测试报告跑本仓全部套件含文档、出包、安装、接口冒烟及 FFT 大形态与性能微基准# 全量跑测并生成开源报告 bash build.sh -u --opensource-report # 已有 JSON 时只重新生成报告、不再跑测 bash build.sh --opensource-report️ 测试目录结构速览tests/ ├── suites.json # ST / 精度 / UT-device 清单 ├── ut/op_host/op/ # UT-host ├── st/aclnnOpType/ # ST ├── _common/aclnn/ # ST 脚手架 ├── ascendc/op/test_*_npu.py # 精度 性能 ├── triton/real_fft/ # Triton CPU 精度 └── composite/conv3d_custom/ # Composite CPU examples/aclnn/op/ # UT-deviceC 两段式小 launch新增算子时测试按固定位置落位即可UT-host 放tests/ut/op_host/op/UT-device 放examples/aclnn/op/ST 放tests/st/aclnnOpType/精度脚本放tests/ascendc/op/后三项在 tests/suites.json 登记-u全量跑测时会自动纳管。✅ 小结这套测试体系好在哪一条命令覆盖全链路从切分算法UT-host到上板冒烟UT-device、多 shape 系统测试ST再到精度对拍与性能计时bash build.sh -u一次跑完。无卡也能测UT-host、Triton CPU、AOT 编译检查不依赖 NPU普通开发机即可先行验证上板类在无 NPU 时优雅 SKIP。算子级过滤--opscomplex_mul,fused_bias_softmax让回归验证只聚焦改动过的算子省时省心。结果可追溯JSON Markdown 双报告直接支撑开源测试报告生成与发布门禁。想进一步了解各类用例的编写细节可继续阅读 tests/README.md、tests/st/aclnnComplexMul/README.md 与 examples/README.md。【免费下载链接】oil-gas-ops-prospect面向油气勘探oil gas exploration领域的昇腾自定义算子库。仓名即 oil-gas-ops油气算子 prospect勘探目标面向地震成像、全波形反演等勘探计算场景项目地址: https://gitcode.com/cann/oil-gas-ops-prospect创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考