带你掌握如何使用CANN 算子ST测试工具msopst
摘要:本期带您了解如何使用msopst工具。
本文分享自华为云社区《【CANN文档速递13期】算子ST测试工具【msopst】》,作者: 昇腾CANN 。
如何获取msopst工具
msopst工具存储在Ascend-cann-toolkit安装目录的“toolkit/python/site-packages/bin”路径下。支持对TBE算子以及AI CPU算子进行ST测试。
CANN软件安装完成并生效环境变量配置脚本后,即可直接使用此工具,您可以在任意路径下执行如下命令查看工具相关参数:

总体使用流程
自定义算子部署到OPP算子库后,开发者可使用msopst工具验证算子在昇腾AI处理器上执行的正确性,总体流程较简单,如下所示:

下面我们分别介绍以上每一个步骤是干什么的?该如何做?
生成测试用例定义文件
测试用例定义文件,顾名思义,就是用来生成测试用例的,其内容包含了测试用例所需的基本信息,例如:测试用例名称,所要测试的算子类型,算子的输入输出描述信息(形状、数据类型、数据排布格式等)、算子属性相关信息(包含属性名称、类型、属性值)、数据生成算法等。以Add算子为例,通过msopst工具生成测试用例定义文件的命令如下:

上述命令执行完成后,会在当前路径的output目录下生成Add算子的测试用例定义文件:Add_case_{timestamp}.json。
当然,您也可以不使用msopst create命令,直接拷贝已有算子的测试用例定义文件进行修改亦可,使用算子信息库生成的优势是会自动填充测试用例定义文件中的相关字段,例如case_name,op,input_desc与output_desc中的name、format、type等。OpType_case_xxx.json文件的模板如下:

配置测试用例定义文件
测试用例定义文件的配置为整个ST测试流程的核心,直接决定了生成的测试用例个数、数据生成算法、测试覆盖率等,下面描述测试用例定义文件的参数含义及配置方法。
输入输出描述配置
输入输出描述信息包含的关键配置如下表所示:

测试用例采用将以上配置进行正交组合的方式生成,如下图所示,format取值为[“ND”,“NCHW”, “NHWC”];type的取值为[“int32”,“float32”];shape的取值范围为[32,16];data_distribute的取值为[“uniform”],value_range的取值为[0.1, 1.0],则生成的测试用例个数为 3 * 2 * 1 * 1 * 1 = 6。

算子属性配置
若算子包含属性,还需要配置如下表所示参数:

大批量生成测试用例
若开发者需要生成大量测试用例,可利用fuzz测试参数生成脚本辅助生成,并在测试用例定义文件( *.json )中配置fuzz脚本路径、所需生成的测试用例数目,同时输入输出描述中相关参数的取值配置为“fuzz”。操作步骤示例如下:
1、配置fuzz测试参数生成脚本,假设脚本命名“fuzz_shape.py”,实现如下所示:

2、配置测试用例定义文件;
3、在测试用例定义文件(*.json)中配置fuzz测试参数生成脚本的路径,所需生成的测试用例个数,并将需要自动生成的字段配置为固定值“fuzz”,如下所示:

定义期望数据生成函数
若用户需要得到实际输出与期望输出的比对结果,可使用Python语言自定义实现期望数据生成函数,并在ST测试用例定义文件中增加此函数入口。例如,Add算子的期望数据生成函数为“/home/test/test_add.py”,实现如下所示:

然后在ST测试用例定义文件中增加“calc_expect_func_file”参数,配置为“期望数据生成函数的文件:函数名”,如下所示:

生成并执行测试用例
配置完相关环境变量后,您就可以通过如下命令执行ST测试用例:

查看执行结果
ST测试用例执行完后,您可以通过打屏信息查看用例执行结果,若下所示,共运行9个用例,9个用例全部执行成功。

开发者也可以查看生成的报表“st_report.json”,此报表中记录了测试结果及各阶段的运行情况,ST测试用例运行异常时,可以基于此信息进行问题定位。

至此,ST测试工具“msopst”的使用全流程已介绍完毕,您是否对此工具有了初步的认知呢?若您需要进行自定义算子的开发,别忘了使用此工具进行算子的ST测试噢~关于此工具的更多使用样例,可参见昇腾社区中的《TBE自定义算子开发指南》或《AI CPU自定义算子开发指南》。( https://www.hiascend.com/document?tag=community-developer )

昇腾CANN文档中心致力于为开发者提供更优质的内容和更便捷的开发体验,助力CANN开发者共建AI生态。任何意见和建议都可以在昇腾社区反馈,您的每一份关注都是我们前进的动力。
带你掌握如何使用CANN 算子ST测试工具msopst的更多相关文章
- 如何使用apache自带的ab压力测试工具
ab是apache自带的一个很好用的压力测试工具,当安装完apache的时候,就可以在bin下面找到ab 1 我们可以模拟100个并发用户,对一个页面发送1000个请求 ./ab -n1000 -c1 ...
- (转)MySQL自带的性能压力测试工具mysqlslap详解
mysqlslap 是 Mysql 自带的压力测试工具,可以模拟出大量客户端同时操作数据库的情况,通过结果信息来了解数据库的性能状况 mysqlslap 的一个主要工作场景就是对数据库服务器做基准测试 ...
- 数据库相关文章转载(2) MySQL自带的性能压力测试工具mysqlslap详解
PS:今天一同事问我有木有比较靠谱的mysql压力测试工具可用.其实mysql自带就有一个叫mysqlslap的压力测试工具,还是模拟的不错的.下面举例说说.mysqlslap是从5.1.4版开始的一 ...
- (总结)MySQL自带的性能压力测试工具mysqlslap详解
PS:今天一同事问我有木有比较靠谱的mysql压力测试工具可用.其实mysql自带就有一个叫mysqlslap的压力测试工具,还是模拟的不错的.下面举例说说.mysqlslap是从5.1.4版开始的一 ...
- CANN算子:利用迭代器高效实现Tensor数据切割分块处理
摘要:本文以Diagonal算子为例,介绍并详细讲解如何利用迭代器对n维Tensor进行基于位置坐标的大批量数据读取工作. 本文分享自华为云社区<CANN算子:利用迭代器高效实现Tensor数据 ...
- 4分钟apache自带ab压力测试工具使用: 2015.10.4
2015.10.44分钟apache自带ab压力测试工具使用:win8.1 wampserver2.5 -Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b 可以参考一下部 ...
- win8.1上wamp环境中利用apache自带ab压力测试工具使用超简单讲解
2015.10.4apache自带ab压力测试工具使用:本地环境:win8.1 wampserver2.5 -Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b 可以参考一 ...
- vs自带服务测试工具
在vs安装目录有一个vs自带的服务测试工具,地址为: "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Wcf ...
- Apache自带压力测试工具ab用法简介
ab命令原理 ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL进行访问.它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx.lighthttp ...
- apache自带压力测试工具ab的使用及解析
当你搭建了apache服务器并在上面部署了web网站,在网站运行前,为了使apache服务器的性能得到更好的应用,我们可以先对其进行压力测试.进行压力测试其实非常简单,我们也不用再额外下载安装什么测试 ...
随机推荐
- Rustlings通关记录与题解
2023年6月19日决定对rust做一个重新的梳理,整理今年4月份做完的rustlings,根据自己的理解来写一份题解,记录在此. 周折很久,因为中途经历了推免的各种麻烦事,以及选择数据库作为未来研究 ...
- React技术栈支援Vue项目,你需要提前了解的
写在前面 react整体是函数式的思想,把组件设计成纯组件,状态和逻辑通过参数传入,而vue的思想是响应式的,也就是基于是数据可变的,通过对每一个属性建立Watcher来监听, 当属性变化的时候,响应 ...
- CentOS7 Ceph分布式集群部署
CentOS 7 下安装Ceph-nautilus 本问主要记录在CentOS 7下如何安装Ceph-nautilus,安装过程中遇到的一些问题及解决方法. 1.Ceph实验准备 以下是本次实验所用到 ...
- Molecule 在构建工具中的选择
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:修能 朝闻道,夕死可矣 何为 Molecule? 轻量级的 ...
- 面试官:SOA 和微服务的区别?这回终于搞清楚了!
https://developer.aliyun.com/article/839526 简介: 如果我们打开支付宝首页,去看我们的余额,它会展示你的总资产,昨日收益.累计收益等信息.假如这个页面所展示 ...
- JAVA类的加载(1) ——类的加载及类加载器介绍
过程:当程序主动使用某个类时,如果该类还未被加载到内存中,系统会通过加载.连接.初始化三个步骤来对该类进行初始化,有时候称为类加载(类初始化) 类加载 定义:类加载 指的是将类的class文件读入 ...
- KingabseES例程-事实数据与规则的匹配校验
KingabseES例程-事实数据与规则的匹配校验 背景 使用规则,对数据进行校验,比如电商的用户购物订单,是否合法.这就需要订单的多维度,如 用户.地区.物流.支付手段.供应商 等各类信息,进行动态 ...
- Ynoi 题目总结:
Preview: 因为是关于 \(\text{Ynoi}\) 的题目总结,所以自然也要像 \(\text{Ynoi}\) 一样来一段长长的开头. 这是一个蒟蒻的告白 高一上半学期,嘻嘻哈哈的糊弄过去了 ...
- 聊聊Flink必知必会(五)
聊聊Flink的必知必会(三) 聊聊Flink必知必会(四) 从源码中,根据关键的代码,梳理一下Flink中的时间与窗口实现逻辑. WindowedStream 对数据流执行keyBy()操作后,再调 ...
- python之猜数字小游戏
import random#随机数函数 a = random.randint(0, 50)#随机0-50之内的整数 print('------------------SWS工作室----------- ...