news 2026/6/26 18:43:21

CANN/ops-tensor算子测试编写指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/ops-tensor算子测试编写指南

算子测试编写指南

【免费下载链接】ops-tensorops-tensor 是 CANN (Compute Architecture for Neural Networks)算子库中提供张量类计算的基础算子库,采用模块化设计,支持灵活的算子开发和管理。项目地址: https://gitcode.com/cann/ops-tensor

文件结构

写一个算子的测试需要2 个文件

src/<op_name>/tests/ ├── <op_name>_test.h # 头文件(必需) └── <op_name>_test.cpp # 实现文件(必需)

说明:测试框架提供了ElementwiseBinaryTestConfig辅助类和ExecuteElementwiseBinaryTest通用函数,简化测试编写。

头文件(必需)

文件<op_name>_test.h

内容

#pragma once #include "test_common.h" namespace <OpName>Test { void run_all_tests(aclrtStream stream, OpsTensorTest::TestStats& stats); }

说明

  • 命名空间:<OpName>Test(首字母大写,用于隔离不同算子的测试)
  • 函数名:run_all_tests(固定名称,测试框架会调用此函数)
  • 参数说明:
    • aclrtStream stream- ACL 运行流,用于执行算子
    • TestStats& stats- 测试统计对象,用于记录测试结果

实现文件(必需)

文件<op_name>_test.cpp

必须包含的 3 个部分

1. 测试用例函数(必需,至少1个)

函数签名

void test_xxx(aclrtStream stream, OpsTensorTest::TestStats& stats);

参数说明

  • stream- 传递给算子调用,用于在 NPU 上执行
  • stats- 传递给所有测试宏(TEST_ASSERT、TEST_CASE_PASS 等),用于自动统计

示例

void test_<test_case_name>(aclrtStream stream, OpsTensorTest::TestStats& stats) { TEST_CASE_BEGIN("test_<test_case_name>"); // 准备数据 std::vector<float> A{1.0f, 2.0f}; std::vector<float> C{2.0f, 3.0f}; std::vector<float> expected{3.0f, 5.0f}; std::vector<float> D(2); // 使用测试框架提供的配置类 ElementwiseBinaryTestConfig config(2); // 一维,大小为2 // 调用通用测试函数(自动处理内存管理、数据拷贝等) acltensorStatus_t result = ExecuteElementwiseBinaryTest( A.data(), C.data(), D.data(), config, ACLTENSOR_OP_<OP_NAME>, stream); // 验证结果 TEST_ASSERT(stats, result == ACLTENSOR_STATUS_SUCCESS, "failed"); TEST_ASSERT_ARRAY_NEAR(stats, D, expected, 2, 1e-6f, "mismatch"); TEST_CASE_PASS(stats, "test_<test_case_name>"); }

2. run_all_tests 实现(必需)

namespace <OpName>Test { void run_all_tests(aclrtStream stream, OpsTensorTest::TestStats& stats) { test_xxx(stream, stats); // 可以添加更多测试函数 } }

3. 自动注册(必需)

REGISTER_OP_TEST(<OpName>)

完整示例

<op_name>_test.h

#pragma once #include "test_common.h" namespace <OpName>Test { void run_all_tests(aclrtStream stream, OpsTensorTest::TestStats& stats); }

<op_name>_test.cpp

#include "cann_ops_tensor.h" #include "<op_name>_test.h" #include <vector> void test_<case_name>(aclrtStream stream, OpsTensorTest::TestStats& stats) { TEST_CASE_BEGIN("test_<case_name>"); std::vector<float> A{1.0f, 2.0f}; std::vector<float> C{2.0f, 3.0f}; std::vector<float> expected{3.0f, 5.0f}; std::vector<float> D(2); ElementwiseBinaryTestConfig config(2); acltensorStatus_t result = ExecuteElementwiseBinaryTest( A.data(), C.data(), D.data(), config, ACLTENSOR_OP_<OP_NAME>, stream); TEST_ASSERT(stats, result == ACLTENSOR_STATUS_SUCCESS, "failed"); TEST_ASSERT_ARRAY_NEAR(stats, D, expected, 2, 1e-6f, "mismatch"); TEST_CASE_PASS(stats, "test_<case_name>"); } namespace <OpName>Test { void run_all_tests(aclrtStream stream, OpsTensorTest::TestStats& stats) { test_<case_name>(stream, stats); } } REGISTER_OP_TEST(<op_name>)

可用的宏

用例控制

TEST_CASE_BEGIN("test_name") // 标记开始 TEST_CASE_PASS(stats, "test_name") // 标记通过

断言

TEST_ASSERT(stats, condition, "error") // 条件断言 TEST_ASSERT_ARRAY_EQ(stats, actual, expected, size, "error") // 精确比较 TEST_ASSERT_ARRAY_NEAR(stats, actual, expected, size, tol, "error") // 容差比较

编译运行

./build.sh --ops=<op_name> --run

参考示例

完整示例:src/add/tests/add_test.cpp

【免费下载链接】ops-tensorops-tensor 是 CANN (Compute Architecture for Neural Networks)算子库中提供张量类计算的基础算子库,采用模块化设计,支持灵活的算子开发和管理。项目地址: https://gitcode.com/cann/ops-tensor

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 18:39:14

Qwen-Image-2512+LoRA像素艺术作品集:Retro、Cyberpunk、Fantasy三风格实测

Qwen-Image-2512LoRA像素艺术作品集&#xff1a;Retro、Cyberpunk、Fantasy三风格实测 1. 像素艺术生成新体验 最近在测试Qwen-Image-2512结合Pixel Art LoRA的像素艺术生成能力时&#xff0c;我被它的表现惊艳到了。这个组合不仅能生成传统8-bit风格的像素画&#xff0c;还能…

作者头像 李华
网站建设 2026/6/26 19:41:49

强化学习新范式:文化累积与跨代智能进化技术解析

1. 项目概述&#xff1a;当智能体开始“传承”经验 在传统的强化学习框架里&#xff0c;我们训练一个智能体&#xff0c;让它从零开始&#xff0c;在某个环境中通过试错来学习最优策略。这个过程&#xff0c;无论是经典的Q-Learning、策略梯度&#xff0c;还是如今大放异彩的深…

作者头像 李华
网站建设 2026/6/26 19:40:35

ppt演讲倒计时器

桌面倒计时显示器一个功能强大的桌面倒计时工具&#xff0c;专为演示、会议和日常计时设计。✨ 核心特性&#x1f3af; 智能显示置顶显示: 始终保持在所有窗口最前端&#xff0c;不会被遮挡拖拽移动: 可以随意拖拽到屏幕任意位置智能按钮: 鼠标悬停时显示控制按钮&#xff0c;5…

作者头像 李华
网站建设 2026/5/9 17:57:02

阿里千问能生成带公式的WORD文档吗?

作为一名拥有15年以上企业级系统架构经验的技术架构师&#xff0c;我在日常工作中频繁面临AI辅助生成的技术文档落地难题。无论是系统设计文档、算法推导报告&#xff0c;还是包含复杂数学公式的白皮书分析&#xff0c;从大模型对话框中提取结构化内容并转化为可编辑的Word文档…

作者头像 李华