CN115293340B - 数据同步处理方法、装置、计算设备和存储介质 - Google Patents
数据同步处理方法、装置、计算设备和存储介质 Download PDFInfo
- Publication number
- CN115293340B CN115293340B CN202210949138.0A CN202210949138A CN115293340B CN 115293340 B CN115293340 B CN 115293340B CN 202210949138 A CN202210949138 A CN 202210949138A CN 115293340 B CN115293340 B CN 115293340B
- Authority
- CN
- China
- Prior art keywords
- data
- fusion layer
- fusion
- scheduling unit
- layer
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 30
- 230000001360 synchronised effect Effects 0.000 title claims description 10
- 230000004927 fusion Effects 0.000 claims abstract description 591
- 238000013528 artificial neural network Methods 0.000 claims abstract description 114
- 238000004364 calculation method Methods 0.000 claims abstract description 63
- 238000000034 method Methods 0.000 claims description 139
- 230000008569 process Effects 0.000 claims description 119
- 238000012545 processing Methods 0.000 claims description 23
- 238000013500 data storage Methods 0.000 claims description 20
- 238000012546 transfer Methods 0.000 claims description 11
- 239000010410 layer Substances 0.000 description 485
- 238000010586 diagram Methods 0.000 description 19
- 239000011229 interlayer Substances 0.000 description 8
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000010412 perfusion Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- 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
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Multi Processors (AREA)
Abstract
本公开提供了一种数据同步处理方法、装置、计算设备和存储介质。该数据同步处理方法应用于神经网络计算,包括:获取对应于神经网络的线型计算图,其中,神经网络包括多个融合层,线型计算图表征神经网络中的多个融合层之间的数据依赖关系以及执行顺序;按照线型计算图在多个融合层中确定存在数据依赖关系的一对数据产生融合层和数据接收融合层;根据数据产生融合层的调度单元标识、数据接收融合层的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的调度单元标识,确定数据产生融合层和数据接收融合层是否进行数据同步,以及基于确定的结果进行数据同步。
Description
技术领域
本公开涉及数据处理技术领域,具体地,涉及一种数据同步处理方法、装置、计算设备和存储介质。
背景技术
为了提高神经网络的计算效率,通常会将神经网络中满足一定条件或规则的相邻多个算子(operator)进行融合,形成融合算子(fused operator)。一般地,一个融合算子或者无法进行融合的单个算子,可以成称为一个融合算子,也称为融合层(fusion layer)。神经网络的计算过程以融合层为单位、逐层(layer-by-layer)进行。通常,前一层(或前几层)的输出作为后一层(或者后几层)的输入,因而融合层之间存在数据依赖(datadependency)。层与层之间的数据传递例如可以通过共享内存(诸如,内部存储器或外部存储器)实现。在神经网络的计算过程中,需要通过数据同步来保证存在数据依赖关系的融合层之间的执行顺序,即,在当前融合层从存储器中读取输入数据时,必须保证与之对应的融合层已经将对应的数据写入到存储器中。
发明内容
本公开的一些实施例提供了一种数据同步处理方法、装置、计算设备和存储介质,用于针对各种类型的神经网络结构,尤其是网络结构较为复杂的神经网络提供通用的数据同步处理,保证具有数据依赖关系的融合层之间的顺序执行,以实现神经网络的高效计算。
根据本公开的一方面,提供了一种数据同步处理方法,应用于神经网络计算,该方法包括:获取对应于神经网络的线型计算图,其中,神经网络包括多个融合层,线型计算图表征神经网络中的多个融合层之间的数据依赖关系以及执行顺序;按照线型计算图在多个融合层中确定存在数据依赖关系的一对数据产生融合层和数据接收融合层;以及根据数据产生融合层的调度单元标识、数据接收融合层的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的调度单元标识,确定数据产生融合层和数据接收融合层是否进行数据同步,以及基于确定的结果进行数据同步。
根据本公开的一些实施例,数据产生融合层产生计算数据,数据接收融合层接收与之对应的数据产生融合层产生的计算数据。
根据本公开的一些实施例,以融合层为单位分配调度单元标识,确定数据产生融合层和数据接收融合层是否进行数据同步包括:在数据接收融合层的调度单元标识与数据产生融合层的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的调度单元标识均不相同的情况下,确定进行数据同步;以及在数据接收融合层的调度单元标识与数据产生融合层的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的调度单元标识中的任意一个或多个相同的情况下,确定不进行数据同步。
根据本公开的一些实施例,神经网络中的融合层的计算过程包括数据加载过程、数据计算过程、数据存储过程,其中,以融合层的数据加载过程、数据计算过程、数据存储过程为单位分配调度单元标识,其中,确定数据产生融合层和数据接收融合层是否进行数据同步包括:在数据接收融合层的数据加载过程的调度单元标识与数据产生融合层的数据存储过程的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的所有调度单元标识均不相同的情况下,确定进行数据同步;以及在数据接收融合层的数据加载过程的调度单元标识与数据产生融合层的数据存储过程的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的所有调度单元标识中的任意一个或多个相同的情况下,确定不进行数据同步。
根据本公开的一些实施例,获取对应于神经网络的线型计算图包括:基于神经网络的网络结构生成有向无环图,其中,有向无环图包括计算节点以及计算节点之间的连线,计算节点之间的连线表征计算节点之间的数据依赖关系和数据流向;对有向无环图中的计算节点进行算子融合,得到分支型计算图,其中,一个或多个计算节点经算子融合后表示为融合层,分支型计算图包括融合层以及融合层之间的连线,融合层之间的连线表征融合层之间的数据依赖关系和数据流向;以及基于分支型计算图进行序列化得到线型计算图。
根据本公开的一些实施例,调度单元对应于包括多个线程的线程组,调度单元以轮询调度的方式执行并行计算。
根据本公开的一些实施例,神经网络中的融合层内部通过寄存器或一级缓存进行数据传递。
根据本公开的另一方面,提供了一种数据同步处理装置,应用于神经网络计算,该装置包括:获取单元,配置成获取对应于神经网络的线型计算图,其中,神经网络包括多个融合层,线型计算图表征神经网络中的多个融合层之间的数据依赖关系以及执行顺序;数据依赖关系确定单元,配置成按照线型计算图在多个融合层中确定存在数据依赖关系的一对数据产生融合层和数据接收融合层;以及数据同步单元,配置成根据数据产生融合层的调度单元标识、数据接收融合层的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的调度单元标识,确定数据产生融合层和数据接收融合层是否进行数据同步,以及基于确定的结果进行数据同步。
根据本公开的一些实施例,数据产生融合层产生计算数据,数据接收融合层接收与之对应的数据产生融合层产生的计算数据。
根据本公开的一些实施例,以融合层为单位分配调度单元标识,其中,数据同步单元确定数据产生融合层和数据接收融合层是否进行数据同步包括:在数据接收融合层的调度单元标识与数据产生融合层的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的调度单元标识均不相同的情况下,确定进行数据同步;以及在数据接收融合层的调度单元标识与数据产生融合层的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的调度单元标识中的任意一个或多个相同的情况下,确定不进行数据同步。
根据本公开的一些实施例,神经网络中的融合层的计算过程包括数据加载过程、数据计算过程、数据存储过程,其中,以融合层的数据加载过程、数据计算过程、数据存储过程为单位分配调度单元标识,其中,数据同步单元确定数据产生融合层和数据接收融合层是否进行数据同步包括:在数据接收融合层的数据加载过程的调度单元标识与数据产生融合层的数据存储过程的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的所有调度单元标识均不相同的情况下,确定进行数据同步;以及在数据接收融合层的数据加载过程的调度单元标识与数据产生融合层的数据存储过程的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的所有调度单元标识中的任意一个或多个相同的情况下,确定不进行数据同步。
根据本公开的一些实施例,获取单元获取对应于神经网络的线型计算图包括:基于神经网络的网络结构生成有向无环图,其中,有向无环图包括计算节点以及计算节点之间的连线,计算节点之间的连线表征计算节点之间的数据依赖关系和数据流向;对有向无环图中的计算节点进行算子融合,得到分支型计算图,其中,一个或多个计算节点经算子融合后表示为融合层,分支型计算图包括融合层以及融合层之间的连线,融合层之间的连线表征融合层之间的数据依赖关系和数据流向;以及基于分支型计算图进行序列化得到线型计算图。
根据本公开的一些实施例,调度单元对应于包括多个线程的线程组,调度单元以轮询调度的方式执行并行计算。
根据本公开的一些实施例,神经网络中的融合层内部通过寄存器或一级缓存进行数据传递。
根据本公开的又一方面,提供了一种计算设备,包括:处理器;和存储器,其中,存储器中存储有计算机可读代码,计算机可读代码在由处理器运行时,执行如上所述的数据同步处理方法。
根据本公开的又一方面,提供了一种非暂时性计算机可读存储介质,其上存储有指令,该指令在被处理器执行时实现如上所述的数据同步处理方法。
利用本公开实施例提供的数据同步处理方法、装置、计算设备和存储介质,能够基于神经网络的线型计算图快速地判断存在数据依赖关系的一对数据产生融合层和数据接收融合层,进一步地,还根据数据产生融合层的调度单元标识、数据接收融合层的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的调度单元标识,确定存在数据依赖关系的数据产生融合层和数据接收融合层是否进行数据同步,从而基于确定的结果进行数据同步。利用上述过程,能够针对各种类型的神经网络结构,尤其是网络结构较为复杂的神经网络提供通用的数据同步处理,保证具有数据依赖关系的融合层之间的顺序执行,从而实现神经网络的高效计算。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了神经网络的计算过程中进行数据传递的示意图;
图2示出了根据本公开实施例的数据同步处理方法的流程示意图;
图3A示出了神经网络的有向无环图的示意图;
图3B示出了根据图3A所示的有向无环图进行算子融合得到分支型计算图的实现过程;
图3C示出了根据图3B所示的分支型计算图进行序列化得到的线型计算图;
图4示出了根据图3C所示的线型计算图的一种调度单元分配示意图;
图5示出了根据图3C所示的线型计算图的另一种调度单元分配示意图;
图6示出了根据图3C所示的线型计算图的又一种调度单元分配示意图;
图7示出了根据图3C所示的线型计算图的又一种调度单元分配示意图;
图8示出了根据图3C所示的线型计算图的一种执行情况示意图;
图9示出了根据本公开实施例的数据同步处理装置的示意性框图;
图10示出了根据本公开实施例的计算设备的示意性框图;
图11示出了根据本公开实施例的示例性计算设备的架构的示意图;
图12示出了根据本公开实施例的计算机可读存储介质的示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
此外,如本公开和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
本公开中使用了流程图来说明根据本公开的实施例的方法的步骤。应当理解的是,前面或后面的步骤不一定按照顺序来精确的进行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中。可以理解的是,本文中涉及的专业术语、名词具有本领域技术人员所公知的含义。
人工神经网络(Artificial Neural Networks)也简称为神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。不论何种类型的人工神经网络,它们共同的特点是大规模并行处理、分布式存储、弹性拓扑、高度冗余和非线性运算等,具有运算速度、联想能力、适应性、容错能力和自组织能力等方面的能力。这些特点和能力构成了人工神经网络模拟智能活动的技术基础,并在各种技术领域获得了重要的应用。例如,人工神经网络可以用于数据压缩、图像处理、视频编码、信号处理等方面。
为了提高神经网络的计算效率,通常会将神经网络中满足一定条件或规则的相邻多个算子(operator)进行融合,形成融合算子(fused operator)。一个融合算子或者无法进行融合的单个算子可以表示为一个融合层(fusion layer),或者简称为层。神经网络的计算过程以融合层为单位、逐层(layer-by-layer)进行。通常情况下,前一层(或前几层)的输出作为后一层(或者后几层)的输入,因而形成融合层之间的数据依赖(datadependency)。
融合层之间的数据传递一般通过共享内存的方式进行。图1示出了神经网络的计算过程中进行数据传递的示意图,如图1所示,对于神经网络的计算单元,一般细化为矩阵乘法单元、矢量运算单元以及标量运算单元,分别用于进行不同的计算任务。在计算单元进行计算的过程中,需要通过共享内存用数据同步的方法来保证有数据依赖关系的融合层之间的执行顺序。共享内存可以是基于内部存储器(internal memory)或外部存储器(external memory),在此不作限制。在当前融合层从存储器中读取输入数据时,必须保证产生输出数据的融合层已经将对应的输出数据写入到存储器中。
对于单分支网络(即整个神经网络只有一个分支),因为上一层的输出总是下一层的输入,数据依赖关系单一、模式固定,能够简单地达到数据同步。然而,对于多分支网络,存在某层的输入来自于多个层的输出、或者某层的输出给多个层作为输入的情况,且没有固定的分支模式,不同的网络也会存在不同的多分支结构。为了保证数据同步,相关技术中根据数据依赖关系确定各层的强约束执行顺序,层与层之间保证完全串行的计算过程,即:总是前一个层的计算完全结束、且写出结果之后再启动下一个层的计算。然而,这种执行顺序上的强约束使得层与层的计算过程完全串行化,实际上是用了一种相对低效的执行流程替代了复杂的层间同步过程,这严重降低了神经网络的计算效率。
基于以上,如何保证神经网络中层间数据同步是网络计算过程高效执行的必要前提,有需要提供一种通用的数据同步方法来应对各种类型神经网络结构,面对层间复杂的数据依赖关系仍能保证准确、高效的执行顺序。
本公开的一些实施例提供了一种数据同步处理方法、装置、计算设备和存储介质,用于针对各种类型的神经网络结构,尤其是网络结构较为复杂的多分支神经网络提供通用的数据同步处理,保证具有数据依赖关系的融合层之间的顺序执行,以实现神经网络的高效计算。本公开的实施例提供了面对各类神经网络结构实现层间数据同步的通用解决方案。
图2示出了根据本公开实施例的数据同步处理方法的流程示意图。根据本公开实施例的数据同步处理方法应用于神经网络计算,用于实现神经网络中融合层之间的数据同步。
如图2所示,首先,在步骤S101,获取对应于神经网络的线型计算图,其中,神经网络包括多个融合层,线型计算图表征神经网络中的多个融合层之间的数据依赖关系以及执行顺序。
根据本公开的一些实施例,神经网络的线型计算图由节点和节点之间的连线组成,图中的节点表征神经网络中经过算子融合得到的融合层,节点之间的连线表征各个融合层之间的数据依赖关系以及执行顺序。例如,融合层1的输出将作为融合层2的输入,则表示为自融合层1指向融合层2的连线,由此线型计算图中的线型结构能够表征神经网络中的融合层在时间上的执行顺序。关于线型计算图的示意图将在下文结合具体示例进行描述。
作为一种实现方式,可以基于神经网络的有向无环图来生成上述线性计算图。可以理解的是,根据本公开的实施例也可以采用其他的方式来获得线型计算图,只要该线型计算图能够表征神经网络中的多个融合层之间的数据依赖关系以及执行顺序,在此不作限制。
根据本公开的一些实施例,获取对应于神经网络的线型计算图可以包括:基于神经网络的网络结构生成有向无环图,其中,有向无环图包括计算节点以及计算节点之间的连线,计算节点之间的连线表征计算节点之间的数据依赖关系和数据流向;对有向无环图中的计算节点进行算子融合,得到分支型计算图,其中,一个或多个计算节点经算子融合后表示为融合层,分支型计算图包括融合层以及融合层之间的连线,融合层之间的连线表征融合层之间的数据依赖关系和数据流向;以及基于分支型计算图进行序列化得到线型计算图。
以下将结合附图来详细描述基于神经网络的有向无环图获得线型计算图的实现方式。
神经网络可以看作由很多计算节点组成的有向无环图(DAG),每个节点对应于一个算子(operator)。具体的,图3A示出了神经网络的有向无环图的示意图。如图3A所示,其中示出了一个由13个计算节点组成的有向无环图,即,与之对应的神经网络中包括13个算子,此外,节点之间由连线连接,该连线表征计算节点之间的数据依赖关系和数据流向。例如,节点1的输出数据流向节点2,节点2的输出数据流向节点3和节点6,依次类推,由此可以确定得到节点1与节点2具有数据依赖关系,节点2与节点6以及节点3具有数据依赖关系。可以理解的是,图3A中示出的网络结构仅是示意性的,根据本公开实施例的方法可以应用于各种类型的神经网络结构。
接着,依据图3A所示的有向无环图能够进行算子融合以得到融合后的分支型计算图。图3B示出了根据图3A所示的有向无环图进行算子融合得到分支型计算图的实现过程。
相关技术中,对于神经网络的计算,为了更高效地执行网络中的算子的计算过程,可以按照一些规则和模式进行算子融合,即将多个算子融合成一个融合算子,如图3B所示,算子1和算子2可以融合成一个融合算子A,类似地,算子3、算子4和算子5可以融合成一个融合算子C,算子6、算子7、算子8和算子9可以融合成一个融合算子B,以此类推。此外,对于不与其他算子进行融合的单个算子也视为融合算子,例如,融合算子D和融合算子E,融合算子也称为融合层。按照以上算子融合的规则,可以得到由融合层以及融合层之间的连线组成的分支型计算图。可以理解的是,本公开实施例不对进行算子融合的具体规则进行限制,可以采用相关技术中的常规方式进行。
根据本公开的一些实施例,神经网络中的融合层内部通过寄存器或一级缓存进行数据传递。也就是说,如图3B所示,融合算子内部的多个算子之间的计算可以通过寄存器或者一级缓存(L0/L1 Cache)来进行数据传递,没有数据搬运的过程,即不存在数据写出、读入的过程。相比较地,融合算子之间则需要通过共享内存来传递数据,存在数据写出、读入的过程。
根据本公开的一些实施例更关注于融合算子之间的数据同步,具体而言是由融合层之间的数据依赖关系带来的内存同步处理。如图3B所示,经过算子融合后,神经网络中的融合层之间的数据依赖关系变得相对简单一些,但是因为图的非线型结构(含有多层级的分支和汇聚特征),融合层之间的数据同步仍然无法轻松解决。虽然图的表达上是非线型结构,图的计算上可以线型化,尤其是经过算子融合之后,图的计算的线型化并不会降低计算效率,这是由于融合层内部的计算实现会充分利用硬件平台上计算核的资源,这也是算子融合的初衷,此外融合层之间有效的同步机制可以保证相邻的融合层的计算过程可以以流水线(pipeline)的方式进行,以最大化硬件计算资源的利用率以及执行效率。
接着,可以基于分支型计算图进行序列化得到最终的线型计算图。图3C示出了根据图3B所示的分支型计算图进行序列化得到的线型计算图。根据本公开实施例,序列化是指根据上述分支型计算图上的数据依赖关系和图的遍历规则,将一个非线型结构的图转化为一个有时间顺序的线型的执行序列,并且保留了图上的数据依赖关系,同时保证所有的数据依赖关系在时间轴上是单向的,即,具有如图3C所示的结构。该执行序列以融合层为单位,执行序列中各个融合层按照顺序适时而及时地启动计算,这需要融合层之间的数据同步机制来保证。作为示例,在实际计算机可执行实现方式中,例如可以采用矢量容器、指针或列表等方式实现上述序列化,在此不作限制。
以上结合图3A-图3C描述了获得步骤S101中的线型计算图的一种实现方式,下面接着参考图2来说明根据本公开实施例的数据同步处理方法。
在步骤S102,按照线型计算图在多个融合层中确定存在数据依赖关系的一对数据产生融合层和数据接收融合层。根据本公开的一些实施例,数据产生融合层产生计算数据,数据接收融合层接收与之对应的数据产生融合层产生的计算数据。可以理解的是,数据产生融合层与数据接收融合层成对出现,也就是说,数据信息总是分产生方和接收方两个部分,并且成对出现,产生方提供数据信息,接收方接收对应的数据信息。此外,可以理解的是,一个数据接收融合层可以对应于一个数据产生融合层也可以对应于多个数据产生融合层,同理,一个数据产生融合层可以对应于一个数据接收融合层可以对应于多个数据接收融合层,即存在一对多或者多对一等情形,在这种情形下,可以针对每一对数据依赖关系分别执行判断过程。如图3C所示,融合层A与融合层B组成一对数据产生融合层和数据接收融合层,融合层A作为产生方,融合层B作为接收方,此外,融合层A与融合层C也组成一对数据产生融合层和数据接收融合层,融合层A作为产生方,融合层C作为接收方,依次类推,根据如图3C所示的线型计算图,可以分别确定得到多对数据产生融合层和数据接收融合层,每队的数据同步判断机制是类似的,在此不再一一解释。
根据本公开的实施例的步骤S102可知,两个融合层之间是否需要进行数据同步,首先取决于这两个融合层之间是否存在直接的数据依赖关系,如图3C所示,融合层A和融合层B之间存在数据依赖,融合层B和融合层C之间不存在数据依赖,融合层A和融合层C存在数据依赖等等。对于存在数据依赖关系的融合层,将根据下文描述的步骤S103来进行进一步的判断,以确定这两者之间是否需要进行数据同步。而对于不存在数据依赖的融合层,则可以直接确定这两者之间不需要进行数据同步,不再进行步骤S103的判断过程。
接着参考图2,在步骤S103,根据数据产生融合层的调度单元标识、数据接收融合层的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的调度单元标识,确定数据产生融合层和数据接收融合层是否进行数据同步,以及基于确定的结果进行数据同步。作为一种实现方式,可以通过存储器来实现以上数据同步的过程,例如,通过结合图1描述的共享内存来实现同步,在此不作限制。根据本公开的一些实施例,调度单元(warp)对应于包括多个线程的线程组,调度单元以轮询调度的方式执行并行计算。一般而言,程序包括多个工作组(workgroup),每一个工作组包括多个线程组,每一个线程组包括多个线程(thread)。同一个工作组中的线程可以按照调度单位分组,然后一组一组地调度至硬件去执行。这个调度单位称作线程组。调度单元warp可以称为是最基本的执行单元,一个调度单元warp包含32个并行线程,这些线程以不同数据资源执行相同的指令。
根据本公开实施例的数据同步处理方法中,一对融合层之间是否进行数据同步既取决于这两者是否存储数据依赖关系,还依赖于这两者所处的调度单元。作为示例,对于不同的调度单元,以调度单元标识进行区分。
根据本公开实施例,神经网络中的每个融合层计算的执行依赖于调度单元的调度,在计算执行之前,每个融合层都会分配调度单元标识(warp id),不同融合层可能分配相同的调度单元标识(即,位于相同的调度单元),也可能分配不同的调度单元标识,不同调度单元标识下的融合层属于不同的调度单元,能够以诸如轮询调度(round-robin)的方式并行执行。存在数据依赖关系的融合层之间是否需要进行数据同步,还需要依据这两个融合层之间调度单元标识的分配情况。
在以上描述中,以融合层为单位分配调度单元标识,即,每个融合层分配一个调度单元标识。在这些实施例中,步骤S103中确定数据产生融合层和数据接收融合层是否通过内存进行数据同步包括:在数据接收融合层的调度单元标识与数据产生融合层的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的调度单元标识均不相同的情况下,确定进行数据同步;以及在数据接收融合层的调度单元标识与数据产生融合层的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的调度单元标识中的任意一个或多个相同的情况下,确定不进行数据同步。
具体的,如果数据接收融合层的调度单元标识与其前面从数据产生融合层开始至该数据接收融合层的N个融合层的调度单元标识均不相同,则该数据接收融合层数据产生融合层需要进行数据同步。如果数据接收融合层的调度单元标识与其前面从数据产生融合层开始至该数据接收融合层的N个融合层的调度单元标识中的任意一个或多个相同,则该数据产生融合层和数据接收融合层不需要进行同步。
下面将结合具体示例来描述以上步骤S103。
如图3C所示,以数据产生融合层为融合层A,数据接收融合层为融合层B为例,如果融合层A和融合层B分配在同一个调度单元上,即,融合层A和融合层B具有相同的调度单元标识,则融合层A和融合层B之间不需要进行同步,这是由于,同一个调度单元上的融合层是顺序执行的,即在执行顺序上能够保证数据同步。如果融合层A和融合层B分配在不同的调度单元上,即,融合层A和融合层B具有不同的调度单元标识,则融合层A和融合层B之间需要进行同步。
在以上示例中,融合层A与融合层B之间不存在中间融合层,进一步地,以数据产生融合层为融合层A,数据接收融合层为融合层C为例进行描述,该融合层A与融合层C之间存在位于中间的融合层B。具体的,如果融合层C所分配的调度单元标识与融合层A的调度单元标识以及融合层B的调度单元标识均不相同,则融合层C与融合层A之间需要进行数据同步,否则,融合层C和融合层A之间不需要进行数据同步。图3C中的其他对存储数据依赖关系的融合层的判断规则类似处理。
根据本公开的一些实施例,如果数据接收融合层的输入数据来自于多个数据产生融合层,即存在多对数据依赖关系,则需要对每一对数据依赖关系分别执行上述判断过程,从而有可能一个数据接收融合层需要与多个数据产生融合层进行同步,也有可能多个数据接收融合层需要与一个数据产生融合层进行同步。不论是一个数据接收融合层与一个数据产生融合层同步,还是一个数据接收融合层与多个数据产生融合层同步,或者多个数据接收融合层与一个数据产生融合层同步,同步关系总是成对的,并且,在同一个数据产生融合层或者同一个数据接收融合层上的多对同步关系可以使用不同的同步屏障(barrier)。
接下来,仍以图3C所示的线型计算图作为示例,结合下图4、图5、图6分别列举了不同的调度单元分配情况进行说明。
在图4中示出了所有的融合层分配在同一个调度单元的情形,例如,具有相同的调度单元标识Warp 0。在图4中,正是由于所有的融合层分配在同一个调度单元,即所有的数据接收融合层的调度单元标识与对应的数据产生融合层的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的调度单元标识均相同,由此,均不需要进行数据同步。
可以理解的是,图4示出了较为特殊的调度单元分配情形,这也体现出根据本公开实施例的数据同步处理方法在适用上的通用性,可以应用于各种类型的神经网络结构以及各种调度单元分配情形,从而能够依据融合层的数据依赖关系以及调度单元分配情形来确定是否需要进行层间数据同步,既能保证数据处理的执行顺序又能实现神经网络的高效计算。
在图5中,融合层A和融合层C分配有相同的调度单元,对应于调度单元标识Warp0,融合层B和融合层E分配有相同的调度单元,对应于调度单元标识Warp 1,融合层D和融合层F分配有相同的调度单元,对应于调度单元标识Warp 2。例如,具有数据依赖关系的融合层A和融合层B,由于这两者的调度单元标识不同,由此这两者之间需要利用如图1所示的共享内存进行数据同步,即,由融合层A将产生的输出数据写入共享内存,以供融合层B作为输入数据进行读取。又例如,具有数据依赖关系的融合层A和融合层C,需要判断融合层C与融合层A以及位于两者之间的融合层B的调度单元标识,由于融合层C与融合层A的调度单元标识相同,由此不需要进行数据同步,则不需要调用共享内存。
在图6的示例中,融合层A和融合层D分配有相同的调度单元,对应于调度单元标识Warp 0,融合层B分配在一个调度单元中,对应于调度单元标识Warp 1,融合层C和融合层F分配有相同的调度单元,对应于调度单元标识Warp 2,融合层E分配在一个调度单元中,对应于调度单元标识Warp 3。例如,具有数据依赖关系的融合层A和融合层B,由于这两者的调度单元标识不同,由此这两者之间需要进行数据同步。又例如,具有数据依赖关系的融合层A和融合层C,需要判断融合层C与融合层A以及位于两者之间的融合层B的调度单元标识,由于融合层C与融合层A以及融合层B的调度单元标识均不相同,由此需要进行数据同步。又例如,具有数据依赖关系的融合层C和融合层E,需要判断融合层E与融合层C以及位于两者之间的融合层D的调度单元标识,由于融合层E与融合层C以及融合层D的调度单元标识均不相同,由此同样需要进行数据同步。
以上结合多个示例描述了以融合层为单位分配调度单元标识的情形。在其他情形中,每个融合层的计算过程包含了数据加载过程、数据计算过程(如图1所示的矩阵乘法单元、矢量运算单元、标量运算单元)、数据存储过程等环节,由此,融合层内部也可以分配多个调度单元进行调度以便于获得更好的并行性。
根据本公开实施例,以融合层的数据加载过程、数据计算过程、数据存储过程为单位分配调度单元标识的情形下,即,针对融合层的数据加载过程、数据计算过程、数据存储过程分别分配调度单元,以上步骤S103确定数据产生融合层和数据接收融合层是否通过内存进行数据同步包括:在数据接收融合层的数据加载过程的调度单元标识与数据产生融合层的数据存储过程的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的所有调度单元标识均不相同的情况下,确定进行数据同步;以及,在数据接收融合层的数据加载过程的调度单元标识与数据产生融合层的数据存储过程的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的所有调度单元标识中的任意一个或多个相同的情况下,确定不进行数据同步。
图7示出了根据图3C所示的线型计算图的又一种调度单元分配示意图,其中,以融合层中的计算单元为单位来分配调度单元,即,一个融合层可能具有一个或者多个调度单元标识。
如图7所示,融合层A整体对应于一个调度单元,其调度单元标识为Warp 0,其中,A-0表示融合层A的数据加载过程,A-1表示融合层A的数据计算过程,A-2表示融合层A的数据存储过程,其余融合层的标识类似理解。具体的,融合层B对应于一个调度单元,即,其数据加载过程B-0、数据计算过程B-1、数据存储过程B-2的调度单元标识均为Warp 1;融合层C对应于三个调度单元,其中数据加载过程C-0的调度单元标识为Warp 0、数据计算过程C-1的调度单元标识为Warp 2、数据存储过程C-2的调度单元标识为Warp 3;融合层D对应于一个调度单元,其数据加载过程D-0、数据计算过程D-1、数据存储过程D-2的调度单元标识均为Warp 4;融合层E对应于两个调度单元,其中数据加载过程E-0的调度单元标识和数据计算过程E-1的调度单元标识均为Warp 0,数据存储过程E-2的调度单元标识为Warp 5;融合层F对应于一个调度单元,其数据加载过程F-0、数据计算过程F-1、数据存储过程F-2的调度单元标识均为Warp 4。
在图7所示的情形下,调度单元标识的比较规则类似于以上结合图4-图6描述的方式,只是比较的内容存在差异。在图7的示例中,需要比较数据接收融合层的数据加载过程(loading procedure)的调度单元标识与数据产生融合层的数据存储过程(storingprocedure)的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的所有调度单元标识是否相同。
例如,在图7中具有数据依赖关系的融合层A和融合层B,由于融合层B的数据加载过程B-0的调度单元标识(即,Warp 1)与融合层A的数据存储过程A-2的调度单元标识(即,Warp 0)以及数据产生融合层和数据接收融合层之间的融合层的所有调度单元标识(即,不存在)均不相同,由此这两者之间需要利用如图1所示的共享内存进行数据同步。
又例如,在图7中具有数据依赖关系的融合层A和融合层C,由于融合层C的数据加载过程C-0的调度单元标识(即,Warp 0)与融合层A的数据存储过程A-2的调度单元标识(即,Warp 0)以及数据产生融合层和数据接收融合层之间的融合层的所有调度单元标识(即,B-0、B-1、B-2均为Warp 1)中存在相同的标识Warp 0,由此这两者之间不需要进行数据同步。
再例如,在图7中具有数据依赖关系的融合层B和融合层E,由于融合层E的数据加载过程E-0的调度单元标识(即,Warp 0)与融合层B的数据存储过程B-2的调度单元标识(即,Warp 1)以及数据产生融合层和数据接收融合层之间的融合层的所有调度单元标识(即,C-0、C-1、C-2、D-0、D-1、D-2)中存在相同的标识Warp 0,由此这两者之间不需要进行数据同步。
在图7中,其余存在数据依赖关系的融合层对的判断过程类似,在此不再一一描述。
图8示出了根据图3C所示的线型计算图的一种执行情况示意图,在图8的示例中,调度单元分配情况对应于图5所示的示例。进一步地,图8中还示出了以batch_size/2数据粒度进行同步的一种执行情况示意图,此外,在实际应用中,执行情况还可以取决于不同融合层在执行计算时占用的硬件资源情况。
如图8所示,在执行过程中,相同调度单元内串行调度,不同调度单元之间并行调度。作为示例,属于相同调度单元的融合层A和融合层C依据相同的调度单元进行串行调度,而属于不同调度单元的融合层A和融合层B进行并行调度,由于融合层A与融合层B之间需要进行数据同步,例如可以以batch_size/2数据粒度进行同步从而交织运行,依据以上内容,在图8中示出了神经网络中的融合层A至融合层F之间的在时间上的执行情况,从而能够在保证融合层执行顺序的基础上尽可能的进行并行计算,实现神经网络的高效计算。
利用本公开实施例提供的以上数据同步处理方法,能够基于神经网络的线型计算图快速地判断存在数据依赖关系的一对数据产生融合层和数据接收融合层,进一步地,还根据数据产生融合层的调度单元标识、数据接收融合层的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的调度单元标识,确定数据产生融合层和数据接收融合层是否进行数据同步,从而基于确定的结果进行数据同步。利用上述过程,能够针对各种类型的神经网络结构,尤其是网络结构较为复杂的神经网络提供通用的数据同步处理,保证具有数据依赖关系的融合层之间的顺序执行,从而实现神经网络的高效计算。
根据本公开的另一方面,还提供了一种数据同步处理装置,应用于神经网络计算,图9示出了根据本公开实施例的数据同步处理装置的示意性框图。
如图9所示,根据本公开实施例的数据同步处理装置1000包括:获取单元1010、数据依赖关系确定单元1020以及数据同步单元1030。
具体的,获取单元1010可以配置成获取对应于神经网络的线型计算图,其中,神经网络包括多个融合层,线型计算图表征神经网络中的多个融合层之间的数据依赖关系以及执行顺序。数据依赖关系确定单元1020可以配置成按照线型计算图在多个融合层中确定存在数据依赖关系的一对数据产生融合层和数据接收融合层。数据同步单元1030可以配置成根据数据产生融合层的调度单元标识、数据接收融合层的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的调度单元标识,确定数据产生融合层和数据接收融合层是否进行数据同步,以及基于确定的结果进行数据同步。
根据本公开的一些实施例,数据产生融合层产生计算数据,数据接收融合层接收与之对应的数据产生融合层产生的计算数据。
根据本公开的一些实施例,以融合层为单位分配调度单元标识。数据同步单元1030确定数据产生融合层和数据接收融合层是否进行数据同步包括:在数据接收融合层的调度单元标识与数据产生融合层的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的调度单元标识均不相同的情况下,确定进行数据同步;以及在数据接收融合层的调度单元标识与数据产生融合层的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的调度单元标识中的任意一个或多个相同的情况下,确定不进行数据同步。
根据本公开的一些实施例,神经网络中的融合层的计算过程包括数据加载过程、数据计算过程、数据存储过程,其中,以融合层的数据加载过程、数据计算过程、数据存储过程为单位分配调度单元标识。数据同步单元1030确定数据产生融合层和数据接收融合层是否进行数据同步包括:在数据接收融合层的数据加载过程的调度单元标识与数据产生融合层的数据存储过程的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的所有调度单元标识均不相同的情况下,确定进行数据同步;以及在数据接收融合层的数据加载过程的调度单元标识与数据产生融合层的数据存储过程的调度单元标识、以及数据产生融合层和数据接收融合层之间的融合层的所有调度单元标识中的任意一个或多个相同的情况下,确定不进行数据同步。
根据本公开的一些实施例,获取单元1010获取对应于神经网络的线型计算图包括:基于神经网络的网络结构生成有向无环图,其中,有向无环图包括计算节点以及计算节点之间的连线,计算节点之间的连线表征计算节点之间的数据依赖关系和数据流向;对有向无环图中的计算节点进行算子融合,得到分支型计算图,其中,一个或多个计算节点经算子融合后表示为融合层,分支型计算图包括融合层以及融合层之间的连线,融合层之间的连线表征融合层之间的数据依赖关系和数据流向;以及基于分支型计算图进行序列化得到线型计算图。
根据本公开的一些实施例,调度单元对应于包括多个线程的线程组,调度单元以轮询调度的方式执行并行计算。
根据本公开的一些实施例,神经网络中的融合层内部通过寄存器或一级缓存进行数据传递。
关于根据本公开实施例的数据同步处理装置所涉及的具体实现过程,可以参照以上结合图2-图8描述的根据本公开一些实施例的数据同步处理方法,在此不再重复描述。利用本公开实施例的数据同步处理装置能够进行类似地数据同步处理过程并实现相似地技术效果。
根据本公开的又一方面,还提供了一种计算设备。图10示出了根据本公开实施例的计算设备的示意性框图。
如图10所示,计算设备2000可以包括处理器2010以及存储器2020。根据本公开实施例,存储器2020中存储有计算机可读代码,该计算机可读代码当由处理器2010运行时,可以执行如上所述的数据同步处理方法。
处理器2010可以根据存储在存储器2020中的程序执行各种动作和处理。具体地,处理器2010可以是一种集成电路,具有信号处理能力。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。例如,此处的处理器可以是指能够进行神经网络计算的计算设备。
存储器2020存储有计算机可执行指令代码,该指令代码在被处理器2010执行时用于实现根据本公开实施例的数据同步处理方法。存储器2020可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。应注意,本文描述的存储器可以是任何适合类型的存储器。作为示例,通过执行存储器2020中的计算机可执行指令代码,诸如CPU的处理器能够实现用于神经网络层间同步的数据同步处理方法。。
根据本公开实施例的方法或计算设备也可以借助于图11所示的计算设备3000的架构来实现。如图11所示,计算设备3000可以包括总线3010、一个或多个CPU 3020、只读存储器(ROM)3030、随机存取存储器(RAM)3040、连接到网络的通信端口3050、输入/输出组件3060、硬盘3070等。计算设备3000中的存储设备,例如ROM 3030或硬盘3070可以存储本公开提供的数据同步处理方法的处理和/或通信使用的各种数据或文件以及CPU所执行的程序指令。计算设备3000还可以包括用户界面3080。当然,图11所示的架构只是示例性的,在实现不同的设备时,根据实际需要,可以省略图11示出的计算设备中的一个或多个组件。
根据本公开的又一方面,还提供了一种非暂时性计算机可读存储介质。图12示出了根据本公开的存储介质的示意图4000。
如图12所示,计算机存储介质4020上存储有计算机可读指令4010。当计算机可读指令4010由处理器运行时,可以执行参照以上附图描述的数据同步处理方法。计算机可读存储介质包括但不限于例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。例如,计算机存储介质4020可以连接于诸如计算机等的计算设备,接着,在计算设备运行计算机存储介质4020上存储的计算机可读指令4010的情况下,可以进行如上所描述的根据本公开实施例提供的数据同步处理方法。
综上,本公开的一些实施例提供了一种数据同步处理方法、装置、计算设备和存储介质,用于针对各种类型的神经网络结构,尤其是网络结构较为复杂的神经网络提供通用的数据同步处理,保证具有数据依赖关系的融合层之间的顺序执行,以实现神经网络的高效计算。具体的,在根据本公开实施例的数据同步处理方法中,神经网络的融合层之间是否进行数据同步不仅取决于层间的数据依赖关系,还依据层间的调度单元分配情况,从而能够在保证各个融合层的数据同步顺序执行的基础上,最大限度的进行并行计算,提供神经网络的高效计算。
本领域技术人员能够理解,本公开所披露的内容可以出现多种变型和改进。例如,以上所描述的各种设备或组件可以通过硬件实现,也可以通过软件、固件、或者三者中的一些或全部的组合实现。
此外,虽然本公开对根据本公开的实施例的系统中的某些单元做出了各种引用,然而,任何数量的不同单元可以被使用并运行在客户端和/或服务器上。单元仅是说明性的,并且系统和方法的不同方面可以使用不同单元。
本公开中使用了流程图用来说明根据本公开的实施例的方法的步骤。应当理解的是,前面或后面的步骤不一定按照顺序来精确的进行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中。
本领域普通技术人员可以理解上述方法中的全部或部分的步骤可通过计算机程序来指令相关硬件完成,程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本公开并不限制于任何特定形式的硬件和软件的结合。
除非另有定义,这里使用的所有术语具有与本公开所属领域的普通技术人员共同理解的相同含义。还应当理解,诸如在通常字典里定义的那些术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非这里明确地这样定义。
以上是对本公开的说明,而不应被认为是对其的限制。尽管描述了本公开的若干示例性实施例,但本领域技术人员将容易地理解,在不背离本公开的新颖教学和优点的前提下可以对示例性实施例进行许多修改。因此,所有这些修改都意图包含在权利要求书所限定的本公开范围内。应当理解,上面是对本公开的说明,而不应被认为是限于所公开的特定实施例,并且对所公开的实施例以及其他实施例的修改意图包含在所附权利要求书的范围内。本公开由权利要求书及其等效物限定。
Claims (14)
1.一种数据同步处理方法,应用于神经网络计算,所述方法包括:
获取对应于神经网络的线型计算图,其中,所述神经网络包括多个融合层,所述线型计算图表征所述神经网络中的所述多个融合层之间的数据依赖关系以及执行顺序;
按照所述线型计算图在所述多个融合层中确定存在数据依赖关系的一对数据产生融合层和数据接收融合层;以及
根据所述数据产生融合层的调度单元标识、所述数据接收融合层的调度单元标识、以及所述数据产生融合层和所述数据接收融合层之间的融合层的调度单元标识,确定所述数据产生融合层和所述数据接收融合层是否进行数据同步,以及基于确定的结果进行数据同步;
其中,以所述融合层为单位分配调度单元标识,所述确定所述数据产生融合层和所述数据接收融合层是否进行数据同步包括:
在所述数据接收融合层的调度单元标识与所述数据产生融合层的调度单元标识、以及所述数据产生融合层和所述数据接收融合层之间的融合层的调度单元标识均不相同的情况下,确定进行数据同步;以及
在所述数据接收融合层的调度单元标识与所述数据产生融合层的调度单元标识、以及所述数据产生融合层和所述数据接收融合层之间的融合层的调度单元标识中的任意一个或多个相同的情况下,确定不进行数据同步。
2.根据权利要求1所述的方法,其特征在于,所述数据产生融合层产生计算数据,所述数据接收融合层接收与之对应的所述数据产生融合层产生的所述计算数据。
3.根据权利要求1所述的方法,其特征在于,所述神经网络中的融合层的计算过程包括数据加载过程、数据计算过程和数据存储过程,其中,以融合层的所述数据加载过程、数据计算过程和数据存储过程为单位分配调度单元标识,其中,所述确定所述数据产生融合层和所述数据接收融合层是否进行数据同步包括:
在所述数据接收融合层的数据加载过程的调度单元标识与所述数据产生融合层的数据存储过程的调度单元标识、以及所述数据产生融合层和所述数据接收融合层之间的融合层的所有调度单元标识均不相同的情况下,确定进行数据同步;以及
在所述数据接收融合层的数据加载过程的调度单元标识与所述数据产生融合层的数据存储过程的调度单元标识、以及所述数据产生融合层和所述数据接收融合层之间的融合层的所有调度单元标识中的任意一个或多个相同的情况下,确定不进行数据同步。
4.根据权利要求1所述的方法,其特征在于,所述获取对应于神经网络的线型计算图包括:
基于所述神经网络的网络结构生成有向无环图,其中,所述有向无环图包括计算节点以及计算节点之间的连线,所述计算节点之间的连线表征计算节点之间的数据依赖关系和数据流向;
对所述有向无环图中的计算节点进行算子融合,得到分支型计算图,其中,一个或多个计算节点经所述算子融合后表示为融合层,所述分支型计算图包括所述融合层以及融合层之间的连线,所述融合层之间的连线表征融合层之间的数据依赖关系和数据流向;以及
基于所述分支型计算图进行序列化得到所述线型计算图。
5.根据权利要求1所述的方法,其特征在于,调度单元对应于包括多个线程的线程组,所述调度单元以轮询调度的方式执行并行计算。
6.根据权利要求1所述的方法,其特征在于,所述神经网络中的融合层内部通过寄存器或一级缓存进行数据传递。
7.一种数据同步处理装置,应用于神经网络计算,所述装置包括:
获取单元,配置成获取对应于神经网络的线型计算图,其中,所述神经网络包括多个融合层,所述线型计算图表征所述神经网络中的所述多个融合层之间的数据依赖关系以及执行顺序;
数据依赖关系确定单元,配置成按照所述线型计算图在所述多个融合层中确定存在数据依赖关系的一对数据产生融合层和数据接收融合层;以及
数据同步单元,配置成根据所述数据产生融合层的调度单元标识、所述数据接收融合层的调度单元标识、以及所述数据产生融合层和所述数据接收融合层之间的融合层的调度单元标识,确定所述数据产生融合层和所述数据接收融合层是否进行数据同步,以及基于确定的结果进行数据同步;
其中,以所述融合层为单位分配调度单元标识,所述数据同步单元确定所述数据产生融合层和所述数据接收融合层是否进行数据同步包括:
在所述数据接收融合层的调度单元标识与所述数据产生融合层的调度单元标识、以及所述数据产生融合层和所述数据接收融合层之间的融合层的调度单元标识均不相同的情况下,确定进行数据同步;以及
在所述数据接收融合层的调度单元标识与所述数据产生融合层的调度单元标识、以及所述数据产生融合层和所述数据接收融合层之间的融合层的调度单元标识中的任意一个或多个相同的情况下,确定不进行数据同步。
8.根据权利要求7所述的装置,其特征在于,所述数据产生融合层产生计算数据,所述数据接收融合层接收与之对应的所述数据产生融合层产生的所述计算数据。
9.根据权利要求7所述的装置,其特征在于,所述神经网络中的融合层的计算过程包括数据加载过程、数据计算过程和数据存储过程,其中,以融合层的所述数据加载过程、数据计算过程和数据存储过程为单位分配调度单元标识,其中,所述数据同步单元确定所述数据产生融合层和所述数据接收融合层是否进行数据同步包括:
在所述数据接收融合层的数据加载过程的调度单元标识与所述数据产生融合层的数据存储过程的调度单元标识、以及所述数据产生融合层和所述数据接收融合层之间的融合层的所有调度单元标识均不相同的情况下,确定进行数据同步;以及
在所述数据接收融合层的数据加载过程的调度单元标识与所述数据产生融合层的数据存储过程的调度单元标识、以及所述数据产生融合层和所述数据接收融合层之间的融合层的所有调度单元标识中的任意一个或多个相同的情况下,确定不进行数据同步。
10.根据权利要求7所述的装置,其特征在于,所述获取单元获取对应于神经网络的线型计算图包括:
基于所述神经网络的网络结构生成有向无环图,其中,所述有向无环图包括计算节点以及计算节点之间的连线,所述计算节点之间的连线表征计算节点之间的数据依赖关系和数据流向;
对所述有向无环图中的计算节点进行算子融合,得到分支型计算图,其中,一个或多个计算节点经所述算子融合后表示为融合层,所述分支型计算图包括所述融合层以及融合层之间的连线,所述融合层之间的连线表征融合层之间的数据依赖关系和数据流向;以及
基于所述分支型计算图进行序列化得到所述线型计算图。
11.根据权利要求7所述的装置,其特征在于,调度单元对应于包括多个线程的线程组,所述调度单元以轮询调度的方式执行并行计算。
12.根据权利要求7所述的装置,其特征在于,所述神经网络中的融合层内部通过寄存器或一级缓存进行数据传递。
13.一种计算设备,包括:
处理器;和
存储器,其中,所述存储器中存储有计算机可读代码,所述计算机可读代码在由所述处理器运行时,执行如权利要求1-6中任一项所述的数据同步处理方法。
14.一种非暂时性计算机可读存储介质,其上存储有指令,其特征在于,所述指令在被处理器执行时实现如权利要求1-6中任一项所述的数据同步处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210949138.0A CN115293340B (zh) | 2022-08-09 | 2022-08-09 | 数据同步处理方法、装置、计算设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210949138.0A CN115293340B (zh) | 2022-08-09 | 2022-08-09 | 数据同步处理方法、装置、计算设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115293340A CN115293340A (zh) | 2022-11-04 |
CN115293340B true CN115293340B (zh) | 2023-07-14 |
Family
ID=83827472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210949138.0A Active CN115293340B (zh) | 2022-08-09 | 2022-08-09 | 数据同步处理方法、装置、计算设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115293340B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116521636B (zh) * | 2023-05-16 | 2023-11-28 | 三峡科技有限责任公司 | 一种运营数据自动同步方法及系统 |
CN117574320B (zh) * | 2024-01-15 | 2024-04-26 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机可读介质及电子设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111260019A (zh) * | 2020-02-18 | 2020-06-09 | 深圳鲲云信息科技有限公司 | 神经网络模型的数据处理方法、装置、设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11429855B2 (en) * | 2018-02-06 | 2022-08-30 | Nec Corporation | Acceleration of neural networks using depth-first processing |
CN110321999B (zh) * | 2018-03-30 | 2021-10-01 | 赛灵思电子科技(北京)有限公司 | 神经网络计算图优化方法 |
CN109740751B (zh) * | 2018-12-24 | 2020-04-14 | 中科寒武纪科技股份有限公司 | 神经网络模型的架构融合方法及相关装置 |
CN109800226A (zh) * | 2018-12-25 | 2019-05-24 | 北京明略软件系统有限公司 | 一种数据治理中的任务管理方法及装置 |
CN113554164A (zh) * | 2020-04-24 | 2021-10-26 | 上海商汤智能科技有限公司 | 神经网络模型的优化、数据处理方法及装置、存储介质 |
CN113705798A (zh) * | 2020-05-21 | 2021-11-26 | 平头哥(上海)半导体技术有限公司 | 处理单元、计算装置及深度学习模型的计算图优化方法 |
CN114356544A (zh) * | 2021-12-02 | 2022-04-15 | 北京邮电大学 | 面向边缘集群的并行计算方法和系统 |
-
2022
- 2022-08-09 CN CN202210949138.0A patent/CN115293340B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111260019A (zh) * | 2020-02-18 | 2020-06-09 | 深圳鲲云信息科技有限公司 | 神经网络模型的数据处理方法、装置、设备及存储介质 |
WO2021164506A1 (zh) * | 2020-02-18 | 2021-08-26 | 深圳鲲云信息科技有限公司 | 神经网络模型的数据处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115293340A (zh) | 2022-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115293340B (zh) | 数据同步处理方法、装置、计算设备和存储介质 | |
CN104123184B (zh) | 一种用于为构建过程中的任务分配资源的方法和系统 | |
CN114741207B (zh) | 一种基于多维度组合并行的gpu资源调度方法和系统 | |
CN108459966B (zh) | 测试组件的调度方法、装置、设备和计算机可读存储介质 | |
CN110597655B (zh) | 迁移和基于纠删码的重构相耦合快速预知修复方法及装置 | |
CN111932257B (zh) | 一种区块链并行化处理方法及装置 | |
CN112527514B (zh) | 基于逻辑扩展的多核心安全芯片处理器及其处理方法 | |
CN111694643B (zh) | 一种面向图神经网络应用的任务调度执行系统及方法 | |
CN109344268A (zh) | 图形数据库写入的方法、电子设备及计算机可读存储介质 | |
CN116501503B (zh) | 负载任务的架构映射方法、装置、计算机设备及介质 | |
CN108984105B (zh) | 对网络存储设备中的复制任务进行分配的方法和设备 | |
CN115242596B (zh) | 面向用户的网络测试床场景业务调度方法及装置 | |
CN118277490B (zh) | 数据处理系统、数据同步方法、电子设备和存储介质 | |
CN108667864B (zh) | 一种进行资源调度的方法和装置 | |
CN111124685A (zh) | 大数据处理方法、装置、电子设备和存储介质 | |
CN116302580B (zh) | 纳米继电器算力资源调度方法及装置 | |
CN115879409B (zh) | 验证方法、验证装置、介质及电子设备 | |
CN111935026A (zh) | 一种数据传输方法、装置、处理设备及介质 | |
CN114706813B (zh) | 多核异构片上系统、非对称同步方法、计算设备和介质 | |
CN117033170A (zh) | 测试任务分配方法、装置、设备、存储介质和程序产品 | |
CN116880973A (zh) | 一种任务调度方法、装置、电子设备和存储介质 | |
CN112256435B (zh) | 用于图形处理器的工作组的分配方法以及图形处理器 | |
CN116187247A (zh) | 一种芯片验证系统、方法、装置及存储介质 | |
CN115712524A (zh) | 数据恢复方法及装置 | |
Costa et al. | On the design of resilient multicloud mapreduce |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 201100 room 1302, 13 / F, building 16, No. 2388, Chenhang highway, Minhang District, Shanghai Patentee after: Shanghai Bi Ren Technology Co.,Ltd. Country or region after: China Address before: 201100 room 1302, 13 / F, building 16, No. 2388, Chenhang highway, Minhang District, Shanghai Patentee before: Shanghai Bilin Intelligent Technology Co.,Ltd. Country or region before: China |