CN116029337A - 一种数据处理方法、片上系统、电子设备及介质 - Google Patents
一种数据处理方法、片上系统、电子设备及介质 Download PDFInfo
- Publication number
- CN116029337A CN116029337A CN202211389556.5A CN202211389556A CN116029337A CN 116029337 A CN116029337 A CN 116029337A CN 202211389556 A CN202211389556 A CN 202211389556A CN 116029337 A CN116029337 A CN 116029337A
- Authority
- CN
- China
- Prior art keywords
- node
- data processing
- neural network
- data
- memory
- 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
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Multi Processors (AREA)
Abstract
本申请涉及人工智能技术领域,公开了一种数据处理方法、片上系统、电子设备及介质。本申请的数据处理方法包括:确定神经网络中各节点所需的数据处理资源,并且根据各节点的数据依赖关系将神经网络中的节点分为多个独立节点单元组;基于各节点所需的数据处理资源、多个独立节点单元组,确定神经网络中各节点的执行顺序;控制神经网络基于执行顺序执行各节点,以对待处理数据进行处理。上述数据处理方法可以为各节点分配各节点所需的数据处理资源,并且可以控制神经网络基于执行顺序执行各节点,降低了因资源分配而产生的等待时间,避免了资源的浪费,提升了计算速度。
Description
技术领域
本申请涉及人工智能技术领域,特别涉及一种数据处理方法、片上系统、电子设备及介质。
背景技术
随着人工智能(artificial intelligence,AI)的迅速发展,神经网络在人工智能领域的应用越来越广泛。可以理解,神经网络是通过神经网络中各节点(或称为各算子)执行相应的操作进行数据处理的;其中,神经网络中一些节点的输出数据可以作为另一些节点的输入数据,各节点只有接收到输入数据后,才可以执行相应的操作,即节点之间存在数据依赖关系。
目前,神经网络是根据神经网络中各节点的连接顺序依次运行的,在神经网络运行过程中会存在一些节点虽然资源已经准备完毕,但是按照执行顺序而被迫等待,因此执行时间较长;并且,电子设备会按照相同的分配方式为各节点分配相同数量的计算单元与内存单元,但是神经网络中各节点执行的操作类型并不相同,例如对于计算敏感性操作,在读取数据后,需要对单位数据执行多次算术运算,因此计算所需要的时间较长,为了加快计算速度,需要较多的计算资源,如常见的卷积算子;对于内存敏感性操作,在读取数据后,单位数据执行极少的算术操作,计算单元的需求不高,但是需要访问大量的内存单元,由此可见,各节点对于计算单元和内存单元的需求并不完全一致,若按照相同的分配方式为执行不同操作的节点分配相同数量的计算单元与内存单元,会造成资源的分配时间较长,部分节点资源过多,导致资源浪费,以及部分节点资源过少,导致资源不足的情况,从而被迫延长执行时间。
发明内容
本申请实施例中提供一种数据处理方法、片上系统、电子设备及介质。
第一方面,本申请实施例提供一种数据处理方法,应用于电子设备,包括:确定神经网络中各节点所需的数据处理资源,并且根据各节点的数据依赖关系将神经网络中的节点分为多个独立节点单元组,其中,独立节点单元组包括多个独立节点单元,同一独立节点单元组中的各独立节点单元之间无数据依赖关系;基于各节点所需的数据处理资源、多个独立节点单元组,确定神经网络中各节点的执行顺序;控制神经网络基于执行顺序执行各节点,以对待处理数据进行处理。
可以理解,无数据依赖关系的节点是指节点间的执行顺序均可以任意设置,并不会影响神经网络最终的数据处理结果的节点,存在数据依赖关系的节点是指节点间的执行顺序变换后会影响神经网络最终数据处理结果的节点。
数据处理资源包括计算单元、内存单元,计算单元可以理解为一定规格的中央处理器(central processing unit,CPU)资源或者一些AI加速器的计算单元(ProcessorElement,PE),或者称为设定的任务处理时间,内存单元可以理解为设定规格的内存资源(内存空间),或设定的内存搬运时间,例如从容量大访问速度慢的外部存储(如双倍数据率同步动态随机存取存储器(Double Data Rate Synchronous Dynamic Random AccessMemory,DDR))搬移数据到容量小但访问存储快的片上资源(如静态随机存取存储器(Static Random-Access Memory,SRAM)),即内存单元。
在本申请实施例中,可以根据神经网络中各节点的需分配资源,为各节点分配资源,如此可以避免出现部分节点资源过多,导致资源浪费,或部分节点资源过少,导致资源不足的情况,并且还可以并行多个独立节点单元组,以调整神经网络中各节点的执行顺序,实现了等待时间的减少,最终实现了数据处理整体时间的减少。
在一种可能的实现中,基于各节点所需的数据处理资源、多个独立节点单元组,确定神经网络中各节点的执行顺序包括:基于各节点所需的数据处理资源、多个独立节点单元组,确定神经网络各节点的执行顺序集合;确定执行顺序集合中执行时间最短的第一执行顺序;当第一执行顺序对应的数据处理时间低于神经网络的各节点的默认执行顺序对应的数据处理时间时,将第一执行顺序作为神经网络各节点的执行顺序;当第一执行顺序对应的数据处理时间不低于神经网络的各节点的默认执行顺序对应的数据处理时间时,将神经网络的各节点的默认执行顺序作为神经网络各节点的执行顺序。
可以理解,对于结构较为简单的神经网络,第一执行顺序对应的数据处理时间可能不低于神经网络的各节点的默认执行顺序对应的数据处理时间;对于结构较为复杂的神经网络,第一执行顺序对应的数据处理时间一般低于神经网络的各节点的默认执行顺序对应的数据处理时间。
本申请实施例可以通过并行多个独立节点单元的方式得到执行顺序集合,并从中选择数据处理时间最短的执行顺序作为第一执行顺序;然后再将第一执行顺序的数据处理时间与默认执行顺序的数据处理时间进行对比,选择数据处理时间最短的执行顺序作为神经网络各节点的执行顺序,避免无形中选择了数据处理时间较长的执行顺序作为神经网络各节点的执行顺序。
在一种可能的实现中,控制神经网络基于执行顺序执行各节点,以对待处理数据进行处理包括:按照执行顺序为各节点分配各节点所需的数据处理资源;控制神经网络基于各节点所需的数据处理资源对待处理数据进行处理。
可以理解,神经网络中各节点所需的数据处理资源不一定完全相同,而本申请实施例可以根据执行顺序为各节点分配各节点所需的数据处理资源,避免发生部分节点资源过多,导致资源浪费,以及部分节点资源过少,导致资源不足的情况,提高神经网络中各节点的执行效率。
在一种可能的实现中,独立节点单元包括一个节点或者多个节点。
在一种可能的实现中,数据处理资源包括计算资源和内存资源。
可以理解,计算资源用于对待处理数据进行计算,在数据处理过程中,可以将待处理数据从慢速存储单元搬运到快速存储单元;计算资源相当于本申请实施例的计算单元,内存资源相当于本申请实施例的内存单元。
在一种可能的实现中,基于各节点所需的数据处理资源对神经网络所需的内存资源进行分片,获取多种类型的内存资源片;确定各节点的操作类型以及所需内存资源片的数量;基于各节点的操作类型以及所需内存资源片的数量为各节点分配对应类型以及对应数量的内存资源片。
在本申请实施例中,通过对内存资源进行分片,可以提高内存资源的利用率,避免对神经网络的节点(如计算敏感性算子)分配内存资源过多造成资源浪费,对神经网络的节点(如内存敏感性算子)分配的内存资源不够而造成资源短缺的情况。
在一种可能的实现中,多种类型的内存资源片包括卷积类算子的内存片和全连接类算子的内存片;各节点的操作类型包括卷积操作和全连接操作。
在一种可能的实现中,确定各节点的操作类型;基于各节点的操作类型划分各节点,得到多种类型的计算操作阵列;为多种类型的计算操作阵列分配计算资源。
在本申请实施例中,通过对各节点进行划分,可以提高内存资源的利用率,避免发生内存资源过多造成资源浪费,或内存资源不够而造成资源短缺的情况。
在一种可能的实现中,多种类型的计算操作阵列包括用于卷积操作阵列的计算密集型算子、用于矩阵相乘阵列的算子。
可以理解,用于卷积操作阵列的计算密集型算子、和用于矩阵相乘阵列的算子可以为需要执行运算的神经网络中的计算节点,内存资源用于承载待处理数据,计算资源用于对待处理数据进行计算。
在一种可能的实现中,控制神经网络基于执行顺序执行各节点,以对待处理数据进行处理,包括:将神经网络各节点所需的数据处理资源信息存入时间配置表;基于时间配置表中存储的数据处理资源信息按照执行顺序为各节点分配对应的数据处理资源;控制神经网络基于各节点所需的数据处理资源对待处理数据进行处理。
可以理解,数据处理资源信息包括计算量,数据访存量;通过将数据处理资源信息存入时间配置表,为各节点分配对应的数据处理资源提供了依据。
在一种可能的实现中,确定神经网络中各节点所需的数据处理资源,包括:基于模式控制器获取神经网络各节点所需的数据处理资源;通过模式控制器根据执行顺序为神经网络各节点分配数据处理资源;控制神经网络基于各节点所需的数据处理资源对待处理数据进行处理。
可以理解,数据处理资源包括计算资源和内存资源。
第二方面,本申请实施例提供一种片上系统,片上系统包括第一确定模块、第二确定模块、处理模块,包括:第一确定模块,用于确定神经网络中各节点所需的数据处理资源,并且根据各节点的数据依赖关系将神经网络中的节点分为多个独立节点单元组,其中,独立节点单元组包括多个独立节点单元,同一独立节点单元组中的各独立节点单元之间无数据依赖关系;第二确定模块,用于基于各节点所需的数据处理资源、多个独立节点单元组,确定神经网络中各节点的执行顺序;处理模块,用于控制神经网络基于执行顺序执行各节点,以对待处理数据进行处理。
可以理解,无数据依赖关系的节点是指节点间的执行顺序均可以任意设置,并不会影响神经网络最终的数据处理结果的节点,存在数据依赖关系的节点是指节点间的执行顺序变换后会影响神经网络最终数据处理结果的节点。
数据处理资源包括计算单元、内存单元,计算单元可以理解为一定规格的CPU资源,或者一些AI加速器的PE,或者称为设定的任务处理时间,内存单元可以理解为设定规格的内存资源(内存空间),或设定的内存搬运时间,例如从容量大访问速度慢的外部存储(如DDR)搬移数据到容量小但访问存储快的片上资源(如SRAM),即内存单元。
在本申请实施例中,可以根据神经网络中各节点的需分配资源,为各节点分配资源,如此可以避免出现部分节点资源过多,导致资源浪费,或部分节点资源过少,导致资源不足的情况,并且还可以并行多个独立节点单元组,以调整神经网络中各节点的执行顺序,实现了等待时间的减少,最终实现了数据处理整体时间的减少。
第三方面,本申请实施例提供了一种可读介质,可读介质上存储有指令,指令在电子设备上执行时使电子设备实现上述第一方面及上述第一方面的各种可能实现提供的任一种数据处理方法。
第四方面,本申请实施例提供了一种电子设备,包括:存储器,用于存储由电子设备的一个或多个处理器执行的指令,以及处理器,是电子设备的一个或多个处理器之一,用于实现上述第一方面及上述第一方面的各种可能实现提供的任一种数据处理方法。
附图说明
图1示出了一种拓扑结构的示意图;
图2示出了另一种拓扑结构的示意图;
图3a-3b根据本申请实施例,示出了数据处理过程中计算单元、内存单元执行时间的示意图;
图4根据本申请实施例,示出了一种数据处理方法的流程示意图;
图5示出了一种神经网络结构的示意图;
图6根据本申请实施例,示出了一种获取计算模块方法的示意图;
图7根据本申请实施例,示出了一种计算模块结构的示意图;
图8根据本申请实施例,示出了一种重构计算模块方法的示意图;
图9根据本申请实施例,示出了一种电子设备的结构示意图。
具体实施方式
本申请的说明性实施例包括但不限于一种数据处理方法、片上系统、电子设备及介质。
可以理解,本申请的技术方案适用于任意能够运行神经网络模型的电子设备,例如,包括但不限于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digitalassistant,PDA)或专门的照相机(例如单反相机、卡片式相机)等,本申请实施例对电子设备的具体类型不作任何限制。
下面首先对一些实施例中电子设备通过神经网络进行数据处理的过程进行介绍。
例如,如图1所示,图1为一种神经网络的拓扑结构图,需要说明的是,图1中各节点的标号与执行顺序、分配顺序一致;其中,电子设备通过图1中所示的拓扑结构图进行数据处理的过程为:电子设备首先获取待处理数据,并将待处理数据输入拓扑结构图中的节点1进行计算,节点1获取到第一计算结果后将第一计算结果同时输入节点2、节点3、节点4;节点2基于第一计算结果获取到第二计算结果,并将第二计算结果输入节点4后,节点3再基于第一计算结果获取第三计算结果,节点3将第三计算结果输入节点4后,节点4基于第一计算结果、第二计算结果、第三计算结果获取第四计算结果并输出;即默认的执行顺序为:节点1→节点2→节点3→节点4。
可以理解,在上述数据处理过程中,即使节点1已经输出计算结果至节点3,节点3仍然需要等待节点2计算完成才能执行对应的运算,但是节点3与节点2之间并没有数据依赖关系,若按默认的执行顺序无形中增加了处理时间,降低了处理效率。
在上述数据处理的过程中,电子设备会为各节点分配资源,即为各节点分配对应数量的计算单元和内存单元,以使得各节点基于资源进行数据处理,得到计算结果。可以理解,每个计算单元可以理解为一定规格的CPU资源,或者一些AI加速器的PE,或称为设定的任务处理时间,每个内存单元可以理解为设定规格的内存资源(内存空间),或设定的内存搬运时间。
可以理解,上述拓扑结构图为神经网络的原始结构,为满足更复杂的计算需求,在一些实施例中可以通过神经网络架构搜索(Neural Architecture Search,NAS)对例如上述图1中的拓扑结构图进行拓展,即使用节点组合,例如子图A、子图B(1)、子图B(2)、子图C(1)、子图C(2)来代替图1中节点与节点之间的边,构建图2中的神经网络(图森林)以进行更为复杂的数据处理。
例如,在图2中右下图所示的结构中,电子设备控制各节点运算的执行顺序如下,电子设备将待处理数据输入节点1,节点1对待处理数据进行处理并获取第一计算结果,然后节点1将第一计算结果同时输入子图B(1)、子图C(1)、子图C(2);子图B(1)计算完成后,得到第五计算结果,将第五计算结果输入节点2;子图C(2)计算完成后,得到第六计算结果,将第六计算结果输入节点4;子图C(1)计算完成后,得到第七计算结果并将第七计算结果输入节点3;然后节点2基于第五计算结果获取第二计算结果,并将第二计算结果输入子图A;然后节点3基于第七计算结果获取第三计算结果,并将第三计算结果输入子图B(2);然后子图A基于第二计算结果获取第八计算结果,将第八计算结果输入节点4,;然后子图B(2)基于第三计算结果获取第九计算结果,将第九计算结果输入节点4;最后,节点4根据第六计算结果、第八计算结果、第九计算结果获取第四计算结果并输出;即默认的执行顺序为:节点1→子图B(1)→子图C(2)→节点C(1)→节点2→节点3→子图A→子图B(2)→节点4。
对于上述复杂的神经网络,若按默认的执行顺序将会严重增加数据处理的时间,降低处理效率;且若电子设备为复杂神经网络中的各节点分配同样的资源,也会造成严重的资源不均的情况。
为了解决上述问题,本申请实施例提出一种数据处理方法,应用于电子设备,该数据处理方法包括:
获取待分配资源的神经网络,遍历神经网络的各节点以确定神经网络的计算图中各节点的需分配资源(即需要的计算单元和内存单元)以及数据依赖关系,然后根据各节点的数据依赖关系确定多组相互独立的节点单元;其中,节点单元可以为一个节点,也可以为多个节点组成的组合,根据多组相互独立的节点单元、以及计算出的各节点的计算时间和内存搬运时间确定各节点的执行顺序;控制各节点按照上述执行顺序执行运算,在执行运算的过程中,按照各节点的需分配资源为各节点分配资源。
可以理解,每组相互独立的节点单元可以为相互独立,无任何数据依赖关系,即使交换顺序也不会影响数据处理结果的节点单元组,例如,对于上述图1中的结构,节点2和3无任何数据依赖关系,无论先执行节点2还是先执行节点3均不会影响后续的数据处理结果。
即对于每组相互独立的节点单元,各节点单元的先后执行顺序均可以任意设置,并不会影响神经网络的数据处理结果。但由于各节点在执行数据计算的过程中,将数据搬运至内存(memory)后,PE才可以对搬运的数据进行计算。因此,在有些节点所需的内存搬运时间较长时,将会产生较长的等待时间。本申请可以通过调整每组相互独立的节点单元中各节点单元的执行顺序,以实现等待时间的减少,最终实现数据处理整体时间的减少。
例如,确定各节点的执行顺序的方式可以为对每组相互独立的节点单元进行所有可能的排序,以获取各节点对应的执行顺序集合,然后,将执行顺序集合中,对应的数据处理时间最短的执行顺序作为第一顺序;将第一顺序的执行时间与系统默认顺序的执行时间进行对比,当第一顺序的执行时间低于系统默认顺序的执行时间时,将第一顺序作为各节点的执行顺序;当第一顺序的执行时间不低于系统默认顺序的执行时间时,将系统默认顺序作为各节点的执行顺序;其中,系统默认顺序为根据神经网络各节点的连接顺序确定的各节点的执行顺序。
下面以对图2所示的拓扑结构图中各节点执行数据计算的过程为例,对不同执行顺序所需的数据处理时间进行介绍。
图3a示出了按照默认的执行顺序,执行计算所用时间的示意图,可以理解,只有将数据搬运至memory后,PE才可以根据搬运的数据进行计算。如图3a所示,当节点1获取到memory后,将待处理数据搬运至memory后,通过节点1获取到的PE对待处理数据进行运算,得到第一计算结果;然后将第一计算结果搬运至子图B(1)获取到的memory,通过子图B(1)获取到的PE对第一计算结果进行计算,得到第五计算结果;将第一计算结果搬运至子图C(2)获取到的memory,通过子图C(2)获取到的PE对第一计算结果进行计算,得到第六计算结果;将第一计算结果搬运至子图C(1)获取到的memory,通过子图C(1)获取到的PE对第一计算结果进行计算,得到第七计算结果;将第五计算结果搬运至节点2获取到的memory,通过节点2获取到的PE对第五计算结果进行计算,得到第二计算结果;将第七计算结果搬运至节点3获取到的memory,通过节点3获取到的PE对第七计算结果进行计算,得到第三计算结果;将第一计算结果搬运至子图A获取到的memory,通过子图A获取到的PE对第二计算结果进行计算,得到第八计算结果;将第三计算结果搬运至子图B(2)获取到的memory,通过子图B(2)获取到的PE对第三计算结果进行计算,得到第九计算结果;将第六计算结果、第八计算结果、第九计算结果搬运至节点4获取到的memory,通过节点4获取到的PE对第六计算结果、第八计算结果、第九计算结果进行计算,得到第四计算结果并输出。
在上述过程中,对于子图C(1),需要等待子图B(1)处理完成才可以执行运算,即子图C(1)需要等待子图B(1)执行(搬运数据至memory的搬运时间+PE的计算时间)后,才可以执行运算,造成数据处理总时间较长,同理,节点2也需要等待子图C(1)处理完成后,才可以执行运算;节点3需要等待节点2处理完成后,才可以执行运算;子图A需要等待节点3处理完成后,才可以执行运算;子图B(2)需要等待子图A处理完成后,才可以执行运算,均会造成数据处理总时间较长的问题。
基于本申请的方案,可以并行相互独立的节点单元以获取的新的执行顺序,例如如图3b所示,即当节点1获取到memory后,将待处理数据搬运至节点1的memory后,通过节点1获取到的PE对待处理数据进行运算,得到第一计算结果;然后将第一计算结果搬运至子图B(1)获取到的memory,通过子图B(1)获取到的PE对第一计算结果进行计算,得到第五计算结果;将第一计算结果搬运至子图C(1)获取到的memory,通过子图C(1)获取到的PE对第一计算结果进行计算,得到第七计算结果;将第七计算结果搬运至节点3获取到的memory,通过节点3获取到的PE对第七计算结果进行计算,得到第三计算结果;将第五计算结果搬运至节点2获取到的memory,通过节点2获取到的PE对第五计算结果进行计算,得到第二计算结果;将第二计算结果搬运至子图A获取到的memory,通过子图A获取到的PE对第二计算结果进行计算,得到第八计算结果;将第一计算结果搬运至子图C(2)获取到的memory,通过子图C(2)获取到的PE对第一计算结果进行计算,得到第六计算结果;将第三计算结果搬运至子图B(2)获取到的memory,通过子图B(2)获取到的PE对第三计算结果进行计算,得到第九计算结果;将第六计算结果、第八计算结果、第九计算结果搬运至节点4获取到的memory,通过节点4获取到的PE对第六计算结果、第八计算结果、第九计算结果进行计算,得到第四计算结果并输出。
由此可见,本申请实施例提供的方法可以通过并行相互独立的节点单元,显著减少相互独立的节点单元之间的等待时间,进而减少数据处理的整体时间,提高数据处理的效率。
可以理解,需分配资源可以包括若干数量的计算单元(例如PE)和内存单元(例如memory)。如前所述,每个计算单元可以理解为一定规格的CPU资源,或者一些AI加速器的PE,或称为设定的计算时间,每个内存单元可以理解为设定规格的内存资源(内存空间),或设定的内存搬运时间。
可以理解,在一些实施例中,可以基于资源分配算法确定神经网络中各节点的需分配资源,如此可以避免出现部分节点资源过多,导致资源浪费,或部分节点资源过少,导致资源不足的情况;其中,资源分配算法可以是最大速率算法、轮询调度算法、比例公平算法等。
可以理解,本申请提及的数据处理方法,可以用于各种部署有神经网络的电子设备的场景中。下面对数据处理方法进行详细介绍,如图4所示,示出了一种数据处理方法的流程示意图,该方法可以由电子设备执行,该方法包括如下步骤:
401:获取待分配资源的神经网络。
可以理解,本申请实施例提及的神经网络可以为mesh结构的神经网络,如图5所示,左下角的节点1为输入节点,右上角的节点2为输出节点,箭头的方向即数据的流向;其中,节点1与节点2之间一些节点的输出数据可以作为另一些节点的输入数据,各节点的结构具有无序性,支持任意连接。例如,节点1的数据流向节点3、节点4;节点3接收到节点1输入的数据进行计算,将计算结果输入节点5、节点6;节点4接收到节点1输入的数据进行计算,将计算结果输入节点6、节点7;节点1与节点2之间的节点均可以采用上述方式进行运算,在此不再赘述。
402:确定神经网络的计算图中各节点的需分配资源以及数据依赖关系。
在本申请实施例中,可以通过资源分配算法确定神经网络的计算图中各节点的需分配资源,并将神经网络中各节点的需分配资源存储于图6所示的时间配置(time basedconfiguration)中,以根据各节点的需分配资源为各节点分配资源,实现重构计算模块的目的,其中,计算模块由需分配资源构成,计算模块包括PE、memory。
其中,按照各节点的需分配资源的不同,可以将各节点的操作类型分为计算敏感性操作、内存敏感性操作,计算敏感性操作包括卷积(Convolution,Conv)类的操作,内存敏感性操作包括全连接(Fully-Connecting,FC)类的操作、没有数据共用的矩阵运算操作、逐点卷积(pointwise convolution)操作;计算敏感性操作需要较多的PE;内存敏感性操作需要较多的memory。
可以理解,在本申请实施例中,当确定了各节点的执行顺序以及各节点的需分配资源,且各节点开始执行运算时,模式控制器(mode controller)可以根据time basedconfiguration中存储的各节点的需分配资源,从计算单元配置阵列(Reconfigurable PEarray)中获取神经网络需要分配的PE、memory,实现了重构各节点的计算模块。
下面对一些实施例中mesh结构的计算模块进行举例说明。图7示出了计算模块组成结构的示意图。如图7所示,mesh结构的计算模块从动态随机存取内存(DRAM)中读取到待处理数据后,对待处理数据进行运算,得到结果并返回DRAM;其中,计算模块包括memory、PE;memory包括用于承载指令的指令内存(Instruction Memory)、用于承载参数的参数内存(Parameter Memory)、用于承载其他数据的激活内存(Activation Memory);PE包括用于访问memory搬运的数据的PE memory、用于计算的计算线(computer lines)以及用于存储computer lines的内部存储(inner memory)。
可以理解,上述图7所示的计算模块的PE与memory的占比是固定的,因此各节点得到的计算模块也是固定的,但是由于各节点需要执行的操作类型并不相同,因此各节点对于PE和memory的需求并不完全一致,按照相同的分配方式为执行不同操作的节点分配完全相同的PE与memory,会造成部分节点资源过多,导致资源浪费的情况。
而本申请实施例提供的方法,可以根据神经网络中各节点的需分配资源为神经网络中各节点分配资源,例如,通过图8所示的mode controller根据time basedconfiguration中存储的各节点的需分配资源,从Reconfigurable PE array中获取神经网络各节点需要分配的PE、memory,以重构各节点的计算模块,实现了为各节点分配适量的资源,避免出现部分节点资源过多,导致资源浪费,或部分节点资源过少,导致资源不足的情况。
其中,如图8所示,通过mode controller根据各节点的需分配资源获取对应数量的PE以及memory以构造各节点的计算模块之前;根据各节点的需分配资源以及操作类型对用于神经网络各节点的memory进行分片得到内存片(Memory banks),对各节点进行划分得到用于卷积操作阵列(Conv-op array)的计算密集型算子、用于矩阵相乘阵列(MatrixMultiply array)的算子,Memory banks包括卷积内存片(Conv Memory banks)、全连接内存片(即MM memory banks);其中,Conv Memory banks用于承载Conv-op array的计算密集型算子,即用于计算敏感性操作;MM memory banks用于承载Matrix Mutilpy array的算子,即用于内存敏感性操作;其中,计算敏感性操作包括Conv类的操作,内存敏感性操作包括FC类的操作、没有数据共用的矩阵运算操作、pointwise convolution操作。
例如,对于图1中的拓扑结构图,假设确定出的需分配资源为:节点1需要5个PE、2个memory,为计算敏感性操作;节点2需要10个PE、3个memory,为计算敏感性操作;节点3需要5个PE、20个memory,为内存敏感性操作;节点4需要1个PE、20个memory,为内存敏感性操作;首先将图1中各节点需要的资源存入time based configuration,然后确定需要21个PE、5个Conv Memory banks、40个MM memory banks,将需要分配给图1中拓扑结构图的memory分为5个Conv Memory banks、40个MM memory banks,并将分好的资源存入Reconfigurable PE array;当开始执行运算时,mode controller根据time basedconfiguration中存储的各节点的需分配资源,从Reconfigurable PE array中依次获取5个PE、2个memory(Conv Memory banks)分配至节点1,获取10个PE、3个memory(Conv Memorybanks)分配至节点2;获取5个PE、20个memory(MM memory banks)分配至节点3;获取1个PE、20个memory(MM memory banks)分配至节点4,由此实现了重构计算模块。
可以理解,由于CONV类操作和FC类操作对memory的需求的差异,因此对memory进行了分片得到Memory banks,Memory banks可以细分为Conv banks和FC banks;对于FC类操作,由于没有数据复用,因此FC类操作的内存需求较多,使用的banks(即FC banks)的数目为并行计算的数目,Memory banks余下的部分可以分配给Conv banks,对于CONV操作,由于存在数据复用,因此内存需求较少。可以理解,对于CONV操作,假设一共有S列数据,每一列复用K次,S<K,则需要K个时间循环(clock cycles),K-S列被复用。
由此,通过mode controller为各节点分配资源,实现了计算模块的重构,从硬件层面对神经网络进行了优化,使得计算模块中PE与memory的占比可以根据各节点的操作类型进行调整,避免了资源浪费。
403:根据神经网络中各节点的数据依赖关系确定多组相互独立的节点单元。
例如,如图2所示的拓扑结构图,首先确定图2中的节点1与子图B(1)、子图B(1)与节点2、节点2与子图A、子图A与节点4、节点1与子图C(2)、子图C(2)与节点4、节点1与子图C(1)、子图C(1)与节点3、节点3与子图B(2)、子图B(2)与节点4存在数据依赖关系,基于上述数据依赖关系,可以确定子图B(1)、节点2、子图A与子图C(2)以及子图C(1)、节点3、子图B(2)为相互独立的节点单元。
404:根据多组相互独立的节点单元、计算出的需分配资源确定各节点的执行顺序。
在本申请实施例中,可以通过贪婪搜索算法基于多组相互独立的节点单元以及计算出的各节点的需分配资源的计算时间和内存搬运时间,对每组相互独立的节点单元进行所有可能的排序,以获取各节点对应的执行顺序集合,然后,将执行顺序集合中,对应的数据处理时间最短的执行顺序作为第一顺序;将第一顺序的执行时间与系统默认顺序的执行时间进行对比,当第一顺序的执行时间低于系统默认顺序的执行时间时,将第一顺序作为各节点的执行顺序;当第一顺序的执行时间不低于系统默认顺序的执行时间时,将系统默认顺序作为各节点的执行顺序;其中,系统默认顺序为根据神经网络各节点的连接顺序确定的各节点的执行顺序。
下面以图2所示的拓扑结构图为例,说明本申请中的数据处理方法。
假设确定出的需分配资源为:节点1需要5个PE、2个memory;节点2需要10个PE、3个memory;节点3需要5个PE、20个memory;节点4需要1个PE、20个memory;子图A需要10个PE、5个memory;子图B(1)需要20个PE、4个memory;子图B(2)需要20个PE、4个memory;子图C(1)需要5个PE、15个memory;子图C(2)需要5个PE、15个memory,子图B(1)、节点2、子图A与子图C(2)以及子图C(1)、节点3、子图B(2)为相互独立的可以并行的节点单元。
进一步的,基于相互独立的可以并行的节点单元可以确定并行支路包括支路a、支路b、支路c,其中支路a的执行顺序依次为:节点1→子图B(1)→节点2→子图A→节点4;支路b的执行顺序依次为:节点1→子图C(2)→节点4;支路c的执行顺序依次为:节点1→子图C(1)→节点3→子图B(2)→节点4,通过贪婪搜索算法基于计算出的各节点的需分配资源的计算时间和内存搬运时间获取各节点对应的执行顺序集合,得到的执行顺序集合包括:
①节点1→子图B(1)→子图C(1)→节点3→节点2→子图A→子图C(2)→子图B(2)→节点4;
②节点1→子图B(1)→子图C(1)→节点3→节点2→子图A→子图C(2)→子图B(2)→节点4;
③节点1→子图B(1)→子图C(1)→节点3→节点2→子图A→子图C(2)→子图B(2)→节点4等。
然后根据执行顺序集合的分配顺序确定第一顺序为:节点1→子图B(1)→子图C(1)→节点3→节点2→子图A→子图C(2)→子图B(2)→节点4。
进一步的,根据第一顺序可以确定图2所示的拓扑结构图的执行时间可以如图3b所示,默认顺序的执行时间如图3a所示。由此可见,本申请的数据处理方法可以降低的时间包括子图C(1)、节点2、节点3、子图A、子图B(2)的等待时间,显著的减少了处理时间,提高了神经网络的数据处理效率。
可以理解,第一顺序的执行时间与默认顺序的执行时间的确定方式如前所述,在此不再赘述。
下面以图5所示的神经网络为例,说明本申请中的数据处理方法。
由上述分析可知,图5中节点3的输入数据、输出数据与节点4的输入数据、输出数据是一致的,节点5的输入数据、输出数据与节点6的输入数据、输出数据,节点7的输入数据、输出数据是一致的。因此,在本申请实施例中可以按照对角线划分图5中的各节点,使得同一条对角线上的节点的操作类型、输入数据、输出数据是一样的,即同一条对角线的节点的数据是独立的,不同对角线上的相邻节点之间的数据是依赖的,进而并行图5中同一条对角线上的单元。
可以理解,若按照图5的默认执行顺序进行计算,由于图5中包括36个单元,因此需要36个时间片;而若按照本申请实施例提供的方法,即并行对角线上各节点的操作,则只需要11个时间片;由此可知,本申请实施例提供的方法可以显著降低神经网络需要的时间片,降低了神经网络的分配时间,即本申请实施例提供的方法在保证神经网络正常工作的前提下,显著降低了神经网络需要的资源,提高了神经网络的执行效率。
下面以图1所示的拓扑结构图为例,说明本申请中的数据处理方法。
如图1所示,电子设备首先获取待处理数据,并将待处理数据输入拓扑结构图中的节点1进行计算,节点1获取到第一计算结果后将第一计算结果同时输入节点2、节点3、节点4;节点2基于第一计算结果获取到第二计算结果,并将第二计算结果输入节点4后,节点3再基于第一计算结果获取第三计算结果,节点3将第三计算结果输入节点4后,节点4基于第一计算结果、第二计算结果、第三计算结果获取第四计算结果并输出;即默认的执行顺序为:节点1→→节点2→节点3→节点4。
对于图1所示的结构,先计算节点2,再计算节点3;或者先计算节点3,再计算节点2,并不会影响最终的计算时间,因为最终节点4需要获取到节点1、节点2、节点3输入的数据才能进行计算,因此,调整执行顺序并不会降低执行时间,可以不并行图1所示结构中的节点2与节点3,即在图1所示的结构执行运算时,按照默认执行顺序为各节点分配资源。
由此,本申请实施例提及的数据处理方法通过并行神经网络中不存在数据依赖关系的节点单元,从软件层面对神经网络进行了优化。
405:在各节点执行运算时,控制各节点根据执行顺序执行运算,并按照各节点的需分配资源为各节点分配资源。
可以理解,在一些实施例中,可以通过神经网络的mode controller基于各节点的操作类型获取对应数量的计算单元、内存单元,从而实现了计算模块的重构,使得计算模块中计算单元与内存单元的占比可以根据各节点的操作类型进行调整,避免了资源浪费。
例如,对于图1中的拓扑结构图,假设确定出的需分配资源为:节点1需要5个PE、2个memory;节点2需要10个PE、3个memory;节点3需要5个PE、20个memory;节点4需要1个PE、20个memory;首先将图1中各节点需要的资源存入time based configuration,当开始执行运算时,mode controller根据time based configuration中存储的各节点的需分配资源,从Reconfigurable PE array中依次获取5个PE、2个memory分配至节点1,获取10个PE、3个memory分配至节点2;获取5个PE、20个memory分配至节点3;获取1个PE、20个memory分配至节点4,由此实现了重构计算模块。
例如,对于图2中的拓扑结构图,假设确定出的需分配资源为:节点1需要5个PE、2个memory;节点2需要10个PE、3个memory;节点3需要5个PE、20个memory;节点4需要1个PE、20个memory;子图A需要10个PE、5个memory;子图B(1)需要20个PE、4个memory;子图B(2)需要20个PE、4个memory;子图C(1)需要5个PE、15个memory;子图C(2)需要5个PE、15个memory,当开始执行运算时,mode controller根据time based configuration中存储的各节点的需分配资源,从Reconfigurable PE array中依次为节点1分配5个PE、2个memory;为子图B(1)分配20个PE、4个memory;为子图C(1)分配5个PE、15个memory;为节点3分配5个PE、20个memory;为节点2分配10个PE、3个memory;为子图A分配10个PE、5个memory;为子图C(2)分配5个PE、15个memory;为子图B(2)分配20个PE、4个memory;为节点4分配1个PE、20个memory。
本申请实施例提供的方法,可以并行神经网络的计算图中没有数据依赖关系的节点,有效缩短了各节点的执行时间,并且可以根据不同节点的操作类型,为各节点分配适量的资源,避免出现部分节点资源过多,导致资源浪费,或部分节点资源过少,导致资源不足的情况。
本申请实施例提供一种片上系统,片上系统包括第一确定模块、第二确定模块、处理模块,包括:第一确定模块,用于确定神经网络中各节点所需的数据处理资源,并且根据各节点的数据依赖关系将神经网络中的节点分为多个独立节点单元组,其中,独立节点单元组包括多个独立节点单元,同一独立节点单元组中的各独立节点单元之间无数据依赖关系;第二确定模块,用于基于各节点所需的数据处理资源、多个独立节点单元组,确定神经网络中各节点的执行顺序;处理模块,用于控制神经网络基于执行顺序执行各节点,以对待处理数据进行处理。
如图9所示,电子设备10可以包括处理器110、电源模块140、存储器180,移动通信模块130、无线通信模块120、传感器模块190、音频模块150、摄像头170、接口模块160、按键101以及显示屏102等。
可以理解的是,本发明实施例示意的结构并不构成对电子设备10的具体限定。在本申请另一些实施例中,电子设备10可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如,可以包括中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)、数字信号处理器DSP、微处理器(Micro-programmed Control Unit,MCU)、人工智能(ArtificialIntelligence,AI)处理器或可编程逻辑器件(Field Programmable Gate Array,FPGA)等的处理模块或处理电路。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。处理器110中可以设置存储单元,用于存储指令和数据。在一些实施例中,处理器110中的存储单元为高速缓冲存储器180。
可以理解,本申请实施例中的数据处理方法可以由对应的电子设备的处理器110执行。电源模块140可以包括电源、电源管理部件等。电源可以为电池。电源管理部件用于管理电源的充电和电源向其他模块的供电。在一些实施例中,电源管理部件包括充电管理模块和电源管理模块。充电管理模块用于从充电器接收充电输入;电源管理模块用于连接电源,充电管理模块与处理器110。电源管理模块接收电源和/或充电管理模块的输入,为处理器110,显示屏102,摄像头170,及无线通信模块120等供电。
移动通信模块130可以包括但不限于天线、功率放大器、滤波器、低噪声放大器(Low noise amplify,LNA)等。移动通信模块130可以提供应用在电子设备10上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块130可以由天线接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块130还可以对经调制解调处理器调制后的信号放大,经天线转为电磁波辐射出去。在一些实施例中,移动通信模块130的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块130至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
无线通信模块120可以包括天线,并经由天线实现对电磁波的收发。无线通信模块120可以提供应用在电子设备10上的包括无线局域网(wireless localarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。电子设备10可以通过无线通信技术与网络以及其他设备进行通信。
可以理解,本申请实施例中,在电子设备为接收设备时,可以通过无线通信模块接收的来自录制群组中其他电子设备的视频数据和音频数据,以及各数据对应的录制内容标签以及时间标记信息。且在电子设备为发送设备时,可以通过无线通信模块向录制群组中的其他电子设备发送视频数据和音频数据,以及各数据对应的录制内容标签以及时间标记信息。
在一些实施例中,电子设备10的移动通信模块130和无线通信模块120也可以位于同一模块中。
显示屏102用于显示人机交互界面、图像、视频等。显示屏102包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organiclight-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,AMOLED),柔性发光二极管(flexlight-emitting diode,FLED),MiniLed,MicroLed,Micro-oLed,量子点发光二极管(quantum dot light emitting diodes,QLED)等。
传感器模块190可以包括接近光传感器、压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
可以理解,本申请实施例中的环境光传感器可以用于获取光照状态信息,并将光照状态信息发送至处理器。
音频模块150用于将数字音频信息转换成模拟音频信号输出,或者将模拟音频输入转换为数字音频信号。音频模块150还可以用于对音频信号编码和解码。在一些实施例中,音频模块150可以设置于处理器110中,或将音频模块150的部分功能模块设置于处理器110中。在一些实施例中,音频模块150可以包括扬声器、听筒、麦克风以及耳机接口。摄像头170用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件把光信号转换成电信号,之后将电信号传递给图像信号处理(Image Signal Processing,ISP)转换成数字图像信号。电子设备10可以通过ISP,摄像头170,视频编解码器,图形处理器(Graphic Processing Unit,GPU),显示屏102以及应用处理器等实现拍摄功能。
接口模块160包括外部存储器接口、通用串行总线(universal serial bus,USB)接口及用户标识模块(subscriber identification module,SIM)卡接口等。其中外部存储器接口可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备10的存储能力。外部存储卡通过外部存储器接口与处理器110通信,实现数据存储功能。通用串行总线接口用于电子设备10和其他电子设备进行通信。用户标识模块卡接口用于与安装至电子设备1010的SIM卡进行通信,例如读取SIM卡中存储的电话号码,或将电话号码写入SIM卡中。
在一些实施例中,电子设备10还包括按键101、马达以及指示器等。其中,按键101可以包括音量键、开/关机键等。马达用于使电子设备10产生振动效果,例如在用户的电子设备10被呼叫的时候产生振动,以提示用户接听电子设备10来电。指示器可以包括激光指示器、射频指示器、LED指示器等。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(Compact Disc-Read Only Memory,CD-ROMs)、磁光盘、只读存储器(Read Only Memory,ROM)、随机存取存储器((Random-Access Memory,RAM)、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (14)
1.一种数据处理方法,应用于电子设备,其特征在于,包括:
确定神经网络中各节点所需的数据处理资源,并且根据所述各节点的数据依赖关系将所述神经网络中的节点分为多个独立节点单元组,其中,所述独立节点单元组包括多个独立节点单元,同一独立节点单元组中的各独立节点单元之间无数据依赖关系;
基于所述各节点所需的数据处理资源、所述多个独立节点单元组,确定所述神经网络中各节点的执行顺序;
控制所述神经网络基于所述执行顺序执行各节点,以对待处理数据进行处理。
2.根据权利要求1所述的数据处理方法,其特征在于,所述基于所述各节点所需的数据处理资源、所述多个独立节点单元组,确定所述神经网络中各节点的执行顺序包括:
基于所述各节点所需的数据处理资源、所述多个独立节点单元组,确定所述神经网络各节点的执行顺序集合;
确定所述执行顺序集合中执行时间最短的第一执行顺序;
当所述第一执行顺序对应的数据处理时间低于所述神经网络的各节点的默认执行顺序对应的数据处理时间时,将所述第一执行顺序作为所述神经网络各节点的执行顺序;
当所述第一执行顺序对应的数据处理时间不低于所述神经网络的各节点的默认执行顺序对应的数据处理时间时,将所述神经网络的各节点的默认执行顺序作为所述神经网络各节点的执行顺序。
3.根据权利要求1所述的数据处理方法,其特征在于,所述控制所述神经网络基于所述执行顺序执行各节点,以对待处理数据进行处理包括:
按照所述执行顺序为所述各节点分配所述各节点所需的数据处理资源;
控制所述神经网络基于所述各节点所需的数据处理资源对所述待处理数据进行处理。
4.根据权利要求1所述的数据处理方法,其特征在于,所述独立节点单元包括一个节点或者多个节点。
5.根据权利要求1所述的数据处理方法,其特征在于,所述数据处理资源包括计算资源和内存资源。
6.根据权利要求5所述的数据处理方法,其特征在于,
基于各节点所需的数据处理资源对所述神经网络所需的内存资源进行分片,获取多种类型的内存资源片;
所述控制所述神经网络基于所述执行顺序执行各节点,以对待处理数据进行处理,包括:
确定所述各节点的操作类型以及所需内存资源片的数量;
基于所述各节点的操作类型以及所需内存资源片的数量为所述各节点分配对应类型以及对应数量的内存资源片。
7.根据权利要求6所述的数据处理方法,其特征在于,所述多种类型的内存资源片包括卷积类算子的内存片和全连接类算子的内存片;
所述各节点的操作类型包括卷积操作和全连接操作。
8.根据权利要求5所述的数据处理方法,其特征在于,所述控制所述神经网络基于所述执行顺序执行各节点,以对待处理数据进行处理,包括:
确定所述各节点的操作类型;
基于所述各节点的操作类型划分各节点,得到多种类型的计算操作阵列;
为所述多种类型的计算操作阵列分配所述计算资源。
9.根据权利要求8所述的数据处理方法,其特征在于,
所述多种类型的计算操作阵列包括用于卷积操作阵列的计算密集型算子、用于矩阵相乘阵列的算子。
10.根据权利要求1所述的数据处理方法,其特征在于,所述控制所述神经网络基于所述执行顺序执行各节点,以对待处理数据进行处理,包括:
将所述神经网络各节点所需的数据处理资源信息存入时间配置表;
基于所述时间配置表中存储的数据处理资源信息按照所述执行顺序为所述各节点分配对应的数据处理资源;
控制所述神经网络基于所述各节点所需的数据处理资源对所述待处理数据进行处理。
11.根据权利要求1所述的数据处理方法,其特征在于,所述确定神经网络中各节点所需的数据处理资源,包括:
基于模式控制器获取所述神经网络各节点所需的数据处理资源;
所述控制所述神经网络基于所述执行顺序执行各节点,以对待处理数据进行处理包括:
通过所述模式控制器根据所述执行顺序为所述神经网络各节点分配数据处理资源;
控制所述神经网络基于所述各节点所需的数据处理资源对所述待处理数据进行处理。
12.一种片上系统,其特征在于,所述片上系统包括第一确定模块、第二确定模块、处理模块;
所述第一确定模块,用于确定神经网络中各节点所需的数据处理资源,并且根据所述各节点的数据依赖关系将所述神经网络中的节点分为多个独立节点单元组,其中,所述独立节点单元组包括多个独立节点单元,同一独立节点单元组中的各独立节点单元之间无数据依赖关系;
所述第二确定模块,用于基于所述各节点所需的数据处理资源、所述多个独立节点单元组,确定所述神经网络中各节点的执行顺序;
所述处理模块,用于控制所述神经网络基于所述执行顺序执行各节点,以对待处理数据进行处理。
13.一种可读介质,其特征在于,所述可读介质上存储有指令,所述指令在电子设备上执行时使所述电子设备执行如权利要求1至11中任一项所述的数据处理方法。
14.一种电子设备,其特征在于,包括:存储器,用于存储由所述电子设备的一个或多个处理器执行的指令,以及所述处理器,是所述电子设备的所述一个或多个处理器之一,用于执行如权利要求1至11中任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211389556.5A CN116029337A (zh) | 2022-11-08 | 2022-11-08 | 一种数据处理方法、片上系统、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211389556.5A CN116029337A (zh) | 2022-11-08 | 2022-11-08 | 一种数据处理方法、片上系统、电子设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116029337A true CN116029337A (zh) | 2023-04-28 |
Family
ID=86080428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211389556.5A Pending CN116029337A (zh) | 2022-11-08 | 2022-11-08 | 一种数据处理方法、片上系统、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116029337A (zh) |
-
2022
- 2022-11-08 CN CN202211389556.5A patent/CN116029337A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102906726B (zh) | 协处理加速方法、装置及系统 | |
CN110147347B (zh) | 用于矩阵处理的芯片、矩阵处理方法、装置及存储介质 | |
CN110162393B (zh) | 任务调度方法、装置及存储介质 | |
CN113553039B (zh) | 算子的可执行代码的生成方法及装置 | |
CN116842307B (zh) | 数据处理方法、装置、设备、芯片及存储介质 | |
CN111045732B (zh) | 数据处理方法、芯片、设备及存储介质 | |
CN116315667B (zh) | 数据传输方法、装置、设备及存储介质 | |
CN112416294B (zh) | 处理器及其二进制累加方法和计算机可读介质 | |
CN113687816B (zh) | 算子的可执行代码的生成方法及装置 | |
CN115407961A (zh) | 音频焦点的控制方法及相关装置 | |
CN116029337A (zh) | 一种数据处理方法、片上系统、电子设备及介质 | |
CN115357230A (zh) | 用于寄存器溢出的编译方法、电子设备和介质 | |
CN113419702B (zh) | 一种数据累加方法、处理器、电子设备及可读介质 | |
CN113657584B (zh) | 神经网络模型计算方法、数据处理方法、电子设备及介质 | |
CN115686252B (zh) | 触控屏中的位置信息计算方法和电子设备 | |
CN117992397A (zh) | 一种冷热数据预估的方法和电子设备 | |
CN116136826B (zh) | 内存访问方法、芯片、电子设备及计算机可读存储介质 | |
CN115756868A (zh) | 内存分配方法、装置、设备、存储介质及计算机程序产品 | |
CN113128673B (zh) | 数据处理方法、存储介质、神经网络处理器及电子设备 | |
CN116150041A (zh) | 空间分配方法、装置、电子设备和计算机可读存储介质 | |
CN111260046B (zh) | 运算方法、装置及相关产品 | |
US20240185098A1 (en) | Scheduling ml services and models with heterogeneous resources | |
CN116560741B (zh) | 一种硬件初始化方法、介质及电子设备 | |
CN112882754B (zh) | 一种函数调用方法及处理器 | |
CN110969217A (zh) | 基于卷积神经网络进行图像处理的方法和装置 |
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 |