System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及人工智能,尤其涉及模型程序编译方法、电子设备、程序产品和介质。
技术介绍
1、随着神经网络模型的功能不断完善,其运行复杂度也在不断提升。因此,如何降低神经网络模型的运行复杂度,是提升该模型运行性能的重要内容。
2、相关技术中,神经网络模型在编译过程中一般采用常规的指令集进行编译。然而,常规的指令集未结合神经网络模型的特性进行设置,容易导致编译得到的可执行程序对应较大的体积、较高的复杂度和较低的执行效率。
技术实现思路
1、本申请提供了模型程序编译方法、电子设备、程序产品和介质,以至少解决相关技术中利用常规指令集编译神经网络模型容易导致的可执行程序体积较大、执行效率低的技术问题。
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、判断标量运算数据标识表示的标量运算数据数量是否为1;
40、若是,则根据第一标量运算数据的标量运算数据地址对第一标量运算数据的运算数据寄存器进行赋值;
41、若否,则根据第一标量运算数据和第二标量运算数据的标量本文档来自技高网...
【技术保护点】
1.一种模型程序编译方法,其特征在于,包括:
2.根据权利要求1所述的模型程序编译方法,其特征在于,所述块级指令包含所述单元类型、运算数据地址、运算结果地址、运算数据规模和偏置标识,所述运算数据地址为所述运算数据对应的内存地址,运算结果地址为所述运算结果对应的内存地址,所述运算数据规模为所述运算数据对应的运算数据大小,所述偏置标识为所述运算数据中的偏置数据对应的使用信息。
3.根据权利要求2所述的模型程序编译方法,其特征在于,在将完成填充的块级指令添加至所述可执行程序之后,还包括:
4.根据权利要求3所述的模型程序编译方法,其特征在于,所述运算数据规模由多个比特位组成,所述比特位与所述运算数据对应;
5.根据权利要求3所述的模型程序编译方法,其特征在于,根据所述运算数据地址和所述偏置标识对运算数据寄存器进行赋值,包括:
6.根据权利要求1至5任一项所述的模型程序编译方法,其特征在于,在预设指令集中匹配所述源程序中的程序块对应的块级指令之后,还包括:
7.根据权利要求6所述的模型程序编译方法,其特征在于,所述算
8.根据权利要求7所述的模型程序编译方法,其特征在于,在将完成填充的块级指令添加至所述可执行程序之后,还包括:
9.根据权利要求6所述的模型程序编译方法,其特征在于,所述基础指令包含所述标量运算操作信息、标量运算数据地址、标量运算结果地址和标量运算数据标识,所述标量运算数据地址为所述标量运算数据对应的内存地址,标量运算结果地址为所述标量运算结果对应的内存地址,所述标量运算数据标识为参与标量运算操作的标量运算数据数量。
10.根据权利要求9所述的模型程序编译方法,其特征在于,在将完成填充的块级指令添加至所述可执行程序之后,还包括:
11.根据权利要求10所述的模型程序编译方法,其特征在于,根据所述标量运算数据地址和所述标量运算数据标识对运算数据寄存器进行赋值,包括:
12.根据权利要求6所述的模型程序编译方法,其特征在于,为所述代码行对应的矩阵运算数据分配内存位置,包括:
13.一种电子设备,其特征在于,包括:
14.一种计算机程序产品,包括计算机程序或指令,其特征在于,所述计算机程序或指令被处理器执行时实现如权利要求1至12任一项所述的模型程序编译方法。
15.一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如权利要求1至12任一项所述的模型程序编译方法。
...【技术特征摘要】
1.一种模型程序编译方法,其特征在于,包括:
2.根据权利要求1所述的模型程序编译方法,其特征在于,所述块级指令包含所述单元类型、运算数据地址、运算结果地址、运算数据规模和偏置标识,所述运算数据地址为所述运算数据对应的内存地址,运算结果地址为所述运算结果对应的内存地址,所述运算数据规模为所述运算数据对应的运算数据大小,所述偏置标识为所述运算数据中的偏置数据对应的使用信息。
3.根据权利要求2所述的模型程序编译方法,其特征在于,在将完成填充的块级指令添加至所述可执行程序之后,还包括:
4.根据权利要求3所述的模型程序编译方法,其特征在于,所述运算数据规模由多个比特位组成,所述比特位与所述运算数据对应;
5.根据权利要求3所述的模型程序编译方法,其特征在于,根据所述运算数据地址和所述偏置标识对运算数据寄存器进行赋值,包括:
6.根据权利要求1至5任一项所述的模型程序编译方法,其特征在于,在预设指令集中匹配所述源程序中的程序块对应的块级指令之后,还包括:
7.根据权利要求6所述的模型程序编译方法,其特征在于,所述算子级指令包含所述矩阵运算操作信息、矩阵运算数据地址、矩阵运算结果地址和矩阵运算数据规模,所述矩阵运算数据地址为所述矩阵运算数据对应的内存地址,矩阵运算结果地址为所述矩阵运算结果对应的内存地址,所述矩阵运算数据规模为所述矩阵运算数据对应的矩阵运算数据大小。
<...【专利技术属性】
技术研发人员:侯鹏宇,郝锐,王彦伟,李仁刚,
申请(专利权)人:浪潮北京电子信息产业有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。