算子库的测试方法、测试系统及存储介质技术方案

技术编号:31847738 阅读:15 留言:0更新日期:2022-01-12 13:29
一种算子库的测试方法、测试系统及存储介质,该算子库的测试方法包括:使用统一测试框架接收待测试的目标算子的测试参数信息;通过统一测试框架,根据测试参数信息,分别调用用于目标算子的多个算子过程子程序;运行多个算子过程子程序得到测试用指令包,其中,测试用指令包用于被运行以得到测试结果。该算子库的测试方法例如可以统一并自动化了算子库测试流程与测试过程,从而解决了单独测试大量算子需要重复工作的问题,减轻了例如细粒度算子库测试系统的后续开发与维护工作。测试系统的后续开发与维护工作。测试系统的后续开发与维护工作。

【技术实现步骤摘要】
算子库的测试方法、测试系统及存储介质


[0001]本公开的实施例涉及一种算子库的测试方法、测试系统及存储介质。

技术介绍

[0002]当前,随着人工智能技术的发展,越来越多的应用场景不仅需要软件实现的人工智能算法模型,更需要处理效率更高、专用性更强的硬件产品处理大量的任务和数据。人工智能算法模型在硬件上的实现可以通过将人工智能算法拆解为多个处理步骤,每个处理步骤对应一个算子,该算子在硬件产品上的功能或性能表现需要经过测试来验证。

技术实现思路

[0003]本公开一些实施例提供了一种算子库的测试方法,该方法包括:使用统一测试框架接收待测试的目标算子的测试参数信息;通过所述统一测试框架,根据所述测试参数信息,分别调用用于所述目标算子的多个算子过程子程序;运行所述多个算子过程子程序得到测试用指令包,其中,所述测试用指令包用于被运行以得到测试结果。
[0004]例如,在本公开一些实施例提供的一种算子库的测试方法中,所述运行所述多个算子过程子程序得到测试用指令包,包括:生成用于所述目标算子的标准比对数据,其中,所述标准比对数据包括标准比对输入数据和标准比对输出数据;生成与所述目标算子相对应的算子内核源程序;生成与所述目标算子相对应的算子内核描述信息;编译所述算子内核源程序并得到所述目标算子的编译后算子内核程序;根据所述标准比对数据、所述算子内核描述信息以及所述编译后算子内核程序生成所述测试用指令包。
[0005]例如,在本公开一些实施例提供的一种算子库的测试方法中,所述多个算子过程子程序包括:标准比对数据子程序,用于生成用于所述目标算子的所述标准比对数据;源程序生成子程序,用于生成与所述目标算子相对应的所述算子内核源程序;指令包生成子程序,用于编译所述算子内核源程序并得到所述目标算子的所述编译后算子内核程序,根据所述标准比对数据、所述算子内核描述信息以及所述编译后算子内核程序生成所述测试用指令包。
[0006]例如,在本公开一些实施例提供的一种算子库的测试方法中,所述运行所述多个算子过程子程序得到测试用指令包,包括:使用测试工具运行所述测试用指令包以得到测试结果。
[0007]例如,在本公开一些实施例提供的一种算子库的测试方法中,所述使用测试工具运行所述测试用指令包以得到测试结果,包括:向所述编译后算子内核程序输入所述标准比对输入数据;基于所述算子内核描述信息,执行所述编译后算子内核程序并获得执行结果;以及将所述执行结果与所述标准比对输出数据进行比较,并得到所述目标算子的测试结果。
[0008]例如,在本公开一些实施例提供的一种算子库的测试方法中,所述测试参数信息包括:测试用例描述信息,用于描述所述测试用例对应的算子的属性;标准比对数据配置信
息,用于配置用于生成标准比对数据的参数;算子内核执行参数配置信息,用于配置生成所述算子内核的源程序的参数以及配置生成所述测试用指令包的参数。
[0009]例如,在本公开一些实施例提供的一种算子库的测试方法中,所述目标算子的类型包括:张量类、向量类或标量类。
[0010]例如,在本公开一些实施例提供的一种算子库的测试方法中,所述使用统一测试框架接收待测试的目标算子的测试参数信息,包括:将所述测试参数信息记载于同一配置文件中;使用所述统一测试框架读取所述配置文件,以接收待测试的目标算子的测试参数信息。
[0011]例如,在本公开一些实施例提供的一种算子库的测试方法中,所述根据所述测试参数信息,分别调用用于所述目标算子的多个算子过程子程序包括:解析所述测试参数信息,得到测试输入参数,所述测试输入参数包括经过解析的所述测试用例描述信息、经过解析的所述标准比对数据配置信息以及经过解析的所述算子内核执行参数配置信息;根据所述测试输入参数构造参数集合,其中,所述参数集合用于与所述算子的类型相对应的算子过程子程序;以及使用所述参数集合调用所述多个算子过程子程序。
[0012]例如,在本公开一些实施例提供的一种算子库的测试方法中,所述根据所述测试输入参数构造参数集合包括:构造包含所述测试输入参数的参数容器,其中,所述参数容器包括用于所述多个算子过程子程序的多个参数以及用于指示所述多个参数的指引,所述使用所述参数集合调用所述多个算子过程子程序,包括:使用所述多个参数的指引调用所述多个算子过程子程序;通过所述多个参数的指引访问所述参数容器。
[0013]例如,在本公开一些实施例提供的一种算子库的测试方法中,所述访问所述参数容器,包括:响应于所述多个算子过程子程序至少之一在调用所述多个参数中相应的第一参数,调用属性访问拦截操作,响应于所述属性访问拦截操作确认所述多个算子过程子程序至少之一没有定义所述第一参数,使用所述第一参数的指引访问所述参数容器。
[0014]例如,在本公开一些实施例提供的一种算子库的测试方法中,所述构造包含所述测试输入参数的参数容器,包括:向所述参数容器添加参数配置操作,其中,所述参数配置操作包括显示参数内容或使用引用方式访问参数内容。
[0015]例如,在本公开一些实施例提供的一种算子库的测试方法中,所述调用用于所述目标算子的多个算子过程子程序,运行所述多个算子过程子程序得到测试用指令包包括:在所述多个算子过程子程序运行过程中,根据所述多个算子过程子程序的源程序动态创建与所述多个算子过程子程序对应的类以及所述类的对象,获取所述对象的参数列表,根据所述参数列表构造对应的参数对象,并根据所述参数对象自动动态调用所述类的对象。
[0016]例如,在本公开一些实施例提供的一种算子库的测试方法中,所述目标算子的多个算子过程子程序包括多个操作过程,所述多个操作过程包括第一类操作过程以及与所述第一类操作过程对应的第二类操作过程,所述执行所述编译后算子内核程序并获得执行结果,包括:将所述第一类操作过程的执行结果设定为指定结果;根据所述指定结果运行所述第二类操作过程并获取所述第二类操作过程的执行结果。
[0017]本公开一些实施例提供了一种算子库的测试方法,该方法包括:获取用于生成多个测试用例的配置信息;根据所述配置信息递归生成多个测试用例;将所述多个测试用例输出,并分别使用本公开提供的一种算子库的测试方法进行测试。
[0018]例如,在本公开一些实施例提供的一种算子库的测试方法中,所述配置信息包括多个属性列表,所述根据所述配置信息递归生成多个测试用例,包括:选择所述多个属性列表中需要遍历的N个属性列表,其中,所述属性列表包括多个并列的属性值;设置所述多个属性列表中需要关联的M个属性列表;根据所述需要遍历的N个属性列表和需要关联的M个属性列表,递归生成多个测试用例,M和N为正整数。
[0019]本公开一些实施例提供了一种算子库的测试系统,该系统包括:接收模块,配置为接收待测试的目标算子的测试参数信息;执行处理模块,配置为根据所述测试参数信息,分别调用用于所述目标算子的多个算子过程子程序,运行所述多个算子过程子程序得到测试用指令包。
[0020]例如,本公开一些实施例提供的一种算子库本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种算子库的测试方法,包括:使用统一测试框架接收待测试的目标算子的测试参数信息;通过所述统一测试框架,根据所述测试参数信息,分别调用用于所述目标算子的多个算子过程子程序;运行所述多个算子过程子程序得到测试用指令包,其中,所述测试用指令包用于被运行以得到测试结果。2.如权利要求1所述的方法,其中,所述运行所述多个算子过程子程序得到测试用指令包,包括:生成用于所述目标算子的标准比对数据,其中,所述标准比对数据包括标准比对输入数据和标准比对输出数据;生成与所述目标算子相对应的算子内核源程序;生成与所述目标算子相对应的算子内核描述信息;编译所述算子内核源程序并得到所述目标算子的编译后算子内核程序;根据所述标准比对数据、所述算子内核描述信息以及所述编译后算子内核程序生成所述测试用指令包。3.如权利要求2所述的方法,其中,所述多个算子过程子程序包括:标准比对数据子程序,用于生成用于所述目标算子的所述标准比对数据;源程序生成子程序,用于生成与所述目标算子相对应的所述算子内核源程序;指令包生成子程序,用于编译所述算子内核源程序并得到所述目标算子的所述编译后算子内核程序,根据所述标准比对数据、所述算子内核描述信息以及所述编译后算子内核程序生成所述测试用指令包。4.如权利要求2所述的方法,其中,所述运行所述多个算子过程子程序得到测试用指令包,包括:使用测试工具运行所述测试用指令包以得到测试结果。5.如权利要求4所述的方法,其中,所述使用测试工具运行所述测试用指令包以得到测试结果,包括:向所述编译后算子内核程序输入所述标准比对输入数据;基于所述算子内核描述信息,执行所述编译后算子内核程序并获得执行结果;以及将所述执行结果与所述标准比对输出数据进行比较,并得到所述目标算子的测试结果。6.如权利要求1所述的方法,其中,所述测试参数信息包括:测试用例描述信息,用于描述所述测试用例对应的算子的属性;标准比对数据配置信息,用于配置用于生成标准比对数据的参数;算子内核执行参数配置信息,用于配置生成所述算子内核的源程序的参数以及配置生成所述测试用指令包的参数。7.如权利要求6所述的方法,其中,所述目标算子的类型包括:张量类、向量类或标量类。8.如权利要求6所述的方法,其中,所述使用统一测试框架接收待测试的目标算子的测试参数信息,包括:
将所述测试参数信息记载于同一配置文件中;使用所述统一测试框架读取所述配置文件,以接收待测试的目标算子的测试参数信息。9.如权利要求6所述的方法,其中,所述根据所述测试参数信息,分别调用用于所述目标算子的多个算子过程子程序包括:解析所述测试参数信息,得到测试输入参数,所述测试输入参数包括经过解析的所述测试用例描述信息、经过解析的所述标准比对数据配置信息以及经过解析的所述算子内核执行参数配置信息;根据所述测试输入参数构造参数集合,其中,所述参数集合用于与所述算子的类型相对应的算子过程子程序;以及使用所述参数集合调用所述多个算子过程子程序。10.如权利要求9所述的方法,其中,所述根据所述测试输入参数构造参数集合包括:构造包含所述测试输入参数的参数容器,其中,所述参数容器包括用于所述多个算子过程子程序的多个参数以及用于指示所述多个参数的指引,所述使用所述参数集合调用所述多个算子过程子程序,包括:使用所述多个参数的指引调用所述多个算子过程子程序;通过所述多个参数的指引访问所述参数容器。11.如权利要求10所述的方法,其中,所述访问所述参数容器,包括:响应于所述多个算子过程子程序至少之一在调用所述多个参数中相应的第一参数,调用属性访问拦截操作,响应于所述属性访问拦截操作确认所述多个算子过程子程序至少之一没有定义所述第一参数,使用所述第一参数的指引访问所述参数容器。12.如权利要求10所述的方法,其中,所述构造包含所述测试输入参数的参数容器,包括:向所述参数容器添加参数配置操作,其中,所述参数配置操作包括显示参数内容或使用引用方式访问参数内容。13.如权利要求1所述的方法,其中,所述分别调用用于所述目标算子的多个算子过程子程序,运行所述多个算子过程子程序得到测试用指令包包括:在所述多个算子过程子程序运行过程中,根据所述多个算子过程子程序的源程序动态创建与所述多个算子过程子程序对应的类以及所述类的对象,获取所述对象的参数列表,根据所述参数列表构造对应的参数对象,并根据所述参数对象自动动态调用所述类的对象。14.如权利要求5所述的方法,其中,所述目标算子的多个算子过程子程序包括多个操作过程,所述多个操作过程包括第一类操作过程以及与所述第一类操作过程对应的第二类操作过程,所述执行所述编译后算子内核程序并获得执行结果,包括:将所述第一类操作过程的执行结果设定为指定结果;根据所述指定结果运行所述第二类操作过程并获取所述第二类操作过程的执行结果。
15.一种算子库的测试方法,包括:获取用于生成多个测试用例的配置信息;根据所述配置信息递归生成多个测试用例;将所述多个测试用例输出,并分别使用权利要求1所述的方法进行测试。16.如权利要求15所述的方法,其中,所述配置信息包括多个属性列表,所述根据所述配置信息递归生成多个测试用例,包括:选择所述多个属性列表中需要遍历的N个属性列表,其中,所述属性列表包括多个并列的属性值;设置所述多个属性列表中需要关联的M个属性列表;根据所述需要遍历的N个属...

【专利技术属性】
技术研发人员:ꢀ七四专利代理机构
申请(专利权)人:上海壁仞智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1