CN111752689B - 一种基于数据流的神经网络多引擎同步计算系统 - Google Patents
一种基于数据流的神经网络多引擎同步计算系统 Download PDFInfo
- Publication number
- CN111752689B CN111752689B CN202010574436.7A CN202010574436A CN111752689B CN 111752689 B CN111752689 B CN 111752689B CN 202010574436 A CN202010574436 A CN 202010574436A CN 111752689 B CN111752689 B CN 111752689B
- Authority
- CN
- China
- Prior art keywords
- module
- computing
- calculation
- input
- 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
- 230000001360 synchronised effect Effects 0.000 title claims abstract description 30
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 18
- 238000004364 calculation method Methods 0.000 claims abstract description 120
- 238000012544 monitoring process Methods 0.000 claims abstract description 19
- 238000000034 method Methods 0.000 abstract description 9
- 230000008569 process Effects 0.000 abstract description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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
- G06N3/045—Combinations of networks
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1048—Scalability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/454—Vector or matrix data
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Neurology (AREA)
- Multi Processors (AREA)
Abstract
本发明实施例公开了一种基于数据流的神经网络多引擎同步计算系统。该系统包括:至少两个计算引擎,每个所述计算引擎包括至少两个计算模块和至少一个缓存模块,所述计算模块用于计算所述缓存模块或上一层计算模块提供的输入计算图以得到输出计算图;至少一个同步模块,每个所述同步模块对应于每个所述计算引擎中同一层的所述缓存模块,所述同步模块用于监测同一层的所述缓存模块存储的输入计算图的数据量,在每个输入计算图的数据量都达到对应预设值时控制每个所述缓存模块将存储的输入计算图输入给下一层计算模块。本发明实施例实现了简单、高效且易于拓展的神经网络多引擎计算时多条数据流之间进行同步。
Description
技术领域
本发明实施例涉及神经网络技术,尤其涉及一种基于数据流的神经网络多引擎同步计算系统。
背景技术
神经网络加速系统通常会采用多个计算引擎来同时计算多幅计算图,从而增加系统的计算帧率。当系统采用多个计算引擎同时工作时,每个计算引擎都有一条数据流,数据流之间需要进行同步操作来保证所有数据流的工作状态相同,从而保证各数据流的计算结果都正确。
现有技术对多条数据流进行同步通常采用的方法为:每个计算引擎中使用一个状态控制模块对计算引擎内的所有子模块进行监测和控制,然后计算引擎将各自的状态反馈给顶层的同步控制模块,该同步控制模块将所有计算引擎的状态进行整理和同步,同时还要和顶层中所有计算引擎的共享模块进行状态交互和同步,顶层的同步控制模块确定所有计算引擎和共享模块都同步之后才发送同步控制信号到各计算引擎和共享模块,从而使能各计算引擎中的模块进行工作,数据流操作得以向下进行。
但上述多条数据流同步的技术会导致这会使得数据流之间的同步控制机制极其复杂,需要同时检测每个计算引擎中各计算模块的状态,综合所有计算引擎的状态来判断各计算引擎以及顶层共享模块是否准确同步,然后发送控制命令到各计算引擎,增加同步控制时间开销,影响多条数据流并行工作的效率,此外复杂的同步控制机制导致系统的设计复杂,需要消耗更多的逻辑资源,多个计算引擎之间的互连也比较复杂,导致系统的电路设计的时序收敛比较困难,此外系统的拓展性较差,计算引擎增加时会导致同步控制机制复杂度增加。
发明内容
本发明实施例提供一种基于数据流的神经网络多引擎同步计算系统,以实现简单、高效且易于拓展的神经网络多引擎计算时多条数据流之间进行同步。
为达此目的,本发明实施例提供了一种基于数据流的神经网络多引擎同步计算系统,该系统包括:
至少两个计算引擎,每个所述计算引擎包括至少两个计算模块和至少一个缓存模块,所述计算模块用于计算所述缓存模块或上一层计算模块提供的输入计算图以得到输出计算图;
至少一个同步模块,每个所述同步模块对应于每个所述计算引擎中同一层的所述缓存模块,所述同步模块用于监测同一层的所述缓存模块存储的输入计算图的数据量,在每个输入计算图的数据量都达到对应预设值时控制每个所述缓存模块将存储的输入计算图输入给下一层计算模块。
进一步的,所述至少一个缓存模块还包括首层缓存模块,所述至少一个同步模块还包括首层同步模块,所述首层同步模块用于监测所述首层缓存模块存储的输入计算图的数据量,在每个输入计算图的数据量都达到对应预设值时控制所述首层缓存模块将存储的输入计算图输入给第一层计算模块。
进一步的,该系统还包括:
首层共享模块,用于监测任意一个所述计算引擎的所述首层缓存模块存储的输入计算图的数据量,在所述输入计算图的数据量达到对应预设值时控制全部所述计算引擎的第一层计算模块开始计算。
进一步的,所述至少一个同步模块还包括底层同步模块,所述底层同步模块用于监测最后一层计算模块得到的输出计算图的数据量,在每个输出计算图的数据量达到对应预设值时控制每个最后一层计算模块将得到的输出计算图输出。
进一步的,所述同步模块包括计数器,所述计数器用于监测所述缓存模块存储的输入计算图的数据量。
进一步的,所述计数器的数量和所述计算引擎的数量相同。
进一步的,该系统还包括:
直接内存存取器,用于发送输入计算图至所述首层缓存模块,还用于接收最后一层计算模块输出的输出计算图。
进一步的,该系统还包括:
片外存储器,用于给所述直接内存存取器发送输入计算图,还用于接收所述直接内存存取器发送的输出计算图。
进一步的,该系统还包括:
上位机,用于在接收到用户的计算指令后控制所述片外存储器开始发送输入计算图给所述首层缓存模块,同时控制所述同步模块开始监测所述缓存模块存储的输入计算图的数据量。
进一步的,所述缓存模块为FIFO存储器。
本发明实施例通过至少两个计算引擎,每个所述计算引擎包括至少两个计算模块和至少一个缓存模块,所述计算模块用于计算所述缓存模块或上一层计算模块提供的输入计算图以得到输出计算图;至少一个同步模块,每个所述同步模块对应于每个所述计算引擎中同一层的所述缓存模块,所述同步模块用于监测同一层的所述缓存模块存储的输入计算图的数据量,在每个输入计算图的数据量都达到对应预设值时控制每个所述缓存模块将存储的输入计算图输入给下一层计算模块,解决了对多条数据流进行同步效率低、资源占用高、电路设计复杂且扩展性差的问题,实现了简单、高效且易于拓展的神经网络多引擎计算时多条数据流之间进行同步的效果。
附图说明
图1是本发明实施例一提供的一种基于数据流的神经网络多引擎同步计算系统的结构示意图;
图2是本发明实施例二提供的一种基于数据流的神经网络多引擎同步计算系统的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
此外,术语“第一”、“第二”等可在本文中用于描述各种方向、动作、步骤或元件等,但这些方向、动作、步骤或元件不受这些术语限制。这些术语仅用于将第一个方向、动作、步骤或元件与另一个方向、动作、步骤或元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一计算模块称为第二计算模块,且类似地,可将第二计算模块称为第一计算模块。第一计算模块和第二计算模块两者都是计算模块,但其不是同一计算模块。术语“第一”、“第二”等不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本发明实施例的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
实施例一
如图1所示,本发明实施例一提供了一种基于数据流的神经网络多引擎同步计算系统,该系统包括至少两个计算引擎和至少一个同步模块。
具体的,每个计算引擎包括至少两个计算模块和至少一个缓存模块,计算模块用于计算缓存模块或上一层计算模块提供的输入计算图以得到输出计算图;至少一个同步模块300,每个同步模块300对应于每个计算引擎中同一层的缓存模块,同步模块300用于监测同一层的缓存模块存储的输入计算图的数据量,在每个输入计算图的数据量都达到对应预设值时控制每个缓存模块将存储的输入计算图输入给下一层计算模块。
本实施例中,该系统包括两个计算引擎和一个同步模块300,两个计算引擎分别为第一计算引擎100和第二计算引擎200,每个计算引擎包括两个计算模块和一个缓存模块,第一计算引擎100包括两个计算模块和一个缓存模块,分别为第一计算模块110、第二计算模块120和第一缓存模块130,第一缓存模块130设置在第一计算模块110和第二计算模块120之间,第二计算引擎200包括两个计算模块和一个缓存模块,分别为第三计算模块210、第四计算模块220和第二缓存模块230,第二缓存模块230设置在第三计算模块210和第四计算模块220之间。其中,可以将第一计算模块110、第一缓存模块130至第二计算模块120的计算路径看作一条数据流,也可以将第三计算模块210、第二缓存模块230至第四计算模块220的计算路径看作一条数据流,第一计算模块110和第三计算模块210可以看作同一层的计算模块,第一缓存模块130和第二缓存模块230可以看作同一层的缓存模块,第二计算模块120和第四计算模块220可以看作同一层的计算模块。
示例性的,当第一计算引擎100和第二计算引擎200开始计算时,外部的输入计算图会分别输入到第一计算模块110和第三计算模块210,但第一计算模块110和第三计算模块210的计算速度或所计算的数据量可能不同,可能出现流速变化,导致各数据流之间发生数据不同步,为了保证这两条数据流的工作状态相同,在第一计算模块110和第二计算模块120之间设置有第一缓存模块130,在第三计算模块210和第四计算模块220之间设置有第二缓存模块230,第一计算模块110计算得到的输出计算图会作为第二计算模块120的输入计算图输入至第一缓存模块130中存储,相同的,第三计算模块210计算得到的输出计算图也会作为第四计算模块220输入计算图输入至第二缓存模块230中存储,而同步模块300会监测同一层的缓存模块存储的输入计算图的数据量,即监测第一缓存模块130和第二缓存模块230存储的输入计算图的数据量,在第一缓存模块130和第二缓存模块230存储的输入计算图的数据量都达到对应预设值时,具体的,还可以是在第一缓存模块130和第二缓存模块230存储的输入计算图的数据量的差值在预设范围之内时,此时认为数据流是同步的,同步模块300会控制第一缓存模块130将其存储的输入计算图输入给第二计算模块120,控制第二缓存模块230将其存储的输入计算图输入给第四计算模块220,若数据流不同步时,即第一缓存模块130和第二缓存模块230存储的输入计算图的数据量都没有达到对应预设值时,同步模块300会进行同步操作,通过暂停流速较快的缓存模块的数据操作从而恢复同步,此外,还可以是在第一缓存模块130和第二缓存模块230存储的输入计算图的数据量的差值在预设范围之外时同步模块300进行同步操作,由此完成第一计算引擎100和第二计算引擎200的两条数据流的同步操作。此外,第一缓存模块130和第二缓存模块230还可以接收来自外部的输入计算图,并按上述方法传输给下一层计算模块。
本发明实施例通过至少两个计算引擎,每个所述计算引擎包括至少两个计算模块和至少一个缓存模块,所述计算模块用于计算所述缓存模块或上一层计算模块提供的输入计算图以得到输出计算图;至少一个同步模块,每个所述同步模块对应于每个所述计算引擎中同一层的所述缓存模块,所述同步模块用于监测同一层的所述缓存模块存储的输入计算图的数据量,在每个输入计算图的数据量都达到对应预设值时控制每个所述缓存模块将存储的输入计算图输入给下一层计算模块,解决了对多条数据流进行同步效率低、资源占用高、电路设计复杂且扩展性差的问题,实现了简单、高效且易于拓展的神经网络多引擎计算时多条数据流之间进行同步的效果。
实施例二
如图2所示,本发明实施例二提供了一种基于数据流的神经网络多引擎同步计算系统,本发明实施例二是在本发明实施例一的基础上进一步的优化。
在本发明实施例一的基础上,本发明实施例二还对计算的开始和结束进行同步操作,本实施例中,至少一个缓存模块还包括首层缓存模块,至少一个同步模块还包括首层同步模块,首层同步模块用于监测首层缓存模块存储的输入计算图的数据量,在每个输入计算图的数据量都达到对应预设值时控制首层缓存模块将存储的输入计算图输入给第一层计算模块。至少一个同步模块还包括底层同步模块,底层同步模块用于监测最后一层计算模块得到的输出计算图的数据量,在每个输出计算图的数据量达到对应预设值时控制每个最后一层计算模块将得到的输出计算图输出。
进一步的,该系统还包括首层共享模块400、直接内存存取器500、片外存储器600和上位机700。具体的,首层共享模块400用于监测任意一个计算引擎的首层缓存模块存储的输入计算图的数据量,在输入计算图的数据量达到对应预设值时控制计算引擎的第一层计算模块开始计算。直接内存存取器500用于发送输入计算图至首层缓存模块,还用于接收最后一层计算模块输出的输出计算图。片外存储器600用于给直接内存存取器500发送输入计算图,还用于接收直接内存存取器500发送的输出计算图。上位机700用于在接收到用户的计算指令后控制片外存储器600开始发送输入计算图给首层缓存模块,同时控制同步模块开始监测缓存模块存储的输入计算图的数据量。
本实施例中,该系统包括两个计算引擎和三个同步模块,两个计算引擎分别为第一计算引擎100和第二计算引擎,三个同步模块分别为第一同步模块310、第二同步模块320和第三同步模块330,每个计算引擎包括三个计算模块和两个缓存模块,第一计算引擎100包括三个计算模块和两个缓存模块,分别为第一计算模块110、第二计算模块120、第三计算模块130、第一缓存模块140和第二缓存模块150,第一缓存模块140设置在第一计算模块110上一层,第二缓存模块150设置在二计算模块和第三计算模块130之间,第二计算引擎包括三个计算模块和两个缓存模块,分别为第四计算模块210、第五计算模块220、第六计算模块230、第三缓存模块240和第四缓存模块250,第三缓存模块240设置在第四计算模块210上一层,第四缓存模块250设置在第五计算模块220和第六计算模块230之间。其中,可以将第一缓存模块140、第一计算模块110、第二计算模块120、第二缓存模块150和第三计算模块130的计算路径看作一条数据流,也可以将第三缓存模块240、第四计算模块210、第五计算模块220、第四缓存模块250和第六计算模块230的计算路径看作一条数据流,第一缓存模块140和第三缓存模块240可以看作同一层的缓存模块,第一计算模块110和第四计算模块210可以看作同一层的计算模块,第二计算模块120和第五计算模块220可以看作同一层的计算模块,第二缓存模块150和第四缓存模块250可以看作同一层的缓存模块,第三计算模块130和第六计算模块230可以看作同一层的计算模块。其中,第一缓存模块140和第三缓存模块240为首层缓存模块,第一同步模块310为首层同步模块,第三同步模块330为底层同步模块。
示例性的,当第一计算引擎100和第二计算引擎开始计算时,即上位机700在接收到用户的计算指令后,上位机700会控制片外存储器600开始通过直接内存存取器500发送输入计算图第一缓存模块140和第三缓存模块240,同时控制第一同步模块310开始监测第一缓存模块140和第三缓存模块240中存储的输入计算图的数据量,并控制首层共享模块400开始监测第一缓存模块140中存储的输入计算图的数据量,在第一缓存模块140和第三缓存模块240存储的输入计算图的数据量都达到对应预设值时,具体的,可以是在第一缓存模块140和第三缓存模块240存储的输入计算图的数据量的差值在预设范围之内时,第一同步模块310会控制第一缓存模块140将其存储的输入计算图输入给第一计算模块110,控制第三缓存模块240将其存储的输入计算图输入给第四计算模块210,首层共享模块400会控制第一计算模块110和第四计算模块210开始计算,此时首层共享模块400和所有数据流之间都是同步的。若数据流不同步时,即第一缓存模块140和第三缓存模块240存储的输入计算图的数据量都没有达到对应预设值时,第一同步模块310会进行同步操作,通过暂停流速较快的缓存模块的数据操作从而恢复同步,此外,还可以是在第一缓存模块140和第三缓存模块240存储的输入计算图的数据量的差值在预设范围之外时第一同步模块310进行同步操作,由此完成了第一计算引擎100和第二计算引擎的两条数据流计算开始时的同步操作。
进一步的,除了上一层计算模块输出的输入计算图,第三计算模块130和第六计算模块230计算时可能需要来自片外存储器600输入的输入计算图,因此第二缓存模块150和第四缓存模块250还会通过直接内存存取器500接收来自片外存储器600输入的输入计算图。而第一计算模块110和第二计算模块120之间、第四计算模块210和第五计算模块220之间不需要来自片外存储器600的输入计算图,因此第一计算模块110和第二计算模块120之间、第四计算模块210和第五计算模块220之间可以不设置缓存模块进行同步。此外,计算过程中的同步与本发明实施例一相同,本发明实施例在此不再赘述,需要说明的是,在计算过程中,每个计算引擎可能包括很多个计算模块,并相应的增加有缓存模块和同步模块,但其同步方法都和上述相同。
进一步的,当第一计算引擎100和第二计算引擎的计算都达到最后一层计算模块时,即第三计算模块130和第六计算模块230计算时,第三同步模块330会监测第三计算模块130和第六计算模块230得到的输出计算图的数据量,在每个输出计算图的数据量达到对应预设值时,第三同步模块330会控制第三计算模块130和第六计算模块230将得到的输出计算图通过直接内存存取器500输出给片外存储器600,当此时的数据流同步或不同步时,其具体的同步方式和第一缓存模块140、第三缓存模块240之间的同步方式相同,本发明实施例在此不再赘述。
作为优选的,同步模块包括计数器,第一同步模块310、第二同步模块320和第三同步模块330都通过其中的计数器来监测各个缓存模块存储的输入计算图的数据量。进一步的,该系统还可以包括更多的计算引擎,计数器的数量和计算引擎的数量相同,每个计数器用来监测一个计算引擎。缓存模块为FIFO(First Input First Output)存储器,可以增加数据传输率、处理大量数据流以及匹配具有不同传输率的系统,尤其适用于该基于数据流的神经网络多引擎同步计算系统。
本发明实施例通过缓存模块将数据流拆分成多个部分,各部分间独立进行同步简化同步操作;在数据流中各计算模块的上一层加入小的缓存模块,直接监测缓存模块中的数据量判断数据流各层的同步状态;以一条数据流作为基准和所有数据流之间进行同步,简化数据流之间的同步操作;拓展数据流数量时只需要增加同步模块中计数器的数量,就可以采用上述同样的方法可以简单方便地实现同步,从而提升了数据流并行工作的效率,减少了同步操作所产生的资源消耗,有利于该系统整体设计的时序收敛,并提升了系统的可拓展性。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种基于数据流的神经网络多引擎同步计算系统,其特征在于,包括:
至少两个计算引擎,每个所述计算引擎包括至少两个计算模块和至少一个缓存模块,所述计算模块用于计算所述缓存模块或上一层计算模块提供的输入计算图以得到输出计算图;
至少一个同步模块,每个所述同步模块对应于每个所述计算引擎中同一层的所述缓存模块,所述同步模块用于监测同一层的所述缓存模块存储的输入计算图的数据量,在每个输入计算图的数据量都达到对应预设值时控制每个所述缓存模块将存储的输入计算图输入给下一层计算模块。
2.根据权利要求1所述的系统,其特征在于,所述至少一个缓存模块还包括首层缓存模块,所述至少一个同步模块还包括首层同步模块,所述首层同步模块用于监测所述首层缓存模块存储的输入计算图的数据量,在每个输入计算图的数据量都达到对应预设值时控制所述首层缓存模块将存储的输入计算图输入给第一层计算模块。
3.根据权利要求2所述的系统,其特征在于,还包括:
首层共享模块,用于监测任意一个所述计算引擎的所述首层缓存模块存储的输入计算图的数据量,在所述输入计算图的数据量达到对应预设值时控制全部所述计算引擎的第一层计算模块开始计算。
4.根据权利要求2所述的系统,其特征在于,所述至少一个同步模块还包括底层同步模块,所述底层同步模块用于监测最后一层计算模块得到的输出计算图的数据量,在每个输出计算图的数据量达到对应预设值时控制每个最后一层计算模块将得到的输出计算图输出。
5.根据权利要求1所述的系统,其特征在于,所述同步模块包括计数器,所述计数器用于监测所述缓存模块存储的输入计算图的数据量。
6.根据权利要求5所述的系统,其特征在于,所述计数器的数量和所述计算引擎的数量相同。
7.根据权利要求4所述的系统,其特征在于,还包括:
直接内存存取器,用于发送输入计算图至所述首层缓存模块,还用于接收最后一层计算模块输出的输出计算图。
8.根据权利要求7所述的系统,其特征在于,还包括:
片外存储器,用于给所述直接内存存取器发送输入计算图,还用于接收所述直接内存存取器发送的输出计算图。
9.根据权利要求8所述的系统,其特征在于,还包括:
上位机,用于在接收到用户的计算指令后控制所述片外存储器开始发送输入计算图给所述首层缓存模块,同时控制所述同步模块开始监测所述缓存模块存储的输入计算图的数据量。
10.根据权利要求1所述的系统,其特征在于,所述缓存模块为FIFO存储器。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010574436.7A CN111752689B (zh) | 2020-06-22 | 2020-06-22 | 一种基于数据流的神经网络多引擎同步计算系统 |
PCT/CN2021/098289 WO2021259040A1 (zh) | 2020-06-22 | 2021-06-04 | 基于数据流的神经网络多引擎同步计算系统 |
US18/011,528 US20230305976A1 (en) | 2020-06-22 | 2021-06-04 | Data flow-based neural network multi-engine synchronous calculation system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010574436.7A CN111752689B (zh) | 2020-06-22 | 2020-06-22 | 一种基于数据流的神经网络多引擎同步计算系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111752689A CN111752689A (zh) | 2020-10-09 |
CN111752689B true CN111752689B (zh) | 2023-08-25 |
Family
ID=72676413
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010574436.7A Active CN111752689B (zh) | 2020-06-22 | 2020-06-22 | 一种基于数据流的神经网络多引擎同步计算系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230305976A1 (zh) |
CN (1) | CN111752689B (zh) |
WO (1) | WO2021259040A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111752689B (zh) * | 2020-06-22 | 2023-08-25 | 深圳鲲云信息科技有限公司 | 一种基于数据流的神经网络多引擎同步计算系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105426472A (zh) * | 2015-11-16 | 2016-03-23 | 广州供电局有限公司 | 分布式计算系统及其数据处理方法 |
CN109189589A (zh) * | 2018-08-14 | 2019-01-11 | 北京博睿宏远数据科技股份有限公司 | 一种分布式大数据计算引擎及架构方法 |
CN111290986A (zh) * | 2020-03-03 | 2020-06-16 | 深圳鲲云信息科技有限公司 | 一种基于神经网络的总线互联系统 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9032362B2 (en) * | 2012-09-10 | 2015-05-12 | Sap Se | System and method for generating high performance calculators for calculation graphs |
US10051309B2 (en) * | 2015-04-01 | 2018-08-14 | Lattice Semiconductor Corporation | Port processor capable of performing authentication for multiple source devices |
US10832120B2 (en) * | 2015-12-11 | 2020-11-10 | Baidu Usa Llc | Systems and methods for a multi-core optimized recurrent neural network |
CN111310893B (zh) * | 2016-08-05 | 2023-11-21 | 中科寒武纪科技股份有限公司 | 一种用于执行神经网络运算的装置及方法 |
KR20180075913A (ko) * | 2016-12-27 | 2018-07-05 | 삼성전자주식회사 | 신경망 연산을 이용한 입력 처리 방법 및 이를 위한 장치 |
WO2018193354A1 (en) * | 2017-04-17 | 2018-10-25 | Cerebras Systems Inc. | Wavelet representation for accelerated deep learning |
US11797837B2 (en) * | 2017-04-24 | 2023-10-24 | Intel Corporation | Dynamic distributed training of machine learning models |
US11353868B2 (en) * | 2017-04-24 | 2022-06-07 | Intel Corporation | Barriers and synchronization for machine learning at autonomous machines |
US11410024B2 (en) * | 2017-04-28 | 2022-08-09 | Intel Corporation | Tool for facilitating efficiency in machine learning |
US11704569B2 (en) * | 2017-05-23 | 2023-07-18 | Intel Corporation | Methods and apparatus for enhancing a binary weight neural network using a dependency tree |
US11755901B2 (en) * | 2017-12-28 | 2023-09-12 | Intel Corporation | Dynamic quantization of neural networks |
US11270201B2 (en) * | 2017-12-29 | 2022-03-08 | Intel Corporation | Communication optimizations for distributed machine learning |
CN111752689B (zh) * | 2020-06-22 | 2023-08-25 | 深圳鲲云信息科技有限公司 | 一种基于数据流的神经网络多引擎同步计算系统 |
-
2020
- 2020-06-22 CN CN202010574436.7A patent/CN111752689B/zh active Active
-
2021
- 2021-06-04 WO PCT/CN2021/098289 patent/WO2021259040A1/zh active Application Filing
- 2021-06-04 US US18/011,528 patent/US20230305976A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105426472A (zh) * | 2015-11-16 | 2016-03-23 | 广州供电局有限公司 | 分布式计算系统及其数据处理方法 |
CN109189589A (zh) * | 2018-08-14 | 2019-01-11 | 北京博睿宏远数据科技股份有限公司 | 一种分布式大数据计算引擎及架构方法 |
CN111290986A (zh) * | 2020-03-03 | 2020-06-16 | 深圳鲲云信息科技有限公司 | 一种基于神经网络的总线互联系统 |
Also Published As
Publication number | Publication date |
---|---|
US20230305976A1 (en) | 2023-09-28 |
CN111752689A (zh) | 2020-10-09 |
WO2021259040A1 (zh) | 2021-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Pop et al. | Timing analysis of the FlexRay communication protocol | |
RU2415511C2 (ru) | Шлюз для автоматической маршрутизации сообщений между шинами | |
WO2011004566A1 (ja) | バス制御装置 | |
JP5793690B2 (ja) | インタフェース装置、およびメモリバスシステム | |
CN101271438A (zh) | 用于在消息之间进行仲裁的数据处理装置和方法 | |
US6877049B1 (en) | Integrated FIFO memory management control system using a credit value | |
CN103795649B (zh) | 一种网络延时抖动平滑方法 | |
JP2008532169A (ja) | 共有されたリソースを調停するための電子装置及び方法 | |
EP2975812A1 (en) | Bus system and computer program | |
US20190087236A1 (en) | Resource scheduling device, system, and method | |
US20190044883A1 (en) | NETWORK COMMUNICATION PRIORITIZATION BASED on AWARENESS of CRITICAL PATH of a JOB | |
CN111290986B (zh) | 一种基于神经网络的总线互联系统 | |
CN111752689B (zh) | 一种基于数据流的神经网络多引擎同步计算系统 | |
CN111752887B (zh) | 人工智能芯片和基于人工智能芯片的数据处理方法 | |
JP7273975B2 (ja) | データ処理の方法、装置、機器及び記憶媒体 | |
Chen et al. | ArSMART: An improved SMART NoC design supporting arbitrary-turn transmission | |
Lange et al. | Guaranteeing real-time message deadlines in the FlexRay static segment using a on-line scheduling approach | |
CN114679423B (zh) | 一种面向流控机制的无死锁可扩展互连裸芯架构 | |
CN110232073A (zh) | 一种数据处理分析系统及方法 | |
US8811387B2 (en) | Dynamically reconfigurable hybrid circuit-switched and packet-switched network architecture | |
CN105094944A (zh) | 一种虚拟机迁移方法及装置 | |
CN113556242B (zh) | 一种基于多处理节点来进行节点间通信的方法和设备 | |
WO2021213076A1 (zh) | 基于多处理节点来构建通信拓扑结构的方法和设备 | |
CN103268278B (zh) | 支持多核处理器的sram控制器及其跟踪信息处理方法 | |
CN106776462B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |