CN117827283A - 指令生成方法、装置及电子设备 - Google Patents

指令生成方法、装置及电子设备 Download PDF

Info

Publication number
CN117827283A
CN117827283A CN202311869130.4A CN202311869130A CN117827283A CN 117827283 A CN117827283 A CN 117827283A CN 202311869130 A CN202311869130 A CN 202311869130A CN 117827283 A CN117827283 A CN 117827283A
Authority
CN
China
Prior art keywords
conversion
arrangement mode
path
conversion path
memory arrangement
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311869130.4A
Other languages
English (en)
Inventor
林永迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Horizon Information Technology Co Ltd
Original Assignee
Beijing Horizon Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Horizon Information Technology Co Ltd filed Critical Beijing Horizon Information Technology Co Ltd
Priority to CN202311869130.4A priority Critical patent/CN117827283A/zh
Publication of CN117827283A publication Critical patent/CN117827283A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Image Processing (AREA)

Abstract

公开了一种指令生成方法、装置及电子设备,涉及集成电路技术领域,该方法包括确定数据搬运算子对应的输入内存排布方式和输出内存排布方式,以及数据搬运算子的搬运参数;基于搬运参数、输入内存排布方式、输出内存排布方式以及神经网络处理器支持的多个第一排布方式,确定将输入内存排布方式转换为输出内存排布方式所对应的多个转换路径组;基于多个转换路径组,确定目标转换路径;基于目标转换路径,生成神经网络处理器可执行的指令序列。本公开的技术方案在处理数据搬运算子时,能够从多个转换路径组中确定最优的路径作为目标转换路径,并进一步按照该目标转换路径生成神经网络处理器可执行的指令序列。

Description

指令生成方法、装置及电子设备
技术领域
本公开涉及集成电路技术领域,尤其涉及一种指令生成方法、装置及电子设备。
背景技术
由于神经网络处理器的数据存储方式与传统处理器(例如:CPU)的数据存储方式不同,这会导致在神经网络加速器上处理数据搬运算子(例如,reshape、transpose等)比在传统处理器上处理更加复杂。
以处理转置算子(transpose)为例,由于数据存储方式不同,相较于利用传统处理器,神经网络处理器在处理时通常会产生一些附带的变换(reorder),并且针对同一个transpose算子,神经网络处理器可以有多种处理方式。不同的处理方式所产生的reorder数量不同,且不同的reorder处理效率也不同,从而导致相应的处理时长也不同。那么,如何提高神经网络处理器处理数据搬运算子的效率是亟待解决的问题。
发明内容
为了解决上述技术问题,本公开的实施例提供了一种指令生成方法、装置及电子设备,通过执行神经网络处理器可执行的指令序列,用以在不改变神经网络处理器的情况下,提高神经网络处理器的处理效率。
根据本公开的一个方面,提供了一种用于神经网络处理器的指令生成方法,包括:确定数据搬运算子对应的输入内存排布方式和输出内存排布方式,以及数据搬运算子的搬运参数;基于搬运参数、输入内存排布方式、输出内存排布方式以及神经网络处理器支持的多个第一排布方式,确定将输入内存排布方式转换为输出内存排布方式所对应的多个转换路径组;基于多个转换路径组,确定目标转换路径;基于目标转换路径,生成神经网络处理器可执行的指令序列。
基于本方案,首先确定数据搬运算子对应的输入内存排布方式和输出内存排布方式,以及数据搬运算子的搬运参数;然后基于搬运参数、输入内存排布方式、输出内存排布方式以及神经网络处理器支持的多个第一排布方式确定多个转换路径组,接着基于多个转换路径组,确定出目标转换路径,最后基于目标转换路径生成可执行的指令序列。基于将神经网络处理器支持的第一排布方式作为数据格式转换的中间跳板,在将输入内存排布方式转换为输出内存排布方式过程中,基于中间跳板确定多个转换路径组,并从多个转换路径组中确定最优的路径作为目标转换路径,并进一步按照该目标转换路径生成神经网络处理器可执行的指令序列。因此本公开能够在不改变神经网络处理器的情况下,提高神经网络处理器的处理效率。
根据本公开的一个方面,提供了一种通过神经网络处理器对输入数据进行处理的方法,包括:确定需要对按照输入内存排布方式排布的输入数据进行处理的可执行指令序列;其中,可执行指令序列是基于目标转换路径生成的,目标转换路径是基于将输入内存排布方式转换为输出内存排布方式所对应的多个转换路径组确定的;基于可执行指令序列,通过神经网络处理器对按照输入内存排布方式排布的输入数据进行数据搬运处理,得到按照输出内存排布方式排布的输出数据。
基于本方案,通过确定可执行指令序列,并根据可执行指令序列对按照输入内存排布方式排布的输入数据进行数据搬运处理,得到按照输出内存排布方式排布的输出数据。这样,在利用神经网络处理器处理数据搬运算子时,能够按照处理时长最短的方式进行处理,从而提高数据处理效率。
根据本公开的另一个方面,提供了一种用于神经网络处理器的指令生成装置,包括:第一确定模块,用于确定数据搬运算子对应的输入内存排布方式和输出内存排布方式,以及数据搬运算子的搬运参数;第二确定模块,用于基于搬运参数、输入内存排布方式、输出内存排布方式以及神经网络处理器支持的多个第一排布方式,确定将输入内存排布方式转换为输出内存排布方式所对应的多个转换路径组;第三确定模块,用于基于多个转换路径组,确定目标转换路径;指令生成模块,用于基于目标转换路径,生成神经网络处理器可执行的指令序列。
根据本公开的一个方面,提供了用于通过神经网络处理器对输入数据进行处理的装置,包括:确定模块,用于确定需要对按照输入内存排布方式排布的输入数据进行处理的可执行指令序列;其中,可执行指令序列是基于目标转换路径生成的,目标转换路径是基于将输入内存排布方式转换为输出内存排布方式所对应的多个转换路径组确定的;处理模块,用于基于可执行指令序列,通过神经网络处理器对按照输入内存排布方式排布的输入数据进行数据搬运处理,得到按照输出内存排布方式排布的输出数据。
根据本公开的一个方面,提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序用于执行上述任一的方法。
根据本公开的一个方面,提供了一种电子设备,该电子设备包括:处理器;用于存储处理器可执行指令的存储器;处理器,用于从存储器中读取可执行指令,并执行指令以实现上述任一数据处理的方法。
附图说明
图1是本公开一示例性实施例提供的一种电子设备的结构示意图。
图2是本公开一示例性实施例提供的另一种电子设备的结构示意图。
图3是本公开一示例性实施例提供的用于神经网络处理器的指令生成方法的流程示意图之一。
图4是本公开一示例性实施例提供的用于神经网络处理器的指令生成方法的流程示意图之二。
图5是本公开一示例性实施例提供的用于神经网络处理器的指令生成方法的流程示意图之三。
图6是本公开一示例性实施例提供的用于神经网络处理器的指令生成方法的流程示意图之四。
图7是本公开一示例性实施例提供的用于神经网络处理器的指令生成方法的流程示意图之五。
图8是本公开一示例性实施例提供的用于神经网络处理器的指令生成方法的流程示意图之六。
图9是本公开一示例性实施例提供的用于神经网络处理器的指令生成方法的流程示意图之七。
图10是本公开一示例性实施例提供的通过神经网络处理器对输入数据进行处理的方法的流程示意图之一。
图11是本公开一示例性实施例提供的通过神经网络处理器对输入数据进行处理的方法的流程示意图之二。
图12是本公开一示例性实施例提供的通过神经网络处理器对输入数据进行处理的方法的流程示意图之三。
图13是本公开一示例性实施例提供的用于神经网络处理器的指令生成装置的结构图。
图14是本公开一示例性实施例提供的通过神经网络处理器对输入数据进行处理的装置的结构图。
图15是本公开一示例性实施例提供的一种电子设备的结构图。
具体实施方式
下面,将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
申请概述
通常,传统处理器(例如:CPU)中的数据以一维或二维数组的形式存储在内存,并且可以通过指针或索引的形式访问内存中的数据。这种存储方式非常灵活,便于实现各种数据操作。
神经网络处理器中的多维数组通常按照特定的排布方式(layout)存储在内存中。示例性地,多维数组可以存储在多个块(block)中,一个block可以包括多个元素。这种存储方式通常需要并行处理,因此具有更高的处理效率和更快的计算速度,但也限制了数据操作的灵活性。
结合上述可知,传统处理器的数据存储方式和神经网络处理器的数据存储方式不同,这也使得在传统处理器上比较容易处理的算子(例如:数据搬运算子reshape、transpose等),在神经网络处理器上处理时具有一定的难度。
下面对在传统处理器处理数据搬运算子的过程和在神经网络处理器处理数据搬运算子的过程进行说明。
以处理transpose算子为例,对传统处理器的处理过程进行说明。
首先,传统处理器可以基于transpose算子的转置参数,确定transpose算子要搬运的多维数组[a,b,c,d]的维度,例如,transpose算子要搬运多维数组[a,b,c,d]的h维度和w维度。其中,b对应h维度,c对应w维度,h维度表示多维数组的高度,w维度表示多维数组的宽度。然后按照多维数据[a,b,c,d]的顺序依次读取a,c,b,d对应的数据,从而实现transpose算子的运算。
接下来,对神经网络处理器的处理过程进行说明。
结合上述神经网络处理器的数据存储方式可知,当神经网络处理器处理transpose算子时,需要基于transpose算子的转置参数,在block层面以及block内部同时执行transpose。
一般,神经网络处理器可以采用多种方式处理transpose算子。在处理transpose算子时,不同的处理方式会产生数量不同的reorder,并且不同的处理方式也会对应不同的处理时长。
例如,以多维数组[1,3,12,9]的layout为2h16w8c,利用transpose算子对多维数据[1,3,12,9]执行h维度和w维度的交换为例,可以得到多维数组[1,12,3,9]。经过transpose算子处理后的多维数组[1,12,3,9]的layout不变仍为2h16w8c。
基于多维数组[1,3,12,9]的layout 2h16w8c可知,多维数组[1,3,12,9]可以被划分在1x2x1x2个block中存储,每个block内存储1x2x16x8个数据。经过transpose处理后,多维数组[1,3,12,9]可以转换为多维数组[1,12,3,9]。转换后的多维数组[1,12,3,9]的layout为16h2w8c,该多维数组[1,12,3,9]被划分在1x1x2x2个block中存储,每个block内存储1x16x2x8个数据。
由于多维数组[1,12,3,9]的layout为16h2w8c。为了确保transpose运算后的多维数组[1,12,3,9]的layout仍为2h16w8c,需要将多维数组[1,12,3,9]的layout从16h2w8c转换为2h16w8c。在将16h2w8c转换为2h16w8c的过程中,需要执行多次额外的reorder。
在对上述多维数组[1,3,12,9]执行transpose运算时,不仅可以选择上述第一种处理方式,即先将多维数组[1,3,12,9]经过transpose,转换为多维数组[1,12,3,9]。该多维数组[1,12,3,9]的layout 16h2w8c;然后将多维数组[1,12,3,9]的layout 16h2w8c经过一系列复杂的reorder变为2h16w8c。
还可以选择第二种处理方式,即先将多维数组[1,3,12,9]的layout2h16w8creorder成16w16c,然后执行transpose,将16w16c转置为16h16c,最后将16h16c经过两次reorder变为2h16w8c。基于上述两种实现方式对应的执行时长可知,第二种实现方式的处理时长更短,处理效率更高。
因此,在利用神经网络处理器实现数据搬运算子的运算时,如何从多种处理方式中确定出处理时长最短的方式是目前亟需解决的问题。
示例性设备
本公开实施例涉及到编译侧设备和运行侧设备,其中,编译侧设备用于生成神经网络处理器可执行的指令,运行侧设备用于运行编译侧设备提供的指令执行神经网络运算,这些运算包括但不限于:卷积运算、池化运算、内存搬运运算等。
在一些实施例中,编译侧设备可以包括但不限于个人计算机、服务器计算机、多处理器系统、基于微处理器的系统等。
在一些实施例中,运行侧设备可以包括但不限于神经网络处理器或者神经网络芯片等。
图1为本公开实施例提供的一种编译侧设备10的结构示意图,如图1所示,编译侧设备10包括至少一个处理器11和存储器12。
处理器11用于执行本公开实施例中的用于神经网络处理器的指令生成方法,该处理器11可以为支持神经网络指令序列编译的处理器,或者具有编译处理能力和/或指令执行能力的其他形式的处理单元。
存储器12可以包括一个或多个计算机程序产品,该计算机程序产品可以包括各种形式的计算机可读存储介质。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器11可以运行程序指令,以实现下文的用于神经网络处理器的指令生成方法。
在一些实施例中,如图1所示,编译侧设备10还可以包括输入装置13和输出装置14。输入装置13可以包括例如键盘、鼠标等等,可供编译人员输入神经网络的参数,例如,神经网络每层的输入特征图的尺寸、输出特征图的尺寸、卷积核等。输出装置14可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等,可供编译人员查看编译的最终结果或编译过程中的中间数据等。
需要说明的是,本公开实施例对于编译侧设备10的具体结构不作限定,编译侧设备10可以包括如图1所示的更多或更少的部件。例如,编译侧设备10还可以包括总线、输入/输出接口等组件。
图2为本公开实施例提供的另一种运行侧设备20的结构示意图,如图2所示,运行侧设备20可以包括:控制单元21和计算单元22,控制单元21用于运行指令以控制计算单元22执行下述一种通过神经网络处理器对多维数组进行处理的方法。
在一些实施例中,运行侧设备20还可以包括缓冲存储器23和片外存储器24。缓冲存储器23可以包括一个或多个独立的缓存存储器或者具有数据高速缓存能力的处理单元,并且可以在控制单元21的控制下对片外存储器24进行访存。片外存储器24可以包括一个或多个独立的存储器或者具有数据存储能力的处理单元,并且可以在控制单元21的控制下供缓冲存储器23进行访存。
需要说明的是,本公开实施例对于运行侧设备20的具体结构不作限定,运行侧设备20可以包括比图2所示的更多或更少的部件。例如,运行侧设备20还可以包括总线等组件。
示例性方法
图3为本公开实施例提供的一种用于神经网络处理器的指令生成方法,该方法可以应用于编译侧设备,如图3所示,该方法包括以下步骤301-步骤304。
步骤301、确定数据搬运算子对应的输入内存排布方式和输出内存排布方式,以及数据搬运算子的搬运参数。
示例性地,输入内存排布方式为数据搬运算子的输入数据对应的内存排布方式,输出内存排布方式为数据搬运算子的输出数据期望输出的内存排布方式。由于数据搬运算子对输入数据进行处理后的内存排布方式有可能与输出内存排布方式不同,因此可以通过目标转换路径对内存排布方式进行转换,以确保输出数据的内存排布方式为上述输出内存排布方式。
在一些示例中,数据搬运算子是指改变多维数组在内存中的排布方式的算子。例如,数据搬运算子可以包括reshape算子、transpose算子以及Permute算子等,本申请实施例对于数据搬运算子的类型不作限定。数据搬运算子的搬运参数用于指示搬运后的多维数组的维度顺序,如搬运参数用于指示将多维数组的h维度和w维度进行交换。
其中,reshape算子用于将一个矩阵或数组的形状重新调整为指定形状。transpose算子用于对矩阵或数组进行转置操作。Permute算子用于对矩阵或数组的维度进行重新排列。
本申请实施例对于数据搬运算子的类型不作限定,下述实施例以数据搬运算子为transpose算子为例对本公开提供的一种用于神经网络处理器的指令生成方法进行示例说明。
示例性地,transpose算子对应的输入内存排布方式为2h16w8c。transpose算子对应的输出内存排布方式也为2h16w8c。transpose算子的搬运参数用于指示交换多维数组的h维度和w维度的顺序。
步骤302、基于搬运参数、输入内存排布方式、输出内存排布方式以及神经网络处理器支持的多个第一排布方式,确定将输入内存排布方式转换为输出内存排布方式所对应的多个转换路径组。
神经网络处理器是用于处理人工智能应用中的大量计算任务的装置,虽然处理器(例如,CPU)具备一定的数据处理能力,但是对于特定的处理任务,例如,图像处理和语音处理等。CPU的执行效率较低、执行效果较差,因此,需要神经网络处理器执行上述特定的数据运算。
示例性地,神经网络处理器可以为任一能够执行张量运算的加速器,例如,该神经网络处理器可以为大脑处理器(brain processing unit,BPU)、神经网络处理器(neuralnetwork processing unit,NPU)等。神经网络处理器具体可以包括图形处理器(GraphicsProcessing Unit,GPU)、现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)和专用集成电路(Application Specific Integrated Circuit,ASIC)等多种类型,神经网络处理器可以为同构加速器,也可以为异构加速器。可选的,在本发明实施例中,对神经网络处理器的类型和结构均不作具体限定。下述实施例以神经网络处理器为BPU为例进行示例性说明。
在一些实施例中,编译侧设备用于对函数算子的运算进行编译优化,以使数据搬运算子在神经网络处理器上高效运算。编译侧设备可以预先获取神经网络处理器所支持的多个第一排布方式,以便于基于神经网络处理器所支持的多个第一排布方式确定将输入内存排布方式转换为输出内存排布方式所对应的多个转换路径组。
示例性地,神经网络处理器支持的多个第一排布方式可以通过mid表示。神经网络处理器支持的第一排布方式与该神经网络处理器的硬件结构、软件架构、芯片类型和芯片工艺等参数有关,本申请实施例对于神经网络处理器支持的第一排布方式具体类型不作限定。例如,神经网络处理器支持的多个第一排布方式可以包括2h16w8c、256w,16w16c等排布方式。
在确定出神经网络处理器支持的多个第一排布方式后,可以根据多个第一排布方式、搬运参数、输入内存排布方式和输出内存排布方式,确定将输入内存排布方式转换为输出内存排布方式所对应的多个转换路径组。
示例性地,输入内存排布方式可以通过A表示,输出内存排布方式可以通过B表示。由于第一排布方式有多个,基于多个第一排布方式可以得出多个转换路径组,一个第一排布方式可以对应一个转换路径组。转换路径组的个数和第一排布方式的个数一致。
例如,以第一排布方式是mid1、mid2、…、mid10为例,多个转换路径组为:mid1对应的转换路径组1、mid2对应的转换路径组2、…、mid10对应的转换路径组10。
步骤303、基于多个转换路径组,确定目标转换路径。
在一些示例中,基于多个转换路径组后,可以从多个转换路径组中确定出目标转换路径。可选地,将输入内存排布方式转换为输出内存排布方式时,对应的处理时长最短的路径作为目标转换路径。
例如,在得到mid1对应的转换路径组1、mid2对应的转换路径组2、…、mid10对应的转换路径组10后,可以基于转换路径组1、转换路径组2、…以及转换路径组10,确定出目标转换路径。
步骤304、基于目标转换路径,生成神经网络处理器可执行的指令序列。
本公开实施例中的编译侧设备在生成神经网络处理器可执行的指令序列时,基于将神经网络处理器支持的第一排布方式作为数据格式转换的中间跳板,在将输入内存排布方式转换为输出内存排布方式过程中,基于中间跳板确定多个转换路径组,并从多个转换路径组中确定最优的路径作为目标转换路径,并进一步按照该目标转换路径生成神经网络处理器可执行的指令序列。因此本公开能够在不改变神经网络处理器的情况下,提高神经网络处理器的处理效率。
在一些实施例中,如图4所示,上述步骤302可以包括步骤401-步骤402。
步骤401、基于各第一排布方式和搬运参数,确定各第一排布方式对应的第二排布方式。
结合前述可知,在执行数据搬运算子的处理时,可以直接基于搬运参数,对按照输入内存排布方式排布的输入数据执行数据搬运,然后将搬运后的数据的排布方式转换为要求的输出内存排布方式。例如,输入数据的输入内存排布方式为2h16w8c,输出数据期望(或要求)的输出内存排布方式为2h16w8c。搬运参数用于指示交换h维度和w维度的顺序。基于搬运参数,对输入数据执行数据搬运后,搬运后的数据的排布方式为16h2w8c。然后将搬运后的数据的排布方式16h2w8c经过一系列复杂的reorder转换为要求的输出内存排布方式2h16w8c。
此外,还可以按照其他方式处理数据搬运算子。具体的,先将按照输入内存排布方式排布的输入数据转化为按照第一排布方式排布的输入数据,然后对按照第一排布方式排布的输入数据执行数据搬运,最后将搬运后的数据的排布方式转换为要求的输出内存排布方式。例如,第一排布方式为:16w16c,则可以先将输入数据的输入内存排布方式2h16w8creorder为16w16c,然后对按照16w16c排布的输入数据进行数据搬运,得到排布方式为16h16c的搬运后的数据,最后将搬运后的数据的排布方式16h16c经过两次reorder转换为要求的输出内存排布方式2h16w8c。
为了提高神经网络处理器的处理效率,在将输入内存排布方式转换为输出内存排布方式所对应的转换路径可以为:先将输入内存排布方式转换为第一排布方式,然后将第一排布方式转换为第二排布方式,最后将第二排布方式转换为输出内存排布方式。
在一些示例中,第二排布方式是基于搬运参数,对第一排布方式执行数据搬运后得出的。
示例性地,第二排布方式可以通过mid’表示。当第一排布方式有多个时,第二排布方式也有多个,一个第一排布方式可以对应一个第二排布方式。如,第二排布方式可以包括2w16h8c、256h,16h16c等排布方式。当多个第一排布方式为mid1、mid2、…、mid10时,多个第二排布方式为mid1’、mid2’、…、mid10’。其中,mid1和mid1’对应,mid2和mid2’对应,mid10和mid10’对应。
步骤402、基于输入内存排布方式、输出内存排布方式、各第一排布方式和各第一排布方式对应的第二排布方式,确定各第一排布方式对应的转换路径组。
基于步骤401可知,将输入内存排布方式转换为输出内存排布方式所对应的转换路径为:先将输入内存排布方式转换为第一排布方式,然后将第一排布方式转换为第二排布方式,最后将第二排布方式转换为输出内存排布方式。
基于上述将输入内存排布方式转换为输出内存排布方式所对应的转换路径可知,当第一排布方式有多个,相应的转换路径也有多个。因此,可以将第一排布方式作为基准,确定每个第一排布方式对应的转换路径组,以便于后续根据多个转换路径组得出最终的目标转换路径。
在一些示例中,可以基于输入内存排布方式、输出内存排布方式、一个第一排布方式和该第一排布方式对应的第二排布方式,得出该第一排布方式对应的转换路径组。其他第一排布方式对应的转换路径组的得出方式与其类似。
本公开实施例在确定多个转换路径组时,可以先根据各第一排布方式和搬运参数,得出各第一排布方式对应的第二排布方式,然后再根据输入内存排布方式、输出内存排布方式、各第一排布方式和各第一排布方式对应的第二排布方式,得出各第一排布方式对应的转换路径组。即本公开通过搬运参数,得出各第一排布方式对应的第二排布方式,从而确定出转换路径组涉及的所有元素,为后续进行数据搬运处理提供数据基础。
如图5所示,上述步骤402可以包括步骤501-步骤503。
步骤501、基于输入内存排布方式和第一排布方式,在计算图中确定将输入内存排布方式转换为第一排布方式所对应的多个第一子转换路径。
其中,计算图用于表征不同排布方式进行转换时所对应的至少一条转换路径。
示例性的,基于输入内存排布方式和第一排布方式,在计算图中确定将输入内存排布方式转换为第一排布方式时,可以得出将输入内存排布方式转换为第一排布方式对应的一个第一子转换路径或多个第一子转换路径。
在一些示例中,计算图可以包括多条转换路径,每条转换路径可以对应一条边和边权。其中,边用于连接两个不同的排布方式。边权用于表征两种不同排布方式进行转换时所需的转换时长。
下面以确定一个第一排布方式对应的转换路径组的过程为例进行示例性说明,其他第一排布方式对应的转换路径组的确定方式与其类似,后续不再赘述。
结合步骤401可知,将输入内存排布方式转换为输出内存排布方式所对应的转换路径包括三部分。第一部分为:将输入内存排布方式转换为第一排布方式。第二部分为:将第一排布方式转换为第二排布方式。第三部分为:将第二排布方式转换为输出内存排布方式。例如,第一部分为:A->mid。第二部分为:mid->mid’。第三部分为:mid’->B。
因此,在得出神经网络处理器支持的多个第一排布方式后,可以根据计算图先确定出第一部分对应的多个第一子转换路径。
例如,根据计算图,可以得出多个第一子转换路径。多个第一子转换路径包括第一子转换路径1、第一子转换路径2、…、第一子转换路径n。若第一排布方式为mid1,则第一部分为:A->mid1。第一子转换路径1可以为:A->C->mid1。第一子转换路径2可以为:A->C->D->mid1。第一子转换路径可以n为:A->E->mid1。
步骤502、基于输出内存排布方式和第二排布方式,在计算图中确定将输出内存排布方式转换为第二排布方式所对应的多个第二子转换路径。
示例性的,基于输出内存排布方式和第二排布方式,在计算图中确定将输出内存排布方式转换为第二排布方式时,可以得出将输出内存排布方式转换为第二排布方式对应的一个第二子转换路径或多个第二子转换路径。
参考步骤501,在确定出各第一排布方式对应的第二排布方式后,可以根据计算图,得出第三部分对应的多个第二子转换路径。
例如,根据计算图,可以得出多个第二子转换路径。多个第二子转换路径包括第二子转换路径1、第二子转换路径2、…、第二子转换路径n。若第一排布方式为mid1,则第三部分为:B-<mid1’。第二子转换路径1可以为:B-<F-<mid1’。第二子转换路径2可以为:B-<F-<G-<mid1’。第二子转换路径n可以为:B-<H-<mid1’。
步骤503、基于多个第一子转换路径和多个第二子转换路径,确定多个转换路径,将多个转换路径作为第一排布方式对应的转换路径组。
结合步骤401可知,第二排布方式是基于搬运参数,对第一排布方式执行数据搬运后得出的。再结合步骤501,则第二部分只对应一条路径,第一排布方式到第二排布方式,即mid->mid1’。因此,在得出第一部分对应的多个第一子转换路径以及第三部分对应的多个第二子转换路径后,即可得出一个第一排布方式对应的多条转换路径。该多条转换路径可以形成该第一排布方式对应的转换路径组。
示例性地,结合步骤501和步骤502,若第一排布方式为mid1,则mid1对应的转换路径为:A->mid1->mid1’->B。mid2对应的转换路径组2为:A->mid2->mid2’->B。mid10对应的转换路径组10为:A->mid10->mid10’->B。
一个第一排布方式对应的转换路径组可以包括多个转换路径。例如,当第一排布方式为mid1时,mid1对应的转换路径组包括的多个转换路径可以为:转换路径1、转换路径2、转换路径3、转换路径4、转换路径5、转换路径6、转换路径7、转换路径8和转换路径9。
其中,转换路径1为第一子转换路径1和第二子转换路径1组合后得到的。转换路径1为:A->C->mid1->mid1’->F->B。
转换路径2为第一子转换路径1和第二子转换路径2组合后得到的。转换路径2为:A->C->mid1->mid1’->G->F->B。
转换路径3为第一子转换路径1和第二子转换路径n组合后得到的。转换路径3为:A->C->mid1->mid1’->H->B。
转换路径4为第一子转换路径2和第二子转换路径1组合后得到的。转换路径4为:A->C->D->mid1->mid1’->F->B。
转换路径5为第一子转换路径2和第二子转换路径1组合后得到的。转换路径5为:A->C->D->mid1->mid1’->G->F->B。
转换路径6为第一子转换路径2和第二子转换路径1组合后得到的。转换路径6为:A->C->D->mid1->mid1’->H->B。
转换路径7为第一子转换路径n和第二子转换路径1组合后得到的。转换路径7为:A->E->mid1->mid1’->F->B。
转换路径8为第一子转换路径n和第二子转换路径1组合后得到的。转换路径8为:A->E->mid1->mid1’->G->F->B。
转换路径9为第一子转换路径n和第二子转换路径1组合后得到的。转换路径9为:A->E->mid1->mid1’->H->B。
上述转换路径1~转化路径9均为当第一排布方式为mid1时对应的转换路径,故可以基于上述转换路径1~转化路径9得到第一排布方式mid1对应的转换路径组1。也就是说,mid1对应的转换路径组1中包括9条转换路径。
可以理解的是,当第一排布方式为mid2时,对应的转换路径组为转换路径组2,转换路径组2也可以包括至少一条转换路径。依次类推,可以得出第一排布方式为mid3对应的转换路径组3,第一排布方式为mid4对应的转换路径组4,…,第一排布方式为mid10对应的转换路径组10等等。
本公开实施例在确定各第一排布方式对应的转换路径组时,依次确定多个第一子转换路径和多个第二子转换路径,最后结合多个第一子转换路径和多个第二子转换路径得出转换路径组。这样,便于后续在多种可能的转换路径中确定出处理时长最短的转换路径,从而提高神经网络处理器的处理效率。
在一些示例中,如图6所示,结合图5上述步骤303可以包括步骤601-步骤602。
步骤601、确定各转换路径组中的各转换路径的转换时长。
在一些示例中,基于步骤501-步骤503可知,一个第一排布方式可以对应一个转换路径组。一个转换路径组中可以包括多个转换路径,在得到多个转换路径后,可以基于多个转换路径中的各转换路径,确定各转换路径的转换时长。
示例性的,基于多个转换路径中的各转换路径,确定各转换路径的转换时长可以是:基于多个转换路径中的各转换路径和计算图,得出各转换路径的转换时长。
步骤602、将多个转换路径组中转换时长最短的转换路径确定为目标转换路径。
根据步骤601,可以依次得出各转换路径的转换时长。例如,根据步骤601,得出转换路径组1(即第一排布方式mid1对应的)中各转换路径的转换时长、转换路径组2(即第一排布方式mid2对应的)中各转换路径的转换时长、…、转换路径组10(即第一排布方式mid1对应的)中各转换路径的转换时长,然后将多个转换路径组中转换时长最短的转换路径确定为目标转换路径。例如,目标转换路径为转换路径组1中的转换路径3。
本公开实施例在确定目标转换路径时,可以根据各转换路径的转换时长得出。这样,通过对比各转换路径的转换时长,可以在一定程度上确保目标转换路径为处理数据搬运算子对应的最优路径。
在一些示例中,如图7所示,上述步骤601可以包括步骤701-步骤703。
步骤701、基于计算图和各转换路径中的第一子转换路径,确定各第一子转换路径的第一转换时长。
基于步骤503可知,转换路径组中的转换路径是基于第一子转换路径和第二子转换路径组合后得到的,并且如何确定候选转换路径与转换时长相关,因此,可以基于计算图和各转换路径中的第一子转换路径,确定第一子转换路径的第一转换时长,基于计算图和各转换路径中的第二子转换路径,确定第二子转换路径的第二转换时长,最后根据第一转换时长和第二转换时长,确定出转换路径对应的转换时长。
结合步骤501可知,计算图中包括每条转换路径对应的边权,而每条转换路径的边权可以表征两种不同排布方式进行转换时所需的转换时长。因此,可以利用计算图,确定出转换路径中每个第一子转换路径的第一转换时长。
示例性地,对于多个第一子转换路径(即第一子转换路径1、第一子转换路径2、…、第一子转换路径n)而言,可以根据计算图,得到每个第一子转换路径的第一转换时长。例如,第一子转换路径1的第一转换时长为t11,第一子转换路径2的第一转换时长为t12,第一子转换路径n的第一转换时长为t1n。
步骤702、基于计算图和各转换路径中的第二子转换路径,确定第二子转换路径的第二转换时长。
参考步骤701,对于多个第二子转换路径(即第二子转换路径1、第二子转换路径2、…、第二子转换路径n)而言,可以根据计算图,得到每个第二子转换路径的第二转换时长。第二子转换路径1的第二转换时长为t21,第二子转换路径2的第二转换时长为t22,第二子转换路径n的第二转换时长为t2n。
步骤703、基于第一转换时长和第二转换时长,确定转换路径对应的转换时长。
在一些示例中,在得出一个第一排布方式对应的转换路径组后,可以根据该转换路径组中的每条转换路径确定每条转换路径对应的总转换时长。
其中,每条转换路径对应的总转换时长是根据第一转换时长和第二转换时长得到的。
示例性地,在得到第一转换时长和第二转换时长之后,可以对第一转换时长和第二转换时长进行加和,得出每条转换路径对应的总转换时长。
例如,结合步骤503,mid1对应转换路径组1,转换路径组1包括转换路径1~转换路径9。
其中,由于转换路径1是第一子转换路径1和第二子转换路径1组合后得到的,所以转换路径1对应的总转换时长为:t11+t21。转换路径2是第一子转换路径1和第二子转换路径2组合后得到的,所以转换路径2对应的总转换时长为:t11+t22。转换路径3是第一子转换路径1和第二子转换路径n组合后得到的,所以转换路径3对应的总转换时长为:t11+t2n。转换路径4是第一子转换路径2和第二子转换路径1组合后得到的,所以转换路径4对应的总转换时长为:t12+t21。转换路径5是第一子转换路径2和第二子转换路径1组合后得到的,所以转换路径5对应的总转换时长为:t12+t22。转换路径6是第一子转换路径2和第二子转换路径1组合后得到的,所以转换路径6对应的总转换时长为:t12+t2n。转换路径7是第一子转换路径n和第二子转换路径1组合后得到的,所以转换路径7对应的总转换时长为:t1n+t21。转换路径8是第一子转换路径n和第二子转换路径1组合后得到的,所以转换路径8对应的总转换时长为:t1n+t22。转换路径9是第一子转换路径n和第二子转换路径1组合后得到的,所以转换路径9对应的总转换时长为:
t1n+t2n。
本公开实施例可以确定出转换路径组中每条转换路径的转换时长,以便于后续根据每条转换路径的转换时长,得出目标转换路径。由于利用不同转换路径处理数据搬运算子可直接影响神经网络处理器的处理效率,因此,利用每条转换路径的转换时长确定出的候选转换路径,能够间接提高神经网络处理器的处理效率。
在一些示例中,如图8所示,上述步骤701可以包括步骤801-步骤802。
步骤801、利用目标函数,在计算图中查询第一子转换路径中各转换方式对应的转换时长。
在一些示例中,可以通过目标函数在计算图中查询第一子转换路径中各种转换方式对应的转换时长。
结合步骤501可知,计算图中的每条转换路径对应的边权可以表征两种不同排布方式进行转换时所需的转换时长。所以在确定出第一子转换路径后,可以通过目标函数,在计算图中查询第一子转换路径对应的边权,从而得出第一子转换路径中各转换方式对应的转换时长。
例如,对于mid1对应转换路径1而言,转换路径1包括第一子转换路径1和第二子转换路径1。第一子转换路径1为A->C->mid1。因此,可以利用目标函数,在计算图中分别查询第一子转换路径1中各转换方式对应的边权。示例性地,在计算图中分别查询A->C对应的边权,以及C->mid1对应的边权。
步骤802、基于第一子转换路径中各转换方式对应的转换时长,确定第一子转换路径的第一转换时长。
在一些示例中,在得到第一子转换路径中各转换方式对应的转换时长后,可以将各个转换方式对应的转换时长相加,从而得出第一子转换路径的第一转换时长。
例如,在得到A->C对应的边权,以及C->mid1对应的边权后,可以将A->C对应的边权和C->mid1对应的边权相加,从而得到第一子转换路径1A->C->mid1对应的转换时长。
可以理解的是,第二子转换路径的第二转换时长的确定方式与第一子转换路径的第一转换时长的确定方式类似。示例性地,利用目标函数,在计算图中查询第二子转换路径中各转换方式对应的转换时长;基于第二子转换路径中各转换方式对应的转换时长,确定第二子转换路径的第一转换时长。
示例性地,对于转换路径1中的第二子转换路径1而言,第二子转换路径1为mid1’->F->B,可以利用目标函数,在计算图中分别查询第二子转换路径1中各转换方式对应的边权。
例如,在计算图中分别查询B-<F对应的边权,以及F-<mid1’对应的边权。在得到B-<F对应的边权,以及F-<mid1’对应的边权后,可以将B-<F对应的边权和F-<mid1’对应的边权相加,从而得到第二子转换路径1mid1’->F->B对应的转换时长。
在一些示例中,如图9所示,上述步骤304可以包括步骤901-步骤903。
步骤901、基于输入内存排布方式和目标转换路径中的第一排布方式,生成神经网络处理器可执行的第一转换指令。
其中,可执行的指令序列包括第一转换指令、数据搬运指令和第二转换指令。
在确定出目标转换路径后,可以基于输入内存排布方式和目标转换路径中的第一排布方式,生成神经网络处理器可执行的第一转换指令,该第一转换指令能够用于将按照输入内存排布方式排布的输入数据转换为按照目标转换路径中的第一排布方式排布的输入数据。由于目标转换路径为实现数据搬运算子对应的最短路径,因此通过该方式得到的第一转换指令可以帮助神经网络处理器采用处理时长最短的方式处理数据搬运算子。
步骤902、基于第一排布方式和目标转换路径中的第二排布方式,生成神经网络处理器可执行的数据搬运指令。
其中,第二排布方式是基于第一排布方式和搬运参数确定的。
在确定出目标转换路径后,可以基于目标转换路径中的第一排布方式和第二排布方式,生成神经网络处理器可执行的数据搬运指令,该数据搬运指令能够用于对按照第一排布方式排布的输入数据进行数据搬运处理,得到按照目标转换路径中的第二排布方式排布的输出数据。
步骤903、基于第二排布方式和输出内存排布方式,生成神经网络处理器可执行的第二转换指令。
基于目标转换路径中的第二排布方式和目标转换路径中的输出内存排布方式,可以生成神经网络处理器可执行的第二转换指令,该第二转换指令能够用于将按照第二排布方式排布的输出数据转换为按照输出内存排布方式排布的输出数据。
本公开实施例中的编译侧设备在生成人工智能加速器可执行的指令时,可以根据输入内存排布方式、输出内存排布方式、目标转换路径中的第一排布方式和第二排布方式,生成第一转换指令、数据搬运指令和第二转换指令。由于第一转换指令、数据搬运指令和第二转换指令均对应神经网络处理器最小的硬件单元,神经网络处理器接收到上述指令时,不需要再对指令进行转化,直接对输入数据进行运算即可。提高了数据处理的便捷性,避免了指令的进一步转化,提高运算效率。
图10为本公开实施例提供的一种通过神经网络处理器对输入数据进行处理的方法,该方法可以应用于运行侧设备,如图10所示,该方法包括步骤1001-步骤1002。
步骤1001、确定需要对按照输入内存排布方式排布的输入数据进行处理的可执行指令序列。
其中,可执行指令序列是基于目标转换路径生成的,目标转换路径是基于将输入内存排布方式转换为输出内存排布方式所对应的多个转换路径组确定的。
在一些实施例中,可执行指令序列至少包括数据搬运指令。该数据搬运指令用于对按照目标转换路径中的第一排布方式排布的输入数据进行数据搬运处理,得到按照目标转换路径中的第二排布方式排布的输出数据。这样,能够使神经网络处理器按照目标转换路径处理数据搬运算子,以提高神经网络处理器的处理效率。
编译侧设备在生成可执行指令序列后,可以直接将可执行指令序列发送给神经网络处理器,或者还可以通过可移动硬盘的形式将可执行指令序列发送给神经网络处理器。
需要说明的是,可执行指令序列包括多个指令,该多个指令可以是上述图3-图9所示的任一实施例中的神经网络处理器可执行的指令。
步骤1002、基于可执行指令序列,通过神经网络处理器对按照输入内存排布方式排布的输入数据进行数据搬运处理,得到按照输出内存排布方式排布的输出数据。
神经网络处理器接收到可执行指令序列后,执行该可执行指令序列,从而实现对按照输入内存排布方式排布的输入数据进行数据搬运,得到按照输出内存排布方式排布的输出数据。
本公开实施例提供的通过神经网络处理器对输入数据进行处理的方法,通过确定对输入数据进行处理的可执行指令序列,利用该可执行指令序列对按照输入内存排布方式排布的输入数据进行数据搬运,得到按照输出内存排布方式排布的输出数据。
在一些实施例中,如图11所示,上述步骤1002可以包括步骤1101。
步骤1101、基于可执行指令序列,按照目标转换路径,通过神经网络处理器对按照输入内存排布方式排布的输入数据进行数据搬运处理,得到按照输出内存排布方式排布的输出数据。
结合前述可知,可执行指令序列是基于目标转换路径得到的,所以运行可执行指令序列的过程相当于执行目标转换路径的过程。由于目标转换路径为神经网络处理器处理数据搬运算子对应的处理时长最短的转换路径,所以神经网络处理器通过执行可执行指令序列,实现“对按照输入内存排布方式排布的输入数据进行数据搬运处理,得到按照输出内存排布方式排布的输出数据”这一过程的处理效率也有所提升。
本公开实施例提供的通过神经网络处理器对输入数据进行处理的方法,神经网络处理器基于目标转换路径,对按照输入内存排布方式排布的输入数据进行数据搬运处理,得到按照输出内存排布方式排布的输出数据。由于目标转换路径为处理数据搬运算子对应的处理时长最短的转换路径,所以能够高效实现数据搬运算子的处理。
在一些实施例中,如图12所示,上述步骤1101可以包括步骤1201-步骤1203。
步骤1201、基于可执行指令序列中的第一转换指令,将按照输入内存排布方式排布的输入数据转换为按照目标转换路径中的第一排布方式排布的输入数据。
结合前述图3至图9的方案,通过执行可执行指令序列中的第一转换指令,可以将按照输入内存排布方式排布的输入数据转换为按照目标转换路径中的第一排布方式排布的输入数据。之后利用第一排布方式排布的输入数据,可以得到按照目标转换路径中的第二排布方式排布的输出数据。
步骤1202、基于可执行指令序列中的数据搬运指令,对按照第一排布方式排布的输入数据进行数据搬运处理,得到按照目标转换路径中的第二排布方式排布的输出数据。
在得到按照第一排布方式排布的输入数据后,可以继续执行可执行指令序列中的数据搬运指令,对按照第一排布方式排布的输入数据进行数据搬运处理,从而得到按照目标转换路径中的第二排布方式排布的输出数据。
步骤1203、基于可执行指令序列中的第二转换指令,将按照第二排布方式排布的输出数据转换为按照输出内存排布方式排布的输出数据。
在得到按照目标转换路径中的第二排布方式排布的输出数据后,可以继续执行可执行指令序列中的第二转换指令,将按照第二排布方式排布的输出数据转换为按照输出内存排布方式排布的输出数据。
本公开实施例提供的通过神经网络处理器对输入数据进行处理的方法,利用可执行指令序列中的第一转换指令,得到按照目标转换路径中的第二排布方式排布的输出数据。然后通过可执行指令序列中的数据搬运指令和第二转换指令,得到按照输出内存排布方式排布的输出数据。这样,可以实现按照处理时长最短的方式处理数据搬运算子,从而提高神经网络处理器的数据处理效率。
示例性装置
图13为本公开实施例提供的一种用于神经网络处理器的指令生成装置,如图13所示,该用于神经网络处理器的指令生成装置1300包括第一确定模块1301、第二确定模块1302、第三确定模块1303以及指令生成模块1304。
其中,第一确定模块1301,用于确定数据搬运算子对应的输入内存排布方式和输出内存排布方式,以及数据搬运算子的搬运参数。
第二确定模块1302,用于确定基于所述搬运参数、所述输入内存排布方式、所述输出内存排布方式以及神经网络处理器支持的多个第一排布方式,确定将输入内存排布方式转换为输出内存排布方式所对应的多个转换路径组。
第三确定模块1303,用于基于多个转换路径组,确定目标转换路径。
指令生成模块1304,用于基于目标转换路径,生成神经网络处理器可执行的指令序列。
在一些实施例中,第二确定模块1303,还用于基于各第一排布方式和搬运参数,确定各第一排布方式对应的第二排布方式;基于输入内存排布方式、输出内存排布方式、各第一排布方式和各第一排布方式对应的第二排布方式,确定各第一排布方式对应的转换路径组。
在一些实施例中,第二确定模块1303,还用于基于输入内存排布方式和第一排布方式,在计算图中确定将输入内存排布方式转换为第一排布方式所对应的多个第一子转换路径;计算图用于表征不同排布方式进行转换所对应的至少一条转换路径;基于输出内存排布方式和第二排布方式,在计算图中确定将输出内存排布方式转换为第二排布方式所对应的多个第二子转换路径;基于多个第一子转换路径和多个第二子转换路径,确定多个转换路径,将多个转换路径作为第一排布方式对应的转换路径组。
在一些实施例中,第三确定模块1303,还用于确定各转换路径组中的各转换路径的转换时长;将多个转换路径组中转换时长最短的转换路径确定为所述目标转换路径。
在一些实施例中,第三确定模块1303,还用于基于计算图和各转换路径中的第一子转换路径,确定第一子转换路径的第一转换时长;基于计算图和各转换路径中的第二子转换路径,确定第二子转换路径的第二转换时长;基于第一转换时长和所述第二转换时长,确定转换路径对应的转换时长。
在一些实施例中,第三确定模块1303,还用于利用目标函数,在计算图中查询第一子转换路径中各转换方式对应的转换时长;基于第一子转换路径中各转换方式对应的转换时长,确定第一子转换路径的第一转换时长。
在一些实施例中,指令生成模块1304,用于基于输入内存排布方式和目标转换路径中的第一排布方式,生成神经网络处理器可执行的第一转换指令;基于第一排布方式和目标转换路径中的第二排布方式,生成神经网络处理器可执行的数据搬运指令;基于第二排布方式和输出内存排布方式,生成神经网络处理器可执行的第二转换指令;其中,可执行的指令序列包括第一转换指令、数据搬运指令和第二转换指令。
图14为本公开实施例提供的一种通过神经网络处理器对输入数据进行处理的装置,如图14所示,该通过神经网络处理器对输入数据进行处理的装置1400包括确定模块1401和处理模块1402。
确定模块1401,用于确定需要对按照输入内存排布方式排布的输入数据进行处理的可执行指令序列;其中,可执行指令序列是基于目标转换路径生成的,目标转换路径是基于将输入内存排布方式转换为输出内存排布方式所对应的多个转换路径组确定的。
处理模块1402,用于基于可执行指令序列,通过神经网络处理器对按照输入内存排布方式排布的输入数据进行数据搬运处理,得到按照输出内存排布方式排布的输出数据。
在一些实施例中,处理模块1402,还用于基于可执行指令序列,按照目标转换路径,通过神经网络处理器对按照输入内存排布方式排布的输入数据进行数据搬运处理,得到按照输出内存排布方式排布的输出数据。
在一些实施例中,处理模块1402,还用于基于可执行指令序列中的第一转换指令,将按照输入内存排布方式排布的输入数据转换为按照目标转换路径中的第一排布方式排布的输入数据;基于可执行指令序列中的数据搬运指令,对按照第一排布方式排布的输入数据进行数据搬运处理,得到按照目标转换路径中的第二排布方式排布的输出数据;以及基于可执行指令序列中的第二转换指令,将按照第二排布方式排布的输出数据转换为按照输出内存排布方式排布的输出数据。
示例性电子设备
图15为本公开实施例提供的一种电子设备的结构图,如图15所示,该电子设备1500包括一个或多个处理器1501和存储器1502。
处理器1501可以是中央处理单元(central processing unit,CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备1500中的其他组件以执行期望的功能。
存储器1502可以包括一个或多个计算机程序产品,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(random-access memory,RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(read-only memory,ROM)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器1501可以运行程序指令,以实现上文的本公开的各个实施例的指令生成方法或者其他期望的功能。
在一个示例中,电子设备1500还可以包括:输入装置1503和输出装置1504,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
当然,为了简化,图15中仅示出了该电子设备1500中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备1500还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的指令生成方法或者其他方法中的步骤。
计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的指令生成方法或者其他方法中的步骤。
计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

Claims (13)

1.一种用于神经网络处理器的指令生成方法,包括:
确定数据搬运算子对应的输入内存排布方式和输出内存排布方式,以及所述数据搬运算子的搬运参数;
基于所述搬运参数、所述输入内存排布方式、所述输出内存排布方式以及所述神经网络处理器支持的多个第一排布方式,确定将所述输入内存排布方式转换为所述输出内存排布方式所对应的多个转换路径组;
基于所述多个转换路径组,确定目标转换路径;
基于所述目标转换路径,生成所述神经网络处理器可执行的指令序列。
2.根据权利要求1所述的方法,其中,所述基于所述多个转换路径组,确定目标转换路径,包括:
确定各所述转换路径组中的各转换路径的转换时长;
将所述多个转换路径组中转换时长最短的转换路径确定为所述目标转换路径。
3.根据权利要求1或2所述的方法,其中,所述基于所述神经网络处理器支持的多个第一排布方式、所述搬运参数、所述输入内存排布方式和所述输出内存排布方式,确定将所述输入内存排布方式转换为所述输出内存排布方式所对应的多个转换路径组,包括:
基于各所述第一排布方式和所述搬运参数,确定各所述第一排布方式对应的第二排布方式;
基于所述输入内存排布方式、所述输出内存排布方式、各所述第一排布方式和各所述第一排布方式对应的第二排布方式,确定各所述第一排布方式对应的转换路径组。
4.根据权利要求3所述的方法,其中,所述基于所述输入内存排布方式、所述输出内存排布方式、各所述第一排布方式和各所述第一排布方式对应的第二排布方式,确定各所述第一排布方式对应的转换路径组,包括:
基于所述输入内存排布方式和所述第一排布方式,在计算图中确定将所述输入内存排布方式转换为所述第一排布方式所对应的多个第一子转换路径;所述计算图用于表征不同排布方式进行转换所对应的至少一条转换路径;
基于所述输出内存排布方式和所述第二排布方式,在所述计算图中确定将所述输出内存排布方式转换为所述第二排布方式所对应的多个第二子转换路径;
基于所述多个第一子转换路径和所述多个第二子转换路径,确定多个转换路径,将所述多个转换路径作为所述第一排布方式对应的所述转换路径组。
5.根据权利要求4所述的方法,其中,所述确定各所述转换路径组中的各转换路径的转换时长,包括:
基于计算图和各所述转换路径中的第一子转换路径,确定所述第一子转换路径的第一转换时长;
基于所述计算图和各所述转换路径中的第二子转换路径,确定所述第二子转换路径的第二转换时长;
基于所述第一转换时长和所述第二转换时长,确定所述转换路径对应的转换时长。
6.根据权利要求5所述的方法,其中,所述基于计算图和各所述转换路径中的第一子转换路径,确定所述第一子转换路径的第一转换时长,包括:
利用目标函数,在所述计算图中查询所述第一子转换路径中各转换方式对应的转换时长;
基于所述第一子转换路径中各转换方式对应的转换时长,确定所述第一子转换路径的第一转换时长。
7.根据权利要求1或2所述的方法,其中,所述基于所述目标转换路径,生成所述神经网络处理器可执行的指令序列,包括:
基于所述输入内存排布方式和所述目标转换路径中的第一排布方式,生成所述神经网络处理器可执行的第一转换指令;
基于所述第一排布方式和所述目标转换路径中的第二排布方式,生成所述神经网络处理器可执行的数据搬运指令;其中,所述第二排布方式是基于所述第一排布方式和所述搬运参数确定的;
基于所述第二排布方式和所述输出内存排布方式,生成所述神经网络处理器可执行的第二转换指令;
其中,所述可执行的指令序列包括所述第一转换指令、所述数据搬运指令和所述第二转换指令。
8.一种通过神经网络处理器对输入数据进行处理的方法,包括:
确定需要对按照输入内存排布方式排布的输入数据进行处理的可执行指令序列;其中,所述可执行指令序列是基于目标转换路径生成的,所述目标转换路径是基于将所述输入内存排布方式转换为输出内存排布方式所对应的多个转换路径组确定的;
基于所述可执行指令序列,通过所述神经网络处理器对按照所述输入内存排布方式排布的输入数据进行数据搬运处理,得到按照所述输出内存排布方式排布的输出数据。
9.根据权利要求8所述的方法,其中,所述基于所述可执行指令序列,通过所述神经网络处理器对按照所述输入内存排布方式排布的输入数据进行转置处理,得到按照所述输出内存排布方式排布的输出数据,包括:
基于所述可执行指令序列,按照所述目标转换路径,通过所述神经网络处理器对按照所述输入内存排布方式排布的输入数据进行数据搬运处理,得到按照所述输出内存排布方式排布的所述输出数据。
10.根据权利要求9所述的方法,其中,所述基于所述可执行指令序列,按照所述目标转换路径,通过所述神经网络处理器对按照所述输入内存排布方式排布的输入数据进行处理,得到按照所述输出内存排布方式排布的所述输出数据,包括:
基于所述可执行指令序列中的第一转换指令,将按照所述输入内存排布方式排布的输入数据转换为按照所述目标转换路径中的第一排布方式排布的输入数据;
基于所述可执行指令序列中的数据搬运指令,对按照所述第一排布方式排布的输入数据进行数据搬运处理,得到按照所述目标转换路径中的第二排布方式排布的输出数据;
基于所述可执行指令序列中的第二转换指令,将按照所述第二排布方式排布的输出数据转换为按照所述输出内存排布方式排布的输出数据。
11.一种用于神经网络处理器的指令生成装置,包括:
第一确定模块,用于确定数据搬运算子对应的输入内存排布方式和输出内存排布方式,以及所述数据搬运算子的搬运参数;
第二确定模块,用于基于所述搬运参数、所述输入内存排布方式和所述输出内存排布方式以及所述神经网络处理器支持的多个第一排布方式,确定将所述输入内存排布方式转换为所述输出内存排布方式所对应的多个转换路径组;
第三确定模块,用于基于所述多个转换路径组,确定目标转换路径;
指令生成模块,用于基于所述目标转换路径,生成所述神经网络处理器可执行的指令序列。
12.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-7中任一所述的用于神经网络处理器的指令生成方法;或者,执行上述权利要求8-10中任一所述的通过神经网络处理器对输入数据进行处理的方法。
13.一种电子设备,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述权利要求1-7中任一所述的用于神经网络处理器的指令生成方法;或者,执行上述权利要求8-10中任一所述的通过神经网络处理器对输入数据进行处理的方法。
CN202311869130.4A 2023-12-29 2023-12-29 指令生成方法、装置及电子设备 Pending CN117827283A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311869130.4A CN117827283A (zh) 2023-12-29 2023-12-29 指令生成方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311869130.4A CN117827283A (zh) 2023-12-29 2023-12-29 指令生成方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN117827283A true CN117827283A (zh) 2024-04-05

Family

ID=90509400

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311869130.4A Pending CN117827283A (zh) 2023-12-29 2023-12-29 指令生成方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN117827283A (zh)

Similar Documents

Publication Publication Date Title
KR102258414B1 (ko) 처리 장치 및 처리 방법
CN109219821B (zh) 运算装置和方法
US20230251861A1 (en) Accelerating linear algebra kernels for any processor architecture
US8595280B2 (en) Apparatus and method for performing multiply-accumulate operations
US9696994B2 (en) Apparatus and method for comparing a first vector of data elements and a second vector of data elements
Li et al. MPFFT: An auto-tuning FFT library for OpenCL GPUs
Peng et al. GLU3. 0: Fast GPU-based parallel sparse LU factorization for circuit simulation
Ahmad et al. FFConv: an FPGA-based accelerator for fast convolution layers in convolutional neural networks
CN112269581B (zh) 一种可重构芯片的内存耦合编译方法及系统
Georganas et al. Harnessing deep learning via a single building block
JP7089124B2 (ja) 不必要なデータ移動を回避するためのリシェイプおよびブロードキャストの最適化
Tsai et al. Performance-portable autotuning of opencl kernels for convolutional layers of deep neural networks
Kyrtatas et al. A basic linear algebra compiler for embedded processors
Altoyan et al. Investigating performance losses in high-level synthesis for stencil computations
JP6615209B2 (ja) ソートへの応用を伴うベクトル内の反復値の複数のインスタンスを発見するための方法および装置
CN117827283A (zh) 指令生成方法、装置及电子设备
US20220188382A1 (en) Information processing apparatus, information processing method, and computer-readable recording medium
CN114239803B (zh) 神经网络模型的编译方法和装置、电子设备和存储介质
US20140258206A1 (en) Method and program structure for machine learning
Mullin et al. Effective data parallel computation using the Psi calculus
CN117234514B (zh) 将标量化程序转换为向量化程序的方法、系统及相关设备
US20230325464A1 (en) Hpc framework for accelerating sparse cholesky factorization on fpgas
Leclaire et al. Efficient implementation of convolution and winograd on asmp embedded multicore vector processor
Song et al. Extending Neural Processing Unit and Compiler for Advanced Binarized Neural Networks
Li et al. swTVM: Towards Optimized Tensor Code Generation for Deep Learning on Sunway Many-Core Processor

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination