CN110188067A - 协处理器及其数据处理加速方法 - Google Patents

协处理器及其数据处理加速方法 Download PDF

Info

Publication number
CN110188067A
CN110188067A CN201910633024.3A CN201910633024A CN110188067A CN 110188067 A CN110188067 A CN 110188067A CN 201910633024 A CN201910633024 A CN 201910633024A CN 110188067 A CN110188067 A CN 110188067A
Authority
CN
China
Prior art keywords
data
execution
output
message
coprocessor
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.)
Granted
Application number
CN201910633024.3A
Other languages
English (en)
Other versions
CN110188067B (zh
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 First-Class Technology Co Ltd
Original Assignee
Beijing First-Class 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 First-Class Technology Co Ltd filed Critical Beijing First-Class Technology Co Ltd
Priority to CN201910633024.3A priority Critical patent/CN110188067B/zh
Publication of CN110188067A publication Critical patent/CN110188067A/zh
Priority to PCT/CN2020/093840 priority patent/WO2021008257A1/zh
Application granted granted Critical
Publication of CN110188067B publication Critical patent/CN110188067B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开披露了一种协处理器,包括执行体组件、具有至少两个输出数据缓存的第一执行体以及第二执行体,其中,所述执行体组件轮流地从所述第一执行体的至少两个输出数据缓存之一读取所需处理的数据,并执行预定的操作处理获得操作结果数据,并在获得操作结果数据之后向第一执行体反馈消息,以便告知第一执行体将所述至少两个输出数据缓存之一置于空置状态;所述第二执行体在获得来自所述执行体组件的消息后将所述执行体组件的操作结果数据通过所述通信信道输出,并在所述操作结果数据被输出后向所述执行组件反馈消息以及向第一执行体发送可以搬运数据的消息;以及所述第一执行体在获得来自第二执行体的可以搬运数据的消息后,在所述执行体组件在获得第二执行体反馈的消息针对所述第一执行体的至少两个输出数据缓存中的另一个读取所需处理的数据并执行预定的操作处理获得操作结果数据的同时,第一执行体经由所述协处理器与外围设备之间的通信信道将所需要处理的数据搬运到处于空置状态的所述至少两个输出数据缓存之一。

Description

协处理器及其数据处理加速方法
技术领域
本公开涉及一种协处理器,更具体地说,本公开涉及一种在协处理器中加速数据处理的方法。
背景技术
在现有的大量的数据处理器中,除了CPU,还有各种协处理器,用于分担CPU的数据处理功能。例如GPU(Graphic Processing Unit)、APU等。举例而言,GPU目前被用于大数据计算以及深度学习,这是因为GPU实际上是一组图形函数的集合,而这些函数由硬件实现。GPU具有高并行结构(highly parallel structure),所以GPU在处理图形数据和复杂算法方面拥有比CPU更高的效率。CPU执行计算任务时,一个时刻只处理一个数据,不存在真正意义上的并行,而GPU具有多个处理器核,在一个时刻可以并行处理多个数据。与CPU相比,GPU拥有更多的ALU(Arithmetic Logic Unit,算术逻辑单元)用于数据处理,而非数据高速缓存和流控制。这样的结构非常适合于对于类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。
然而,GPU在进行深度学习以及大数据计算的应用过程中,由于多个GPU之间采用数据并行,因此,GPU之间存在大量的参数交互。这种参数交互将会占用设备间或片间互联带宽,例如PCIe或NvLink这样的设备间或片间互联带宽。同时,在大数据计算以及深度学习中,GPU也要不断地占用片间互联带宽来复制数据。在现有的深度学习系统中,多个设备或GPU之间进行参数交换以及数据复制会同时进行。当参数交互与数据片的复制同时进行时,会导致两者之间出现抢占带宽。在带宽一定的情况下,这样大量的数据复制和参数交互会减缓数据通讯的整体速率,从而延缓使得多个GPU之类的协处理器阵列之间的参数交互的速率,从而拖慢协处理器阵列的整体数据处理速度。而在深度学习方面,参数的交互更为重要。因此,从推进整体任务处理进度方面考虑,参数交互的优先级比复制数据的优先级要高。然而现有的深度学习系统并不考虑参数交互相对于数据拷贝的优先性,更不会提出任何解决方案。因此,一方面,在片间互联带宽保持不变的情况下,如何提高设备间参数交互的速率成为深度学习领域一项急需解决的问题。另一方面,在提高设备间参数交互的速率的前提下,如何不影响数据的复制同时提高GPU这样的协处理器的数据处理速度也是本领域急需解决的问题。
发明内容
本公开的目的是解决至少上述问题之一,并提供至少后面将说明的优点。根据本公开的一个方面,提供了一种协处理器,包括执行体组件、具有至少两个输出数据缓存的第一执行体以及第二执行体,其中,所述执行体组件轮流地从所述第一执行体的至少两个输出数据缓存之一读取所需处理的数据,并执行预定的操作处理以获得操作结果数据,并在获得操作结果数据之后向第一执行体反馈消息,以便告知第一执行体将所述至少两个输出数据缓存之一置于空置状态;所述第二执行体在获得来自所述执行体组件的消息后将所述执行体组件的操作结果数据通过所述协处理器与外围设备之间的通信信道输出到外围设备,并在所述操作结果数据被输出后向所述执行组件反馈消息以及向第一执行体发送可以搬运数据的消息;以及所述第一执行体在获得来自第二执行体的可以搬运数据的消息后,在所述执行体组件在获得第二执行体反馈的消息后针对所述第一执行体的至少两个输出数据缓存中的另一个读取所需处理的数据并执行预定的操作处理获得另一个操作结果数据的同时,第一执行体经由所述协处理器与外围设备之间的通信信道将所需要处理的数据搬运到处于空置状态的所述至少两个输出数据缓存之一。
根据本公开的协处理器,其中所述至少两个输出数据缓存的数量为三个、四个或五个。
根据本公开的协处理器,其中所述被第一执行体所搬运的数据是其他协处理器的输出的结果数据。
根据本公开的协处理器,其中所述执行体组件包含至少一个执行体。
根据本公开的协处理器,其中每个执行体都在自身的有限状态机达到执行触发条件时执行规定操作。
根据本公开的另一个方面,提供了一种用于协处理器的数据处理加速方法,所述协处理器包括执行体组件、具有至少两个输出数据缓存的第一执行体以及第二执行体,所述方法包括:通过所述执行体组件从所述第一执行体的至少两个输出数据缓存中的第一输出数据缓存读取所需处理的第一数据,并执行预定的操作处理获得第一操作结果数据,并在获得第一操作结果数据之后向第一执行体反馈消息以及向第二执行体发送可以执行操作的消息;第一执行体在获得来自执行体组件的反馈消息后将存储第一数据的第一输出数据缓存置于空置状态;所述第二执行体在获得来自所述执行体组件的消息后将所述执行体组件的第一操作结果数据通过所述通信信道输出,并在所述第一操作结果数据被输出后向所述执行组件反馈消息以及向第一执行体发送可以搬运数据的消息;以及在获得来自第二执行体的可以搬运数据的消息后,在所述执行体组件在获得第二执行体反馈的消息针对所述第一执行体的至少两个输出数据缓存中的第二个输出数据缓存读取所需处理的第二数据并执行预定的操作处理获得第二操作结果数据的同时,所述第一执行体经由所述协处理器与外围设备之间的通信信道将所需要处理的数据作为新的第一数据搬运到处于空置状态的所述至少两个输出数据缓存的第一输出数据缓存;所述执行体组件在获得第二操作结果数据之后向第一执行体反馈消息以及向第二执行体发送可以执行操作的消息;第一执行体在获得来自执行体组件的反馈消息后将存储第二数据的第二输出数据缓存置于空置状态;所述第二执行体在获得来自所述执行体组件的消息后将所述执行体组件的第二操作结果数据通过所述协处理器与外围设备之间的通信信道输出所述外围设备,并在所述第二操作结果数据被输出后向所述执行组件反馈消息以及向第一执行体发送可以搬运数据的消息;以及在获得来自第二执行体的可以搬运数据的消息后,在所述第一执行体经由所述协处理器与外围设备之间的通信信道将所需要处理数据作为新的第二数据搬运到处于空置状态的所述至少两个输出数据缓存的第二输出数据缓存的同时,开始重复以上步骤。
根据本公开的用于协处理器的数据处理加速方法,其中所述至少两个输出数据缓存的数量为三个、四个或五个。
根据本公开的用于协处理器的数据处理加速方法,其中所述被第一执行体所搬运的数据是其他协处理器的输出的结果数据。
根据本公开的用于协处理器的数据处理加速方法,其中所述执行体组件包含至少一个执行体。。
根据本公开的用于协处理器的数据处理加速方法,其中每个执行体都在自身的有限状态机达到执行触发条件时执行规定操作。
根据本公开的另一个方面,提供了一种协处理器,包括执行体组件、第一执行体以及第二执行体,其中,所述执行体组件从所述第一执行体的输出数据缓存读取所需处理的数据,并执行预定的操作处理获得操作结果数据,并在获得操作结果数据之后向第一执行体反馈消息,以便告知第一执行体将所述输出数据缓存置于空置状态;所述第二执行体在获得来自所述执行体组件的消息后将所述执行体组件的操作结果数据通过所述协处理器与外围设备之间的通信信道输出到外围设备,并在所述操作结果数据被输出后向所述执行组件反馈消息以及向第一执行体发送可以搬运数据的消息;以及所述第一执行体在获得来自第二执行体的可以搬运数据的消息后,第一执行体经由所述协处理器与外围设备之间的通信信道将所需要处理的数据搬运到处于空置状态的输出数据缓存。
根据本公开协处理器以及协处理器的数据处理加速方法通过为一个第一执行体配置两个或两个以上的输出数据缓存,并通过第二执行体执行交互完成后向第一执行体发出的消息来启动将待处理的数据搬运到各个输出数据缓存以及同时使得执行体组件执行数据操作,能够极大提高执行体组件的使用效率,使得执行体组件只需要等待一个数据输出或交互时间间隔而不需要等待处理数据的搬运,从而缩短了执行体组件的等待时间,提高了执行体组件对时间的利用效率,由此也提高了协处理器的效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
下面将参考附图通过实施例来详细介绍本公开,附图中:
图1所示的是根据本公开的协处理器的结构示意图;
图2所示的是根据本公开的协处理器中的执行体原理示意图;
图3所示的是根据本公开的协处理器进行数据处理的时序图;以及
图4所示的是根据本公开的协处理器中进行数据处理方法的流程图。
具体实施方式
下面结合实施例和附图对本公开做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,在下文中,两个可能位置之一可以被称为第一操作结果也可以被称为第二操作结果,类似地,两个可能位置的另一个可以被称为第二操作结果也可以被称为第一操作结果。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使本领域技术人员更好地理解本公开,下面结合附图和具体实施方式对本公开作进一步详细说明。
图1所示的是根据本公开的协处理器的结构示意图。如图1所示,协处理器100-1包括执行体组件110、第一执行体120以及第二执行体130。所述第一执行体120包括至少两个输出数据缓存121以及12。可选择地,根据实际应用需要,所述第一执行体120可以包括三个或三个以上的输出数据缓存。为了叙述方便,在本公开的说明书中,仅仅以两个输出数据缓存121以及12来进行描述。为了描述方便,下面的将输出数据缓存121称之为第一输出数据缓存,而输出数据缓存122可称之为第二输出数据缓存。可选择地,也可以将输出数据缓存121称之为第二输出数据缓存,而输出数据缓存122可称之为第一输出数据缓存。第一输出数据缓存121以及第二输出数据缓存122用于存储需要处理的数据,这些需要处理的数据通过第一执行体120经由所述协处理器100-1与外围设备之间的通信信道PCIe从外部搬运来。
根据本公开的协处理器100-1通过设备间或片间互联带宽,例如PCIe或NvLink设备间或片间互联带宽,与其他同类的协处理器100-2、100-3…、100-N之间彼此连接并可以并行处理经由主机的CPU分配的计算任务。因此,协处理器100-1、100-2、100-3…、100-N在进行数据处理过程中,彼此之间存在大量的操作结果数据和/或参数交互,并且需要反复从外界经由诸如PCIe的片间互联带宽通信信道进行数据搬运操作。参数也是一种操作结果数据。因此,协处理器100在进行数据处理过程中,一般包含三个阶段,即从外部拷贝(COPY)需要处理的数据的阶段、数据操作处理阶段(PROCESS)以及结果数据向外部输出或与外部进行参数交互的阶段(EXCHANGE)。这三个阶段通常所花费的时间分别为T1、T2以及T3
通常,操作时间在数据的处理过程中占用较大部分,而相对而言,数据的拷贝以及数据传输过程所花的时间与操作时间相比,非常短。因此,为了提高数据的处理速度,人们更多是采取提升操作单元执行操作的速度,例如运算速度,从而降低操作时间,由此降低数据处理的总体时间。随着执行体组件的运算性能的大幅度提升,数据操作处理所花的时间相对于数据处理过程中所花的时间越来越短,基本已经达到与数据搬运或数据通讯所花的时间相当的程度。因此,要通过进一步提升运算速度来缩短数据处理的时间已经非常困难。举例而言,在上述所提到的拷贝时间T1、操作时间T2以及结果数据处理时间或参数交互时间T3中,在协处理器100中的一轮数据处理过程的总时间T一般等于T1+T2+T3。尽管此处将拷贝时间T1与参数交互时间T3分开描述,但是在常规深度学习系统中,于T1+T3实际上是一个整体。换而言之,在常规深度学习技术领域,由于复制数据和参数交互同时进行,因此同时占用片间互联带宽,导致在带宽一定的情况下,总花费的时间基本上不会短于该带宽在单独处理复制数据和参数交互所花时间的综合。举例而言,在带宽一定的情况下,单独处理数据复制所花时间可以为2毫秒,参数交互为5毫秒,但是在片间互联带宽不变的情况下,同时进行同样数据量的数据复制和同样数据量的参数交互,其总花费时间通常会等于或大于7毫秒。因此,此处将T1和T3分开描述是为了便于理解。
因此,当拷贝处理与结果数据的输出或交互同时进行时,可能由于两个操作同时占用带宽固定的通信信道PCIe,由于数据量更多,因此可能使得数据通信所花的总时间T13比T1+T3更长。由于运算速度的提升难度更高,为此本公开发明人试图缩短每轮操作所花费的数据搬运时间与数据输出或交互时间的总时间。
为此,本公开通过使得第一执行体120包含第一输出数据缓存121以及第二输出数据缓存122这种方式为每轮操作的总时间T的节省提供了可能。如图1所示,第一输出数据缓存121以及第二输出数据缓存122存储了需要处理的数据D。执行体组件110轮流地从所述第一输出数据缓存121以及第二输出数据缓存122读取所需处理的数据D,并执行预定的操作处理。具体而言,执行体组件110首先从所述第一输出数据缓存121读取其中所存储的所需处理的第一数据D1,并执行预定的第一轮操作处理,获得第一轮操作结果数据R1。此时所花费的时间为其中上角标标识操作轮次,下角标代表每轮操作中的阶段。如上所述,每轮操作分三个阶段,即第一阶段为拷贝时间T1,第二阶段为操作时间T2以及第三阶段为结果数据处理时间T3。所述执行体组件110在执行完针对第一数据D1的操作之后,会向第一执行体120反馈消息,告知第一执行体120执行体组件110对第一数据D1的使用已经使用完毕。第一执行体120在接收到反馈消息后,其有限状态机会修改其状态,并使得第一输出数据缓存121处于空置状态,从而为下一轮操作所需的数据准备存储空间(初始状态除外)。
所述第二执行体130将第一轮操作结果数据经由PCIe通信信道输出,以便与其他协处理器100或主机的CPU进行交互。所述第二执行体130所进行结果数据R1的输出或交互所花费的时间为T3,这一时间必须在操作时间T2之后进行,例如标记为其中,上角标代表数据处理的轮次,而下角标代表在一轮数据处理中的阶段。
在所述第二执行体130完成所述操作结果数据的输出之后,所述第二执行体130立即向所述执行体组件110反馈消息,所述执行体组件110基于所接收到的反馈消息可以立即进行下一轮操作。同时,所述第二执行体130立即向所述第一执行体120发送消息,以便第一执行体120的有限状态机触发执行数据搬运的触发条件从而使得第一执行体120在执行体组件110进行下一轮操作的同时经由通信信道PCIe将需要处理的数据搬运到处于空置状态的第一输出数据缓存121,从而为第二轮操作之后的操作(例如第三轮操作)准备数据。
具体而言,第二执行体130在第一轮的结果数据R1被执行完输出或交互之后立即向执行体组件110反馈可以执行第二轮操作的消息,执行体组件110在获得该反馈消息后由此从第二输出数据缓存122中读取所需要处理的数据D2并执行第二轮操作。此时,执行体组件110执行第二轮操作所花费的时间为与此同时,第二执行体130也向第一执行体120发出可以搬运数据的消息,该消息告知第一执行体120可以立即执行数据搬运的操作。第一执行体120在从第二执行体130获得可搬运数据的消息后,其有限状态机修改状态,从而触发第一执行体120执行数据搬运操作,由此经由通信信道PCIe将需要处理的数据D3搬运到被空置的第一输出数据缓存121中进行存储,以便为执行体组件110在执行第二轮操作之后的操作(例如第三轮操作)准备数据。
通过上面的描述可知,第一执行体120执行数据D3搬运所花的时间为T1 3。由此,在第二轮数据操作进行的同时,进行第三轮所需数据的拷贝,从而不需要在第三轮操作开始之前等待将所需数据的拷贝到空闲的存储空间中,从而为第三轮操作节省了拷贝时间T1 3,由此,将第三轮操作的实际数据处理时间T从常规的时间缩短为
同样,在第二轮操作结束后,也就是在执行体组件110对第二数据D2操作完成后,执行体组件110向第一执行体120反馈消息,告知第一执行体120已经完成对第二数据D2的使用。第一执行体120在获得该反馈消息后,修改其有限状态机的状态,并使得第二输出数据缓存122处于空置状态,以便为第四轮操作所需的数据准备存储空间。第二执行体130在获得第二操作结果数据R2之后,开始第二轮操作的结果数据交互过程。在结果数据的交互过程结束后,第二执行体130向执行体组件110发出反馈消息以及向第一执行体发出可搬运数据的消息,从而执行体组件110立即在时间段执行第三轮操作以及第一执行体120在时间段之内同时执行向第二输出数据缓存122搬运第四轮操作所需数据D4。搬运所花费的时间为T1 4
如上所述,尽管第三轮操作所需的数据搬运时间T1 3实际发生了,但是其与同时。因此,将第三轮操作的实际数据处理时间T从常规的时间缩短为以此类推,T1 4并行、T1 5并行…、T1 n+1并行。而且,通过这种方式,使得原始数据的搬运与结果数据或参数的交互分时进行,从而使得协处理器100在与外围设备(例如其他协处理器或CPU)进行数据通讯时,这种分时进行的实际执行时间明显要比同时进行数据搬运和数据交互所需的执行时间减少。具体而言,一方面,相对于现有技术而言,本公开不包含T1被消除掉(实际上在T2中并行存在),另一方面,根据本公开的T3也比现有技术中的T3要小很多。
图2所示的是根据本公开的协处理器中的执行体原理示意图。如图2所示,大虚线框代表一个执行体。在图2所示的执行体网络组件中,仅仅显示了五个执行体。实际上,对应于任务拓扑图,神经网络有多少节点,在执行体网络组件中就存在多少执行体。图2原理性显示了构成本公开的每个执行体的构成,其包含有消息仓、有限状态机、处理组件以及输出数据缓存。从图2中可以看出,每个执行体似乎都包含有一个输入数据缓存,但是采用了虚线标识。实际上这是一个想象的构成部件,这将在后面详细解释。处于数据处理路径中的每个执行体,例如图2中的第一执行体,基于一种任务拓扑图的神经网络中的一个节点建立,并且基于完全节点属性,形成该第一执行体与其上下游执行体的拓扑关系、消息仓、有限状态机以及处理方式(处理组件)以及生成数据的缓存位置(输出数据缓存)。具体而言,第一执行体在执行数据处理时,举例而言,其任务需要两个输入数据,即其上游的第二执行体和第四执行体的输出数据。当第二执行体生成将要输出到第一执行体的数据,例如生成第二数据时,第二执行体将向第一执行体发出数据准备好的消息到第一执行体的消息仓,告知第一执行体第二数据已经处于第二执行体的输出数据缓存中并且处于可获取的状态,从而第一执行体可以随时执行该第二数据的读取,此时第二数据将一直处于等待第一执行体读取状态。第一执行体的有限状态机在消息仓获得第二执行体的消息后修改其状态。同样,当第四执行体生成将要输出到第一执行体的数据,例如生成第四数据时,第四执行体将向第一执行体发出数据准备好的消息到第一执行体的消息仓,告知第一执行体第四数据已经处于第四执行体的输出数据缓存中并且处于可获取的状态,从而第一执行体可以随时执行该第四数据的读取,此时第四数据将一直处于等待第一执行体读取状态。第一执行体的有限状态机在消息仓获得第四执行体的消息后修改其状态。同样,如果第一执行体的处理组件在上一次执行完运算任务之后产生了数据,例如第一数据,并缓存在其输出数据缓冲中,并向第一执行体的下游执行体,例如第三执行体以及第五执行体发出可以读取第一数据的消息。
当第三执行体和第五执行体在读取第一数据并使用完成之后,会分别向第一执行体反馈消息,告知第一执行体使用完该第一数据,因此,第一执行体的输出数据缓存处于空置状态。此时第一执行体的有限状态机也会修改其状态。
这样,当有限状态机的状态变化达到预定的状态时,例如第一执行体的执行运算所需的输入数据(例如第二数据和第四数据)都处于可获取状态以及其输出数据缓存处于空置状态时,则告知处理组件读取第二执行体的输出数据缓存中的第二数据以及第四执行体的输出数据缓存中的第四数据,并执行指定的运算任务,从而生成该执行体的输出数据,例如新的第一数据,并存储在第一执行体的输出数据缓冲中。
同样,当第一执行体完成指定的运算任务之后,有限状态机回归到其初始状态,等待下一次状态改变循环,同时第一执行体向第二执行体反馈对第二数据使用完成的消息到第二执行体的消息仓以及向第四执行体反馈对第四数据使用完成的消息到第四执行体的消息仓,以及向其下游执行体,例如第三执行体以及第五执行体,发送已经生成第一数据的消息,告知第三执行体以及第五执行体,第一数据已经处于可以被读取的状态。
当第二执行体获得第一执行体使用完第二数据的消息后,使得第二执行体的输出数据缓存处于空置状态。同样,第四执行体获得第一执行体使用完第四数据的消息后,使得第四执行体的输出数据缓存处于空置状态。
第一执行体的上述执行任务的过程在其他执行体中同样发生。因此,在每个执行体中的有限状态机的控制下,基于上游执行体的输出结果,循环处理同类任务。从而每个执行体犹如一条数据处理路径上的固定任务的岗位人员,从而形成数据的流水线处理,不需要任何其他的外在指令。
如前所述,图2中每个执行体显示都包含有一个输入数据缓存,实际上是不包含的,因为,每个执行体并不需要任何缓存来存储将被使用的数据,而是仅仅获取所需使用的数据处于能够被读取的状态即可。因此,每个执行体所要使用的数据在执行体未处于具体执行的状态时,数据依然保存在其上游执行体的输出数据缓存中。因此,为了形象显示,每个执行体中的输入数据缓存采用虚线表示,其实际上并不真的存在于执行体中。或者说,上游执行体的输出数据缓存就是下游执行体的虚拟输入数据缓存。因此,在图2中,对输入数据缓存采用了虚线标识。
图3所示的是根据本公开的协处理器进行连续数据处理时的时序图。如
图3所示,在初始状态,一次性向第一输出数据缓存121和第二输出数据缓存122存储两个数据D1和D2。在开始执行操作后,在第一轮数据处理步骤L1,执行体组件110读取第一输出数据缓存121中的数据D1并执行第一轮操作,随后在第二执行体130将结果数据R1输出或与其他并行设备进行数据交换。紧接着,进行第二轮数据处理步骤L2,执行体组件110在第二执行体130发送来的反馈消息时读取第二输出数据缓存122中的数据D2并执行第二轮操作获得结果数据R2,同时第一执行体120在第二执行体130发送来可以搬运数据的消息时将外界数据D3搬运到第一输出数据缓存121以便用于第三轮数据处理步骤的处理。如此循环,在第n轮数据处理步骤Ln,执行体组件110在第二执行体130发送来的反馈消息时读取第一输出数据缓存121和第二输出数据缓存122之一中的数据D并执行第n轮操作获得结果数据R,同时第一执行体120在第二执行体130发送来可以搬运数据的消息时将外界数据Dn+1搬运到第一输出数据缓存121和第二输出数据缓存122之一中的处于空置状态的输出数据缓存以便用于第三轮数据处理步骤的处理。
尽管上面根据图1-3描述了本公开的具体内容,但是从优先实现参数交互方面考虑,也可以提供一种替代方案,即第一执行体120可以仅仅具有一个输出数据缓存,例如第一输出数据缓存121。具体而言,执行体组件110从所述第一执行体120的输出数据缓存121读取所需处理的数据,并执行预定的操作处理获得操作结果数据,并在获得操作结果数据之后向第一执行体120反馈消息,以便告知第一执行体120将所述输出数据缓存121置于空置状态。第二执行体130在获得来自所述执行体组件110的消息后将所述执行体组件110的操作结果数据通过所述协处理器与外围设备之间的通信信道输出到外围设备,并在所述操作结果数据被输出后(或执行完参数交互后)向所述执行组件110反馈消息以及向第一执行体120发送可以搬运数据的消息.所述第一执行体120在获得来自第二执行体130的可以搬运数据的消息后,第一执行体120经由所述协处理器与外围设备之间的通信信道将所需要处理的数据搬运到处于空置状态的输出数据缓存121。这样,协处理器在深度学习系统中,优先处理参数交互,随后进行新数据的拷贝处理。
图4所示的是根据本公开的协处理器中进行数据处理方法的流程图。如图4所示,在步骤S410处,协处理器在初始状态,一次性由第一执行体120将需要处理的数据D(例如数据D1和D2)存储到第一输出数据缓存121和第二输出数据缓存122。可选择地,也可以先只在一个输出数据缓存中存储数据,而另一个输出数据缓存处于空置状态。随后,在步骤S415处,执行体组件110从第一输出数据缓存121和第二输出数据缓存122之一读取数据。在初始状态,第一输出数据缓存121和第二输出数据缓存122中的哪一个被先读取用于执行操作对本公开的技术方案的实现没有影响。为了表示方便,在此先对第一输出数据缓存121进行描述,即执行体组件110从第一输出数据缓存121读取数据,并执行第n轮数据操作,从而获得第n结果数据R。执行体组件110在完成步骤S415处获得结果数据R之后,一方面,会向第一执行体120反馈消息,使得第一执行体120在步骤S420处将第一输出数据缓存121置于控制状态,使得第一输出数据缓存121处于可被写入数据的状态,另一方面,执行体组件110会同时向第二执行体130发送可以进行数据交互的消息,告知第二执行体130可以在步骤S425处将第n结果数据R输出或与其外的CPU或并行的协处理器(例如GPU)进行数据交互。在步骤S425结束之后,第二执行体130一方面向执行体组件110发出反馈消息,以便告知执行体组件110可以进行下一轮数据处理,另一方面向第一执行体120发出可从外界搬运数据的消息。随后,在步骤S430处,执行体组件110在获得来自第二执行体130的反馈消息后,针对第二输出数据缓存122中的数据D执行第n+1轮操作处理并获得第n+1数据结果R。在进行第n+1轮操作处理的同时,第一执行体120在步骤S435处从外界将下一个要处理的数据D搬运到处于空置状态的第一输出数据缓存121,以备用于第n+2轮操作处理。
执行体组件110在完成步骤S430处获得结果数据R之后,一方面,会向第一执行体120反馈消息,使得第一执行体120在步骤S440处将第二输出数据缓存122置于控制状态,使得第二输出数据缓存122处于可被写入数据的状态,另一方面,执行体组件110会同时向第二执行体130发送可以进行数据交互的消息,告知第二执行体130可以在步骤S445处将第n+1结果数据R输出或与其外的CPU或并行的协处理器(例如GPU)进行数据交互。
在步骤S445结束之后,第二执行体130一方面向执行体组件110发出反馈消息,以便告知执行体组件110可以进行下一轮数据处理,另一方面向第一执行体120发出可从外界搬运数据的消息。随后,在步骤S450处,执行体组件110在获得来自第二执行体130的反馈消息后,针对第一输出数据缓存122中的数据D执行第n+2轮操作处理并获得第n+2数据结果R。在进行第n+2轮操作处理的同时,第一执行体120在步骤S455处从外界将下一个要处理的数据D搬运到处于空置状态的第二输出数据缓存122,以备用于第n+3轮操作处理。
随后,在步骤S460处,对计数器进行“n=n+2”的调整后,返回步骤S420重复执行步骤S422-S460。
尽管以上针对本公开的协处理器进行详细描述,但是需要指出的是,第二执行体可以不仅仅包含两个输出数据缓存121和12,而是可以包括三个或三个以上。例如,在执行体组件110需要在一轮操作中读取两个以上数据时,可以为第一执行体120设置四个输出数据缓存。这可以根据实际需要来设置。
尽管在本公开的描述中将执行体组件110与第二执行体130描述为两个独立的个体,但是可选择地,第二执行体130本身可以是执行体组件110的一部分,并且两者执行的操作处理过程与结果数据的输出和交互过程彼此先后一体执行。因此,尽管本公开为了描述方便将两者分开,并不意味着两者分离存在是实现本公开所必要的安排。
当根据本公开的协处理器,例如GPU用于大数据技术以及深度学习领域时,由于存在大量的数据搬运和数据交互,因此,在GPU与外部的通信带宽固定的情况下,如何减少交互的数据量来提升数据传输的速度就显得非常重要。而在大数据计算以及深度学习中采用根据本公开的协处理器,由于数据的拷贝和数据的交互分时进行,因此能够在固定带宽情形下减少数据的通信量,从而也就增加了数据通信的速度。同时,由于其中数据的拷贝是在上一轮操作进行的同时进行,因此,本公开充分利用了数据操作期间不存在数据交互导致带宽占用的情形,由此将下一轮数据的拷贝前移到上一轮的操作期间并占用带宽,从而实现了数据的拷贝和数据交互进行带宽占用分时处理。从而最终实现了本公开的目的。
更为重要的是。为了实现本公开的目的,设置了两个或两个以上的输出数据缓存,因此,结合上述控制过程,实现了数据的流式处理,极大地提高的数据处理的速度。
尽管在本公开中执行体组件110是一种组件,但是其可以仅仅包含一个执行体,也可以有多个执行体组成一个数据处理路径或一个数据处理网络。
至此,本说明书描述了根据本公开实施例的一种协处理器以及协处理器中加快数据处理速度的方法。根据本公开的协处理器以及协处理器中加快数据处理速度的方法通过为一个执行体组件配置两个或两个以上的输出数据缓存,并通过控制信号控制各个输出数据缓存的拷贝数据的时间段,能够极大提高执行体组件的使用效率,使得执行体组件只需要等待一个数据输出或交互时间间隔而不需要等待处理数据的拷贝,从而缩短了执行体组件的等待时间,提高了执行体组件对时间的利用效率,由此也提高了协处理器的效率。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,对本领域的普通技术人员而言,能够理解本公开的方法和装置的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本公开的说明的情况下运用他们的基本编程技能就能实现的。
因此,本公开的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。所述计算装置可以是公知的通用装置。因此,本公开的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本公开,并且存储有这样的程序产品的存储介质也构成本公开。显然,所述存储介质可以是任何公知的存储介质或者将来所开发出来的任何存储介质。
还需要指出的是,在本公开的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (10)

1.一种协处理器,包括执行体组件、具有至少两个输出数据缓存的第一执行体以及第二执行体,其中,
所述执行体组件轮流地从所述第一执行体的至少两个输出数据缓存之一读取所需处理的数据,并执行预定的操作处理以获得操作结果数据,并在获得操作结果数据之后向第一执行体反馈消息,以便告知第一执行体将所述至少两个输出数据缓存之一置于空置状态;
所述第二执行体在获得来自所述执行体组件的消息后将所述执行体组件的操作结果数据通过所述协处理器与外围设备之间的通信信道输出到外围设备,并在所述操作结果数据被输出后向所述执行组件反馈消息以及向第一执行体发送可以搬运数据的消息;以及
所述第一执行体在获得来自第二执行体的可以搬运数据的消息后,在所述执行体组件在获得第二执行体反馈的消息后针对所述第一执行体的至少两个输出数据缓存中的另一个读取所需处理的数据并执行预定的操作处理获得另一个操作结果数据的同时,第一执行体经由所述协处理器与外围设备之间的通信信道将所需要处理的数据搬运到处于空置状态的所述至少两个输出数据缓存之一。
2.如权利要求1所述的协处理器,其中所述至少两个输出数据缓存的数量为三个、四个或五个。
3.如权利要求1所述的协处理器,其中所述被第一执行体所搬运的数据是其他协处理器的输出的操作结果数据。
4.如权利要求1所述的协处理器,其中所述执行体组件包含至少一个执行体。
5.如权利要求1-4之一所述的协处理器,其中每个执行体都在自身的有限状态机达到执行触发条件时执行规定操作。
6.一种用于协处理器的数据处理加速方法,所述协处理器包括执行体组件、具有至少两个输出数据缓存的第一执行体以及第二执行体,所述方法包括:
通过所述执行体组件从所述第一执行体的至少两个输出数据缓存中的第一输出数据缓存读取所需处理的第一数据,并执行预定的操作处理获得第一操作结果数据,并在获得第一操作结果数据之后向第一执行体反馈消息以及向第二执行体发送可以执行操作的消息;
第一执行体在获得来自执行体组件的反馈消息后将存储第一数据的第一输出数据缓存置于空置状态;
所述第二执行体在获得来自所述执行体组件的消息后将所述执行体组件的第一操作结果数据通过所述协处理器与外围设备之间的通信信道输出到外围设备,并在所述第一操作结果数据被输出后向所述执行组件反馈消息以及向第一执行体发送可以搬运数据的消息;以及
在获得来自第二执行体的可以搬运数据的消息后,在所述执行体组件在获得第二执行体反馈的消息后针对所述第一执行体的至少两个输出数据缓存中的第二个输出数据缓存读取所需处理的第二数据并执行预定的操作处理获得第二操作结果数据的同时,所述第一执行体经由所述协处理器与外围设备之间的通信信道将所需要处理的数据作为新的第一数据搬运到处于空置状态的所述至少两个输出数据缓存的第一输出数据缓存;
所述执行体组件在获得第二操作结果数据之后向第一执行体反馈消息以及向第二执行体发送可以执行操作的消息;
第一执行体在获得来自执行体组件的反馈消息后将存储第二数据的第二输出数据缓存置于空置状态;
所述第二执行体在获得来自所述执行体组件的消息后将所述执行体组件的第二操作结果数据通过所述通信信道输出,并在所述第二操作结果数据被输出后向所述执行组件反馈消息以及向第一执行体发送可以搬运数据的消息;以及
在获得来自第二执行体的可以搬运数据的消息后,在所述第一执行体经由所述协处理器与外围设备之间的通信信道将所需要处理数据作为新的第二数据搬运到处于空置状态的所述至少两个输出数据缓存的第二输出数据缓存的同时,开始重复以上步骤。
7.如权利要求6所述的用于协处理器的数据处理加速方法,其中所述至少两个输出数据缓存的数量为三个、四个或五个。
8.如权利要求6所述的用于协处理器的数据处理加速方法,其中所述被第一执行体所搬运的数据是其他协处理器的输出的操作结果数据。
9.如权利要求6所述的用于协处理器的数据处理加速方法,其中所述执行体组件包含至少一个执行体。
10.如权利要求6-9之一所述的用于协处理器的数据处理加速方法,其中每个执行体都在自身的有限状态机达到执行触发条件时执行规定操作。
CN201910633024.3A 2019-07-15 2019-07-15 协处理器及其数据处理加速方法 Active CN110188067B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910633024.3A CN110188067B (zh) 2019-07-15 2019-07-15 协处理器及其数据处理加速方法
PCT/CN2020/093840 WO2021008257A1 (zh) 2019-07-15 2020-06-02 协处理器及其数据处理加速方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910633024.3A CN110188067B (zh) 2019-07-15 2019-07-15 协处理器及其数据处理加速方法

Publications (2)

Publication Number Publication Date
CN110188067A true CN110188067A (zh) 2019-08-30
CN110188067B CN110188067B (zh) 2023-04-25

Family

ID=67725699

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910633024.3A Active CN110188067B (zh) 2019-07-15 2019-07-15 协处理器及其数据处理加速方法

Country Status (2)

Country Link
CN (1) CN110188067B (zh)
WO (1) WO2021008257A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110955529A (zh) * 2020-02-13 2020-04-03 北京一流科技有限公司 内存资源静态部署系统及方法
WO2021008257A1 (zh) * 2019-07-15 2021-01-21 北京一流科技有限公司 协处理器及其数据处理加速方法
CN112785483A (zh) * 2019-11-07 2021-05-11 深南电路股份有限公司 一种数据处理加速的方法及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110029757A1 (en) * 2009-07-30 2011-02-03 Nec Electronics Corporation Stream processor and task management method thereof
CN102542525A (zh) * 2010-12-13 2012-07-04 联想(北京)有限公司 一种信息处理设备以及信息处理方法
CN107544937A (zh) * 2016-06-27 2018-01-05 深圳市中兴微电子技术有限公司 一种协处理器、数据写入方法和处理器

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8949664B2 (en) * 2011-11-18 2015-02-03 Nokia Corporation Method and apparatus for providing information consistency in distributed computing environments
US9690829B2 (en) * 2013-04-15 2017-06-27 Vmware, Inc. Dynamic load balancing during distributed query processing using query operator motion
CN107783721B (zh) * 2016-08-25 2020-09-08 华为技术有限公司 一种数据的处理方法和物理机
CN107908471B (zh) * 2017-09-26 2021-06-08 聚好看科技股份有限公司 一种任务并行处理方法和处理系统
CN108404415B (zh) * 2018-03-22 2021-07-23 网易(杭州)网络有限公司 数据的处理方法和装置
CN110188067B (zh) * 2019-07-15 2023-04-25 北京一流科技有限公司 协处理器及其数据处理加速方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110029757A1 (en) * 2009-07-30 2011-02-03 Nec Electronics Corporation Stream processor and task management method thereof
CN102542525A (zh) * 2010-12-13 2012-07-04 联想(北京)有限公司 一种信息处理设备以及信息处理方法
CN107544937A (zh) * 2016-06-27 2018-01-05 深圳市中兴微电子技术有限公司 一种协处理器、数据写入方法和处理器

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021008257A1 (zh) * 2019-07-15 2021-01-21 北京一流科技有限公司 协处理器及其数据处理加速方法
CN112785483A (zh) * 2019-11-07 2021-05-11 深南电路股份有限公司 一种数据处理加速的方法及设备
CN112785483B (zh) * 2019-11-07 2024-01-05 深南电路股份有限公司 一种数据处理加速的方法及设备
CN110955529A (zh) * 2020-02-13 2020-04-03 北京一流科技有限公司 内存资源静态部署系统及方法

Also Published As

Publication number Publication date
WO2021008257A1 (zh) 2021-01-21
CN110188067B (zh) 2023-04-25

Similar Documents

Publication Publication Date Title
CN110188067A (zh) 协处理器及其数据处理加速方法
CN110222005A (zh) 用于异构架构的数据处理系统及其方法
Attia et al. Cygraph: A reconfigurable architecture for parallel breadth-first search
CN105893126A (zh) 一种任务调度方法及装置
CN110347636B (zh) 数据执行体及其数据处理方法
US20080022288A1 (en) Signal Processing Appatatus
CN110457123A (zh) 一种区块处理任务的控制方法和装置
CN104731956A (zh) 同步数据的方法、系统及相关数据库
CN103999051A (zh) 用于着色器核心中着色器资源分配的策略
WO2021008258A1 (zh) 协处理器的数据处理路径中的数据流动加速构件及其方法
CN110262995A (zh) 执行体创建系统和执行体创建方法
CN105183698A (zh) 一种基于多核dsp的控制处理系统和方法
WO2020163315A1 (en) Systems and methods for artificial intelligence with a flexible hardware processing framework
CN102299843A (zh) 一种基于gpu和缓冲区的网络数据处理方法及系统
CN110245108A (zh) 执行体创建系统和执行体创建方法
CN107085743A (zh) 一种基于国产众核处理器的深度学习算法实现方法与平台
CN110704438B (zh) 一种区块链中布隆过滤器的生成方法及装置
CN110704465B (zh) 一种处理业务工单表的方法、装置及存储介质
CN109213607A (zh) 一种多线程渲染的方法和装置
CN108681773A (zh) 数据运算的加速方法、装置、终端及可读存储介质
CN110347450B (zh) 多流并行控制系统及其方法
JP2013117790A (ja) 情報処理装置、情報処理方法、及びプログラム
CN107943592B (zh) 一种面向gpu集群环境的避免gpu资源争用的方法
WO2023108654A1 (zh) 一种任务调度方法、装置及系统
CN104346380B (zh) 基于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