System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请实施例涉及编译技术和人工智能,尤其涉及一种指令生成方法、装置及存储介质。
技术介绍
1、在处理器硬件(如图形处理器gpu或人工智能处理器等)的设计中,为了提高硬件处理器的运算效率及其在多个应用场景下的通用性,处理器硬件往往会根据不同的运算需求针对同一类操作提供不同的硬件指令。比如,针对加法相关操作,硬件可以根据不同的需要提供对位点加(element-wise add)、广播加法(broadcasting add)、常量加法(addconstant)等多个指令。
2、用户在使用过程中需要针对每个硬件指令编写相应的程序,如api(applicationprogramming interface,应用程序编程接口),这样就会造成api比较多,用户使用较麻烦,编程及文档也比较繁琐。
技术实现思路
1、本申请实施例提供一种指令生成方法、装置及存储介质,针对某一类别的运算提供统一的api接口,通过对该api接口的参数解析自动选择硬件指令的具体类别,从而简化编程,方便用户使用。
2、第一方面,本申请实施例提供一种指令生成方法,包括:
3、通过预设指令类别的统一接口接收指令参数;其中所述指令参数包括至少两个操作数以及输出地址;
4、根据所述指令参数确定各所述操作数的表示形式;
5、根据各所述操作数的表示形式以及所述指令参数,生成对应的目标指令。
6、在一种可能的设计中,所述根据各所述操作数的表示形式以及所述指令参数,生成
7、根据各所述操作数的表示形式从所述预设指令类别中确定目标类别;
8、根据所述指令参数以及所述目标类别,生成对应的目标指令。
9、在一种可能的设计中,所述根据各所述操作数的表示形式从所述预设指令类别中确定目标类别,包括:
10、判断各所述操作数的表示形式是否均为存储单元地址;
11、若各所述操作数的表示形式均为存储单元地址,则基于存储单元地址确定各所述操作数的数据形状;
12、根据各所述操作数的数据形状确定所述目标类别。
13、在一种可能的设计中,所述根据各所述操作数的数据形状确定所述目标类别,包括:
14、若各所述操作数之间的数据形状关系满足预设规则,则确定所述目标类别为所述预设规则对应的类别;或者
15、若各所述操作数之间的数据形状关系不满足预设规则,则输出错误提示信息。
16、在一种可能的设计中,所述目标类别包括第一类别,所述预设规则包括第一预设规则,所述若各所述操作数之间的数据形状关系满足预设规则,则确定所述目标类别为所述预设规则对应的类别,包括:
17、若各所述操作数之间的数据形状关系满足第一预设规则,则确定所述目标类别为所述第一类别。
18、在一种可能的设计中,所述目标类别包括第二类别,所述预设规则还包括第二预设规则,所述若各所述操作数之间的数据形状关系满足预设规则,则确定所述目标类别为所述预设规则对应的类别,还包括:
19、若各所述操作数之间的数据形状关系满足第二预设规则,则确定所述目标类别为所述第二类别。
20、在一种可能的设计中,所述数据形状包括至少一个维度;所述方法还包括:
21、分别比较各所述操作数的数据形状中每一对应维度的维度值;
22、若所述操作数的数据形状的至少一个维度的维度值均相同,则确定所述操作数的数据形状关系为满足第一预设规则;
23、若所述操作数的数据形状的至少一个维度中存在一个以上的维度值相同,其他维度值之间具有兼容关系,则确定所述操作数的数据形状满足第二预设规则。
24、在一种可能的设计中,所述方法还包括:
25、若各所述操作数的数据形状中任一对应维度的维度值均为常数,则通过比较相应维度的常数确定各所述操作数之间的数据形状关系;
26、若各所述操作数的数据形状中任一对应维度的维度值为表达式,则通过比较相应维度的各表达式确定各所述操作数之间的数据形状关系。
27、在一种可能的设计中,若各所述操作数的数据形状中任一对应维度的维度值为表达式,所述方法还包括:
28、按照预设的变换规则分别对各表达式进行变形,得到对应的变形后的表达式,所述变形后的表达式具有相同形式的表达;
29、通过比较变形后的各表达式确定各所述操作数之间的数据形状关系。
30、在一种可能的设计中,所述预设的变换规则,包括以下规则中的一种或多种的组合:
31、对于任一表达式,若表达式中存在括号,则按照数学运算规则去除表达式中的括号;
32、若表达式中存在常数之间的运算,则计算常数之间的运算结果,并替换到表达式中;
33、基于数学运算规则对表达式中的参数调整顺序,使得参数按照目标顺序排列。
34、在一种可能的设计中,所述根据各所述操作数的表示形式从所述预设指令类别中确定目标类别,还包括:
35、若各所述操作数的表示形式中包括存储单元地址和常量,则确定所述目标类别为第三类别。
36、第二方面,本申请实施例提供一种指令生成装置,包括:
37、接口模块,用于通过预设指令类别的统一接口接收指令参数;其中所述指令参数包括至少两个操作数以及输出地址;
38、确定模块,用于根据所述指令参数确定各所述操作数的表示形式;
39、生成模块,用于根据各所述操作数的表示形式以及所述指令参数,生成对应的目标指令。
40、第三方面,本申请实施例提供一种指令生成装置,包括:至少一个处理器及存储器;
41、所述存储器存储计算机执行指令;
42、所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如第一方面所述的方法。
43、第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被至少一个处理器执行时,实现如第一方面所述的方法。
44、本申请实施例提供的指令生成方法、装置及存储介质,通过预设指令类别的统一接口接收指令参数,其中指令参数包括至少两个操作数以及输出地址;根据指令参数确定各操作数的表示形式;根据各操作数的表示形式以及指令参数,生成对应的目标指令。本实施例对于预设指令类别面向用户仅提供统一接口来接收指令参数,由编译器自动选择和生成适配于用户输入的指令参数的目标硬件指令,用户无需关注多种硬件指令,也无需为每个硬件指令选择或编写对应的api接口程序,为用户的使用提供了便捷,同时也避免了每一种硬件指令编写相应的api,避免了程序和文档的繁琐。
本文档来自技高网...【技术保护点】
1.一种指令生成方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述根据各所述操作数的表示形式以及所述指令参数,生成对应的目标指令,包括:
3.根据权利要求2所述的方法,其特征在于,所述根据各所述操作数的表示形式从所述预设指令类别中确定目标类别,包括:
4.根据权利要求3所述的方法,其特征在于,所述根据各所述操作数的数据形状确定所述目标类别,包括:
5.根据权利要求4所述的方法,其特征在于,所述目标类别包括第一类别,所述预设规则包括第一预设规则,所述若各所述操作数之间的数据形状关系满足预设规则,则确定所述目标类别为所述预设规则对应的类别,包括:
6.根据权利要求4或5所述的方法,其特征在于,所述目标类别包括第二类别,所述预设规则还包括第二预设规则,所述若各所述操作数之间的数据形状关系满足预设规则,则确定所述目标类别为所述预设规则对应的类别,还包括:
7.根据权利要求4或5所述的方法,其特征在于,所述数据形状包括至少一个维度;所述方法还包括:
8.根据权利要求4或5所述的方法,其
9.根据权利要求8所述的方法,其特征在于,若各所述操作数的数据形状中任一对应维度的维度值为表达式,所述方法还包括:
10.根据权利要求9所述的方法,其特征在于,所述预设的变换规则,包括以下规则中的一种或多种的组合:
11.根据权利要求2所述的方法,其特征在于,所述根据各所述操作数的表示形式从所述预设指令类别中确定目标类别,还包括:
12.一种指令生成装置,其特征在于,包括:
13.一种指令生成装置,其特征在于,包括:至少一个处理器及存储器;
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被至少一个处理器执行时,实现如权利要求1-11任一项所述的方法。
...【技术特征摘要】
1.一种指令生成方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述根据各所述操作数的表示形式以及所述指令参数,生成对应的目标指令,包括:
3.根据权利要求2所述的方法,其特征在于,所述根据各所述操作数的表示形式从所述预设指令类别中确定目标类别,包括:
4.根据权利要求3所述的方法,其特征在于,所述根据各所述操作数的数据形状确定所述目标类别,包括:
5.根据权利要求4所述的方法,其特征在于,所述目标类别包括第一类别,所述预设规则包括第一预设规则,所述若各所述操作数之间的数据形状关系满足预设规则,则确定所述目标类别为所述预设规则对应的类别,包括:
6.根据权利要求4或5所述的方法,其特征在于,所述目标类别包括第二类别,所述预设规则还包括第二预设规则,所述若各所述操作数之间的数据形状关系满足预设规则,则确定所述目标类别为所述预设规则对应的类别,还包括:
...
【专利技术属性】
技术研发人员:请求不公布姓名,
申请(专利权)人:寒武纪西安集成电路有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。