CN109669772A - 计算图的并行执行方法和设备 - Google Patents
计算图的并行执行方法和设备 Download PDFInfo
- Publication number
- CN109669772A CN109669772A CN201811618988.2A CN201811618988A CN109669772A CN 109669772 A CN109669772 A CN 109669772A CN 201811618988 A CN201811618988 A CN 201811618988A CN 109669772 A CN109669772 A CN 109669772A
- Authority
- CN
- China
- Prior art keywords
- calculating
- parallel
- node
- executed
- operation node
- 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
Links
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
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- 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
Abstract
提供了一种计算图的并行执行方法和设备。所述方法包括:构建与计算任务对应的计算图,其中,计算图包括运算节点、数据节点以及连接运算节点与数据节点之间的边;根据计算任务来确定计算图的并行执行方式,其中,并行执行方式为以下方式之一或以下方式之中的至少两种方式的组合:运算节点内并行执行、运算节点间并行执行、计算图间并行执行;以及在多个线程中根据确定的并行执行方式来执行所述计算图,其中,运算节点内并行执行是指计算图中的至少一个单独运算节点通过不同的线程来并行执行;运算节点间并行执行是指计算图中的不同运算节点通过不同的线程来并行执行;计算图间并行执行是指计算图及其至少一个副本通过不同的线程来并行执行。
Description
技术领域
本发明涉及数据的并行处理领域,更具体地讲,涉及一种计算图的并行执行方法和设备。
背景技术
计算图是一种通用的计算过程表示方法,普遍应用在各类数据处理平台上,它的表示方法容易理解,且灵活性很高,可以通过组合简单的操作来实现复杂的逻辑。作为示例,计算图可应用于神经网络,神经网络是机器学习模型,其使用一个或多个模型层来为接收到的输入生成输出,例如一个或多个分类。一些神经网络除了输出层之外还包括一个或多个隐藏层。每个隐藏层的输出被用作网络中下一层(即网络的下一个隐藏层或输出层)的输入。网络的每一层根据该层的相应参数集的当前值从接收到的输入生成输出。
现有的计算图的定义包括节点和有向边。以神经网络的应用为例,每个计算图的节点表示神经网络所进行的相应运算,作为根据神经网络的输入来确定神经网络输出的运算,每个计算图的有向边将前一个节点连接至后一个节点,表示前节点的输出作为后节点的输入。
图2A和图2B是分别示出现有的执行计算图的并行时存在限制的情况的示意图。
计算图执行时,现有的计算图的执行具有两级并行度,一是节点间的并行度,二是节点内部的并行度。
节点间的并行度取决于计算图的节点间依赖情况,如果依赖比较多,则此并行度受限。参照图2A,图2A中示出的计算图存在两个节点共享输出(例如,共享输出位置)的情况,例如,在如图2A所示的节点共享输出的计算图中,节点A和节点B的输出都是节点C的输入,但是如果它们的输出是同一份数据,则会产生写冲突。因此,执行该计算图时节点A和节点B两个节点不能并行计算。故,图2A所示的计算图节点间完全无法并行,只能串行执行,此时节点间并行带来的线程通信开销反而会减慢整体执行速度。
节点内部并行则需要节点开始前和结束后对改节点的并行线程做一次同步操作,同步操作的开销随着该并行度增大而增大。因此节点内并行取决于计算图的节点本身的计算与同步操作的开销之间的关系,只有在节点本身的计算远大于同步操作的开销时才有优势。而对于比较轻的计算节点,节点内并行反而会变慢,因此节点内并行的并行度也会受限。例如,如图2B所示的计算图,该计算图有大量的轻量级节点,具体包括节点A、节点B……节点N,但所有节点的计算都依次依赖前一个节点,此种情况下,节点内并行和节点间并行这两级并行度都无法发挥作用。
综上所述,现有技术的计算图的并行执行所采用的节点间的并行度和节点内部的并行度均是受限的。
发明内容
本发明的目的在于提供一种计算图的并行执行方法的设备,以解决现有的计算图的并行执行存在限制的问题。
本发明的一方面提供了一种计算图的并行执行方法,其特征在于,包括:构建与计算任务对应的计算图,其中,所述计算图包括运算节点、数据节点以及连接运算节点与数据节点之间的边;根据计算任务来确定计算图的并行执行方式,其中,所述并行执行方式为以下方式之一或以下方式之中的至少两种方式的组合:运算节点内并行执行、运算节点间并行执行、计算图间并行执行;以及在多个线程中根据确定的并行执行方式来执行所述计算图,其中,运算节点内并行执行是指计算图中的至少一个单独运算节点通过不同的线程来并行执行;运算节点间并行执行是指计算图中的不同运算节点通过不同的线程来并行执行;计算图间并行执行是指计算图及其至少一个副本通过不同的线程来并行执行。
可选地,根据计算任务来确定计算图的并行执行方式的步骤可以包括:根据计算任务在运算节点内并行执行、运算节点间并行执行和/或计算图间并行执行方面的时间代价来确定计算图的并行执行方式。
可选地,可以根据计算任务的同步运算情况来确定时间代价。
可选地,根据计算任务的类型来确定计算图的并行执行方式的步骤包括:在所述计算任务涉及异步计算的情况下,将计算图间并行执行方式确定为所述计算图的并行执行方式;和/或,在所述计算任务涉及同步计算且计算图包括同步运算节点的情况下,将运算节点间并行执行和运算节点内并行执行的组合确定为所述计算图的并行执行方式;和/或,在所述计算任务涉及同步计算且计算图不包括同步运算节点的情况下,将运算节点间并行执行和计算图间并行执行的组合确定为所述计算图的并行执行方式。
可选地,所述异步计算可以是指异步训练神经网络;和/或,所述同步计算可以是指同步训练神经网络;和/或,所述同步运算节点可以是指批归一化节点。
可选地,在计算图中声明数据节点的操作数据的存储位置为所述操作数据在内存空间的相对索引,并且,在多个线程中根据确定的并行执行方式来执行所述计算图的步骤可以包括:为每个线程分配相应的内存空间,根据所述多个线程各自的内存空间的起始地址以及所述相对索引,来在所述多个线程中并行执行所述计算图。
可选地,根据所述多个线程各自的内存空间的起始地址以及所述相对索引,来在所述多个线程中并行执行所述计算图的步骤可以包括:利用每个线程根据对应的内存空间的起始地址以及所述相对索引来确定对应的计算图所包括的所述至少一个数据节点的操作数据的内存地址;利用所述多个线程根据各自确定的内存地址来执行各自的计算图。
本发明的另一方面提供了一种用于执行计算图的并行的设备,其特征在于,包括:计算图构建单元,构建与计算任务对应的计算图,其中,所述计算图包括运算节点、数据节点以及连接运算节点与数据节点之间的边;并行方式确定单元,根据计算任务来确定计算图的并行执行方式,其中,所述并行执行方式为以下方式之一或以下方式之中的至少两种方式的组合:运算节点内并行执行、运算节点间并行执行、计算图间并行执行;以及执行单元,在多个线程中根据确定的并行执行方式来执行所述计算图,其中,运算节点内并行执行是指计算图中的至少一个单独运算节点通过不同的线程来并行执行;运算节点间并行执行是指计算图中的不同运算节点通过不同的线程来并行执行;计算图间并行执行是指计算图及其至少一个副本通过不同的线程来并行执行。
可选地,并行方式确定单元可以根据计算任务在运算节点内并行执行、运算节点间并行执行和/或计算图间并行执行方面的时间代价来确定计算图的并行执行方式。
可选地,并行方式确定单元可以根据计算任务的同步运算情况来确定时间代价。
可选地,所述并行方式确定单元可以在所述计算任务涉及异步计算的情况下,将计算图间并行执行方式确定为所述计算图的并行执行方式;和/或可以在所述计算任务涉及同步计算且计算图包括同步运算节点的情况下,将运算节点间并行执行和运算节点内并行执行的组合确定为所述计算图的并行执行方式;和/或可以在所述计算任务涉及同步计算且计算图不包括同步运算节点的情况下,将运算节点间并行执行和计算图间并行执行的组合确定为所述计算图的并行执行方式。
可选地,所述异步计算可以是指异步训练神经网络;和/或,所述同步计算可以是指同步训练神经网络;和/或,所述同步运算节点可以是指批归一化节点。
可选地,所述计算图构建单元在计算图中声明数据节点的操作数据的存储位置为所述操作数据在内存空间的相对索引,并为每个线程分配相应的内存空间;并且,所述执行单元根据所述多个线程各自的内存空间的起始地址以及所述相对索引,来在所述多个线程中并行执行所述计算图。
可选地,所述执行单元可以利用每个线程根据对应的内存空间的起始地址以及所述相对索引来确定对应的计算图所包括的所述至少一个数据节点的操作数据的内存地址;以及利用所述多个线程根据各自确定的内存地址来执行各自的计算图。
本发明的另一方面提供了一种包括至少一个计算装置和至少一个存储指令的存储装置的系统,其中,所述指令在被所述至少一个计算装置运行时,促使所述至少一个计算装置执行如上所述的计算图的并行执行方法。
本发明的另一方面提供了一种存储指令的计算机可读存储介质,其中,当所述指令被至少一个计算装置运行时,促使所述至少一个计算装置执行如上所述的计算图的并行执行方法。
根据本发明的一个或多个方面,计算图的并行执行方法中使用的计算图通过增加数据节点,解决共享输出不能并行执行的问题;通过多个线程执行计算图,使得在原有的节点间平行和节点内并行的基础上增加了计算图之间并行度;并且进一步地,还可考虑根据计算任务来确定计算图的并行方式,从而降低计算图整体的开销(例如,计算资源和/或时间代价)。
将在接下来的描述中部分阐述本发明另外的方面和/或优点,还有一部分通过描述将是清楚的,或者可以经过本发明的实施而得知。
附图说明
通过下面结合附图进行的详细描述,本发明的上述和其它目的、特点和优点将会变得更加清楚,其中:
图1是示出根据本发明的实施例的用于执行计算图的并行的设备的框图;
图2A和图2B是分别示出现有的执行计算图的并行时存在限制的情况的示意图;
图3是示出本发明的实施例的计算图的并行执行方法的流程图;
图4是示出本发明的实施例的包括数据节点的计算图的示意图;
图5是示出本发明的实施例的包括数据节点和线程副本的计算图的示意图;
图6、图7和图8是示出本发明的计算图与内存空间的关系图;
图9是示出根据本发明的实施例的执行计算图间并行的方法的流程图;
图10是示出根据本发明的实施例的根据多个第一线程各自的内存空间的起始地址以及相对索引来执行计算图所包括的至少一个操作的步骤的流程图。
具体实施方式
下面参照附图详细描述本发明的实施例。
图1是示出根据本发明的实施例的用于执行计算图的并行的设备的框图。如图1所示,根据本发明的实施例的用于执行计算图的并行的设备包括计算图构建单元100、并行方式确定单元200、执行单元300。
具体说来,计算图构建单元100构建与计算任务对应的计算图,其中,所述计算图包括运算节点、数据节点以及连接运算节点与数据节点之间的边。
作为示例,该计算图包括的至少一个操作也可以称为运算操作。作为示例,该至少一个操作涉及机器学习算法中的至少一个运算操作。相应的操作数据可包括操作的输入数据和输出数据。
在计算图被声明时,计算图的操作数据的内存空间由相对索引来表示,而不是由直接索引(即实际索引)来表示。即,在计算图中声明数据节点的操作数据的存储位置为所述操作数据在内存空间的相对索引。
在计算机领域,作为示例,内存空间的实际索引可以由8个字节的数据来表示,而根据本发明的实施例的计算图的各个操作数据的内存空间由相对索引来表示,相对索引的最大值可设置为计算图所包括的至少一个操作的操作数据的总数量(即操作数据的个数),通常这个总数量较小,可由4或2个字节的数据来表示,从而可减小计算图所占用的内存大小。
此外,计算图构建单元100还用于为每个线程分配相应的内存空间。
作为示例,在计算图的操作数据的内存统一由内存管理模块托管的情况下,计算图构建单元100可利用内存管理模块为每个线程分配相应的内存空间。
作为示例,计算图构建单元100可根据计算图所包括的至少一个操作的操作数据的总数量(即操作数据的个数)来为每个线程分配相应的内存空间。计算图构建单元100用于为每个线程复制计算图。计算图构建单元100创建多个线程的步骤将在后面参照图6至图10进行详细描述。
并行方式确定单元200根据计算任务来确定计算图的并行执行方式,其中,所述并行执行方式为以下方式之一或以下方式之中的至少两种方式的组合:运算节点内并行执行、运算节点间并行执行、计算图间并行执行。
具体地,其中,运算节点内并行执行可以是指计算图中的至少一个单独运算节点通过不同的线程来并行执行;运算节点间并行执行可以是指计算图中的不同运算节点通过不同的线程来并行执行;计算图间并行执行可以是指计算图及其至少一个副本通过不同的线程来并行执行。
执行单元300在多个线程中根据确定的并行执行方式来执行所述计算图。作为示例,在计算图构建单元100为每个线程分配相应的内存空间的情况下,执行单元300根据所述多个线程各自的内存空间的起始地址以及所述相对索引,来在所述多个线程中并行执行所述计算图。
图3是示出本发明的实施例的计算图的并行执行方法的流程图。
在步骤S1,由计算图构建单元100构建与计算任务对应的计算图,其中,所述计算图包括运算节点、数据节点以及连接运算节点与数据节点之间的边。
在步骤S2,由并行方式确定单元200根据计算任务来确定计算图的并行执行方式,其中,所述并行执行方式为以下方式之一或以下方式之中的至少两种方式的组合:运算节点内并行执行、运算节点间并行执行、计算图间并行执行。
在步骤S3,由执行单元300在多个线程中根据确定的并行执行方式来执行所述计算图。
其中,运算节点内并行执行是指计算图中的至少一个单独运算节点通过不同的线程来并行执行;运算节点间并行执行是指计算图中的不同运算节点通过不同的线程来并行执行;计算图间并行执行是指计算图及其至少一个副本通过不同的线程来并行执行。
图4是示出本发明的实施例的包括数据节点的计算图的示意图。
参照图4,计算节点(由“矩形”表示)表示神经网络进行的运算,数据节点(由“圆形”表示)表示神经网络输入和产出的数据,有向边(由“箭头”表示)只在计算节点和数据节点之间连接,表示某个数据是对应计算的输入或输出。
由于数据也作为计算图的节点,如图4所示,我们可以明确的知道节点A和节点B的输出是指向相同的数据(如图4(a)中示出的数据D1),还是执行不同的数据(如图4(b)中示出的数据D1和数据D2)。从而根据不同情况,采取不同的策略,如果指向不同的数据(如图4(b)所示),则节点A和节点B之间依然可以并行,否则,不能并行。
图5是示出本发明的实施例的包括数据节点和线程副本的计算图的示意图。
计算图的线程副本表示将原始计算图的结构拷贝多份,分别提交给另外的线程去执行,每一份则称为计算图线程副本。如图5中所示,计算图包括副本G1、副本G2和副本G3。不同的线程副本之间可以独立并行运行。可以在定义好计算图之后,由计算图构建单元100创建若干个线程副本,计算图执行的步骤是:先将输入数据切分成若干个块,再以每一块分别提交给对应的线程副本(例如,副本G1、副本G2和副本G3),每个线程执行完所有的节点之后,再进行一次线程同步。每个副本中仍然可以根据计算任务进行节点间并行和节点内并行执行。计算图与内存空间的关系以及多线程执行计算图间并行的方法与步骤将参照图6至图10进行详细描述。
相比较原有的两种并行度而言,计算图间并行(即,计算图线程副本并行)本身不需要每个节点进行线程同步,也不受限于节点间的依赖关系。如图2B的所示的极端情况下,则几乎无法实现运算节点内并行和运算节点间并行。相对的,改进成参照图5所示的计算图后,执行单元300可以利用计算图的线程副本来执行计算图间并行,从而提高并行度。
此外,由于增加1级并行度,即,增加了计算图间并行,意味着用户需要配置更多的参数。如何配置运算节点内并行、运算节点间和计算图间并行这3个并行度的比例,对用户是个挑战。因此,作为优选方式,本发明还提出了根据不同计算任务,选用不同的执行器,自动配置并行策略。不同的执行器对于这3个并行度的配置不同(例如,打开/关闭对应并行级别)。
这里,可根据计算任务在运算节点内并行执行、运算节点间并行执行和/或计算图间并行执行方面的时间代价来确定计算图的并行执行方式。也就是说,通过衡量具体计算任务中的各种并行方式所对应的时间代价来确定并行执行方式(也可称为并行策略)。例如,可根据计算任务的同步运算情况来确定时间代价。通过考虑计算任务中涉及到的同步运算来确定时间代价。
以下描述示例性同步计算和异步计算情况下的并行策略的确定方法,然而应理解,本发明的示例性实施例不限于此:
1、在所述计算任务涉及异步计算的情况下,将计算图间并行执行方式确定为所述计算图的并行执行方式。作为示例,当所述异步计算为异步训练神经网络时,只需要线程副本并行即可,将计算图间并行执行方式确定为所述计算图的并行执行方式;
2、在所述计算任务涉及同步计算且计算图包括同步运算节点的情况下,将运算节点间并行执行和运算节点内并行执行的组合确定为所述计算图的并行执行方式。作为示例,当所述同步计算是指同步训练神经网络;和/或,所述同步运算节点是指批归一化(Batch Normalization)节点时,此类计算节点需要对所有线程副本进行同步操作,因而线程副本越多开销(例如,计算资源和/或时间代价)越大,此时可以关闭计算图间并行,将运算节点间并行执行和运算节点内并行执行的组合确定为所述计算图的并行执行方式;
3、在所述计算任务涉及同步计算且计算图不包括同步运算节点的情况下,将运算节点间并行执行和计算图间并行执行的组合确定为所述计算图的并行执行方式。作为示例,当所述同步计算是指同步训练神经网络时,如果计算图中不存在同步计算节点,此时应该关闭节点内并行,避免节点内并行带来的线程同步开销,并因此将运算节点间并行执行和计算图间并行执行的组合确定为所述计算图的并行执行方式。
以下将结合图6至图8描述现有技术中的计算图与内存空间的关系与本发明的区别。
图6是示出现有的计算图与内存空间的关系图。图7和图8是示出本发明的计算图与内存空间的关系图。在图6至图8中,上半部分表示内存空间的实际索引,下半部分表示计算图,其中,方框代表操作,圆圈代表操作数据在内存空间的实际索引或相对索引。
如图6所示,假设总的内存空间共有四块待操作的内存段,其实际索引为0到3,操作A的输出数据写到实际索引为1的内存空间中,操作B的输入从实际索引为1的内存空间中读取。当复制计算图以实现多线程并行执行时,复制的计算图的操作A的输出数据和操作B的输入数据仍指向实际索引为1的内存空间,因此,为了针对复制的计算图重新分配使用的内存空间,将不得不找到原有的对应关系,这个操作难实现且复杂度高。
如图7和图8所示,本发明的实施例在计算图中声明有计算图的操作A的输出数据和操作B的输入数据在内存空间的相对索引为1,计算图构建单元100在创建第一线程0和第一线程1时,为第一线程0和第二线程1分别分配实际索引为0至1的内存空间和实际索引为2至3的内存空间。在执行针对第一线程0复制的计算图时,便会将操作A的输出数据和操作B的输入数据的内存空间确定为实际索引为0的内存空间;在执行针对第一线程1复制的计算图时,便会将操作A的输出数据和操作B的输入数据的内存空间确定为实际索引为3的内存空间,从而将第一线程0和第一线程1的计算图所处理的数据的内存空间分开,避免执行错误。
返回图1,作为示例,执行单元300可利用每个第一线程根据对应的内存空间的起始地址以及相对索引来确定对应的计算图所包括的至少一个操作的操作数据的内存地址;以及利用多个第一线程根据各自确定的内存地址来执行各自的计算图所包括的至少一个操作。即,在该示例中,由第一线程本身来执行各个计算图的操作。
在另一个实施例中,由于并行处理存在效率问题,例如,在一些情景当中,数据并行处理的方式会受到限制,比如每处理一部分数据,各个线程之间需要同步结果(作为示例,该同步处理在机器学习模型的训练过程中很常见),这时如果并行度较高,会导致每个线程所得的数据总量较小,线程的等待以及数据拷贝等额外开销占比变大,使得效率反而下降。为此,可设置专门的工作线程来获取待处理的操作并进行相应的处理,其中,所述待处理的操作附带着所需处理数据的内存位置信息,具体说来,可将与操作相关的所有信息都打包成一个操作包,这样,通过由工作线程来执行各个操作包的操作,便不会带来数据的访问冲突。也就是说,可以创建多个用于执行操作的第二线程(即,工作线程)。原持有计算图的第一线程负责打包,将操作包传递给第二线程,第二线程再根据操作包内的全部信息去执行操作。这样做的好处是使计算图的并行度与实际计算的并行度分隔开。一般来说,对于一个神经网络对应的计算图,计算图包括多个没有相互依赖关系、可以同时执行的操作,所以第一线程的数量可以少于第二线程的数量,甚至第二线程的数量可以是第一线程的数量的几倍,这样既可以减小额外开销,又可以增加计算的并行度。
具体说来,第一线程用于打包操作包,计算图构建单元100还创建多个第二线程,第二线程用于执行计算图中的操作。
在该实施例中,执行单元300利用每个第一线程根据对应的内存空间的起始地址以及相对索引来生成对应的计算图所包括的至少一个操作的操作包;以及利用多个第二线程来执行由多个第一线程创建的操作包。
操作包中具有对应内存空间的起始地址、对应操作的处理过程和对应操作的操作数据在内存空间的相对索引。相应地,在操作包中的操作被执行时,通过操作包中的上述信息来确定操作所涉及的数据的内存地址。
或者,操作信息包中具有对应操作的处理过程以及基于对应内存空间的起始地址和对应操作的操作数据在内存空间的相对索引生成的对应操作的内存地址。在这种情况下,执行单元300利用第一线程基于对应内存空间的起始地址和对应操作的操作数据在内存空间的相对索引来生成对应操作的内存地址。相应地,在操作包中的操作被执行时,可直接利用操作包中所包括的所述操作所涉及的数据的内存地址。
作为示例,执行单元300利用每个第一线程根据对应的内存空间的起始地址以及相对索引来生成对应的计算图所包括的至少一个操作之中接下来将被执行的操作的操作包;利用多个第一线程将各自生成的操作包放入缓冲队列;利用多个第二线程中从缓冲队列获取操作包来执行,并在操作包执行完成之后继续从缓冲队列获取新的操作包;以及利用多个第二线程将操作包的执行完成情况告知对应的第一线程,使得对应的第一线程确定对应的计算图所包括的至少一个操作之中接下来将被执行的操作。也就是说,当某个操作被执行完毕后,其后续的操作才会被打包传递给缓冲队列以供第二线程来获取,因此,第二工作线程获取的操作包都是可以直接执行的操作包,而不需要等待上游依赖操作的执行。
图9是示出根据本发明的实施例的执行计算图间并行的方法的流程图。这里,作为示例,所述方法可通过计算机程序来执行,也可由专门的用于执行机器学习、大数据计算、或数据分析的硬件设备或软硬件资源的集合体来执行,例如,可由用于实现机器学习相关业务的机器学习平台来执行所述方法。
参照图9,在步骤S10,获取包括至少一个操作的计算图。在该计算图中声明有该至少一个操作的操作数据在内存空间的相对索引。
作为示例,该计算图包括的至少一个操作也可以称为运算操作。作为示例,该至少一个操作涉及机器学习算法中的至少一个运算操作。操作的操作数据可包括操作的输入数据和输出数据。
在计算图被声明时,计算图的操作数据的内存空间由相对索引来表示,而不是由直接索引(即实际索引)来表示。在计算机领域,作为示例,内存空间的实际索引可以由8个字节的数据来表示,而根据本发明的实施例的计算图的各个操作数据的内存空间由相对索引来表示,相对索引的最大值可设置为计算图所包括的至少一个操作的操作数据的总数量(即操作数据的个数),通常这个总数量较小,可由4或2个字节的数据来表示,从而可减小计算图所占用的内存大小。
在步骤S20创建多个第一线程,并为每个第一线程分配相应的内存空间。
作为示例,在计算图的操作数据的内存统一由内存管理模块托管的情况下,可利用内存管理模块为每个第一线程分配相应的内存空间。
作为示例,可根据计算图所包括的至少一个操作的操作数据的总数量(即操作数据的个数)来为每个第一线程分配相应的内存空间。
在步骤S30为每个第一线程复制计算图。
在步骤S40根据多个第一线程各自的内存空间的起始地址以及相对索引来执行计算图所包括的至少一个操作。也就是说,根据每个第一线程的内存空间的起始地址以及其所对应的计算图所包括的至少一个操作的操作数据的相对索引来执行所述计算图所包括的至少一个操作。
作为示例,在步骤S40,可根据每个第一线程的内存空间的起始地址以及计算图所包括的每个操作的操作数据的相对索引来确定所述每个操作的内存空间,以及根据计算图所包括的每个操作的内存空间来执行计算图所包括的每个操作。
现有技术中的计算图与内存空间的关系与本发明的区别如上文所述,在此不再赘述。
作为示例,在步骤S40,可利用每个第一线程根据对应的内存空间的起始地址以及相对索引来确定对应的计算图所包括的至少一个操作的操作数据的内存地址;以及利用多个第一线程根据各自确定的内存地址来执行各自的计算图所包括的至少一个操作。即,在该示例中,由第一线程本身来执行各个计算图的操作。
作为另一示例,根据本发明的实施例的执行计算图间并行的方法还包括以下步骤:创建多个第二线程,在该实施例中,在步骤S40,利用每个第一线程根据对应的内存空间的起始地址以及相对索引来生成对应的计算图所包括的至少一个操作的操作包;以及利用多个第二线程来执行由多个第一线程创建的操作包。
操作包中具有对应内存空间的起始地址、对应操作的处理过程和对应操作的操作数据在内存空间的相对索引。
或者,操作信息包中具有对应操作的处理过程以及基于对应内存空间的起始地址和对应操作的操作数据在内存空间的相对索引生成的对应操作的内存地址。在这种情况下,在步骤S40,利用第一线程基于对应内存空间的起始地址和对应操作的操作数据在内存空间的相对索引来生成对应操作的内存地址。
以下将参照图10来描述图9中的步骤S40的流程图的示例。
在步骤S401,利用每个第一线程根据对应的内存空间的起始地址以及相对索引来生成对应的计算图所包括的至少一个操作之中接下来将被执行的操作的操作包。
在步骤S402,利用多个第一线程将各自生成的操作包放入缓冲队列。
在步骤S403,利用多个第二线程中从缓冲队列获取操作包来执行,并在操作包执行完成之后继续从缓冲队列获取新的操作包。也就是说,当某个操作被执行完毕后,其后续的操作才会被打包传递给缓冲队列以供第二线程来获取,因此,第二工作线程获取的操作包都是可以直接执行的操作包,而不需要等待上游依赖操作的执行。
在步骤S404,利用多个第二线程将操作包的执行完成情况告知对应的第一线程,使得对应的第一线程确定对应的计算图所包括的至少一个操作之中接下来将被执行的操作。
在根据本发明的实施例的计算图的并行执行方法和设备中,在计算图中声明有其所包括的操作的操作数据在内存空间的相对索引,从而可以直接在分布式环境下拷贝计算图,以达到数据并行加速的目的,同时这种相对索引的声明方式不涉及分布式逻辑,不需要用户考虑如何处理多线程逻辑,降低了用户的使用成本和开发难度。此外根据本发明的实施例的计算图的并行执行方法和设备可以支持处理流式数据,即便需要处理的数据量非常大,也可以同时兼顾开发成本与执行效率。以上已参照图1至图10描述了根据本发明的示例性实施例的计算图的并行执行方法和设备。然而,应理解的是:图1至图10中所使用的装置、系统、单元等可被分别配置为执行特定功能的软件、硬件、固件或上述项的任意组合。例如,这些系统、装置或单元等可对应于专用的集成电路,也可对应于纯粹的软件代码,还可对应于软件与硬件相结合的模块。此外,这些系统、装置或单元等所实现的一个或多个功能也可由物理实体设备(例如,处理器、客户端或服务器等)中的组件来统一执行。
此外,上述方法可通过记录在计算可读介质上的指令来实现,例如,根据本申请的示例性实施例,可提供一种存储指令的计算机可读存储介质,其中,当所述指令被至少一个计算装置运行时,促使所述至少一个计算装置执行以下步骤:获取包括至少一个操作的计算图,其中,在计算图中声明有所述至少一个操作的操作数据在内存空间的相对索引;创建多个第一线程,并为每个第一线程分配相应的内存空间;为每个第一线程复制所述计算图;根据所述多个第一线程各自的内存空间的起始地址以及所述相对索引来执行所述计算图所包括的所述至少一个操作。
上述计算机可读介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,应注意,所述计算机程序还可用于执行除了上述步骤以外的附加步骤或者在执行上述步骤时执行更为具体的处理,这些附加步骤和进一步处理的内容已经在参照图3和图10进行相关方法的描述过程中提及,因此这里为了避免重复将不再进行赘述。
应注意,根据本发明的示例性实施例的计算图的并行执行方法和设备可完全依赖计算机程序的运行来实现相应的功能,即,各个单元或装置在计算机程序的功能架构中与各步骤相应,使得整个装置或系统通过专门的软件包(例如,lib库)而被调用,以实现相应的功能。
另一方面,当图1至图10所提及的各个单元或装置以软件、固件、中间件或微代码实现时,用于执行相应操作的程序代码或者代码段可以存储在诸如存储介质的计算机可读介质中,使得处理器可通过读取并运行相应的程序代码或者代码段来执行相应的操作。
另一方面,根据本发明示例性实施例的计算图的并行执行设备所包括的各个装置也可以通过硬件、软件、固件、中间件、微代码或其任意组合来实现。当以软件、固件、中间件或微代码实现时,用于执行相应操作的程序代码或者代码段可以存储在诸如存储介质的计算机可读介质中,使得处理器可通过读取并运行相应的程序代码或者代码段来执行相应的操作。
例如,实现根据本发明的示例性实施例的计算图的并行执行设备可包括至少一个计算装置和至少一个存储指令的存储装置,其中,所述指令在被所述至少一个计算装置运行时,促使所述至少一个计算装置执行以下步骤:获取包括至少一个操作的计算图,其中,在计算图中声明有所述至少一个操作的操作数据在内存空间的相对索引;创建多个第一线程,并为每个第一线程分配相应的内存空间;为每个第一线程复制所述计算图;根据所述多个第一线程各自的内存空间的起始地址以及所述相对索引来执行所述计算图所包括的所述至少一个操作。
具体说来,上述设备可以部署在服务器中,也可以部署在分布式网络环境中的节点装置上。此外,所述设备还可包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。所述设备的所有组件可经由总线和/或网络而彼此连接。
这里,所述设备并非必须是单个装置,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。所述设备还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的便携式电子装置。
在所述设备中,用于执行根据本发明的示例性实施例的计算图的并行执行方法的计算装置可以是处理器,这样的处理器可包括中央处理器(CPU)、图形处理器(GPU)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限制,所述处理器还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。处理器可运行存储在存储装置之一中的指令或代码,其中,所述存储装置还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,所述网络接口装置可采用任何已知的传输协议。
存储装置可与处理器集成为一体,例如,将RAM或闪存布置在集成电路微处理器等之内。此外,存储装置可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储装置和处理器可在操作上进行耦合,或者可例如通过I/O端口、网络连接等互相通信,使得处理器能够读取存储在存储装置中的文件。
以上描述了本申请的各示例性实施例,应理解,上述描述仅是示例性的,并非穷尽性的,本申请不限于所披露的各示例性实施例。在不偏离本申请的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。因此,本申请的保护范围应该以权利要求的范围为准。
Claims (10)
1.一种计算图的并行执行方法,其特征在于,包括:
构建与计算任务对应的计算图,其中,所述计算图包括运算节点、数据节点以及连接运算节点与数据节点之间的边;
根据计算任务来确定计算图的并行执行方式,其中,所述并行执行方式为以下方式之一或以下方式之中的至少两种方式的组合:运算节点内并行执行、运算节点间并行执行、计算图间并行执行;以及
在多个线程中根据确定的并行执行方式来执行所述计算图,
其中,运算节点内并行执行是指计算图中的至少一个单独运算节点通过不同的线程来并行执行;运算节点间并行执行是指计算图中的不同运算节点通过不同的线程来并行执行;计算图间并行执行是指计算图及其至少一个副本通过不同的线程来并行执行。
2.根据权利要求1所述的并行执行方法,其中,所述根据计算任务来确定计算图的并行执行方式的步骤包括:
根据计算任务在运算节点内并行执行、运算节点间并行执行和/或计算图间并行执行方面的时间代价来确定计算图的并行执行方式。
3.根据权利要求2所述的并行执行方法,其中,根据计算任务的同步运算情况来确定时间代价。
4.根据权利要求2所述的并行执行方法,其中,所述根据计算任务的类型来确定计算图的并行执行方式的步骤包括:
在所述计算任务涉及异步计算的情况下,将计算图间并行执行方式确定为所述计算图的并行执行方式;
和/或,在所述计算任务涉及同步计算且计算图包括同步运算节点的情况下,将运算节点间并行执行和运算节点内并行执行的组合确定为所述计算图的并行执行方式;
和/或,在所述计算任务涉及同步计算且计算图不包括同步运算节点的情况下,将运算节点间并行执行和计算图间并行执行的组合确定为所述计算图的并行执行方式。
5.根据权利要求4所述的并行执行方法,其中,所述异步计算是指异步训练神经网络;和/或,所述同步计算是指同步训练神经网络;和/或,所述同步运算节点是指批归一化节点。
6.根据权利要求1所述的并行执行方法,其中,在计算图中声明数据节点的操作数据的存储位置为所述操作数据在内存空间的相对索引,
并且,在多个线程中根据确定的并行执行方式来执行所述计算图的步骤包括:为每个线程分配相应的内存空间,根据所述多个线程各自的内存空间的起始地址以及所述相对索引,来在所述多个线程中并行执行所述计算图。
7.根据权利要求6所述的并行执行方法,其中,根据所述多个线程各自的内存空间的起始地址以及所述相对索引,来在所述多个线程中并行执行所述计算图的步骤包括:
利用每个线程根据对应的内存空间的起始地址以及所述相对索引来确定对应的计算图所包括的所述至少一个数据节点的操作数据的内存地址;
利用所述多个线程根据各自确定的内存地址来执行各自的计算图。
8.一种计算图的并行执行设备,其特征在于,包括:
计算图构建单元,构建与计算任务对应的计算图,其中,所述计算图包括运算节点、数据节点以及连接运算节点与数据节点之间的边;
并行方式确定单元,根据计算任务来确定计算图的并行执行方式,其中,所述并行执行方式为以下方式之一或以下方式之中的至少两种方式的组合:运算节点内并行执行、运算节点间并行执行、计算图间并行执行;以及
执行单元,在多个线程中根据确定的并行执行方式来执行所述计算图,
其中,运算节点内并行执行是指计算图中的至少一个单独运算节点通过不同的线程来并行执行;运算节点间并行执行是指计算图中的不同运算节点通过不同的线程来并行执行;计算图间并行执行是指计算图及其至少一个副本通过不同的线程来并行执行。
9.一种包括至少一个计算装置和至少一个存储指令的存储装置的系统,其中,所述指令在被所述至少一个计算装置运行时,促使所述至少一个计算装置执行如权利要求1到7中的任一权利要求所述的计算图的并行执行方法。
10.一种存储指令的计算机可读存储介质,其中,当所述指令被至少一个计算装置运行时,促使所述至少一个计算装置执行如权利要求1到7中的任一权利要求所述的计算图的并行执行方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010305797.1A CN111522640A (zh) | 2018-12-28 | 2018-12-28 | 计算图的并行执行方法和设备 |
CN201811618988.2A CN109669772B (zh) | 2018-12-28 | 2018-12-28 | 计算图的并行执行方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811618988.2A CN109669772B (zh) | 2018-12-28 | 2018-12-28 | 计算图的并行执行方法和设备 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010305797.1A Division CN111522640A (zh) | 2018-12-28 | 2018-12-28 | 计算图的并行执行方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109669772A true CN109669772A (zh) | 2019-04-23 |
CN109669772B CN109669772B (zh) | 2020-03-31 |
Family
ID=66147317
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811618988.2A Active CN109669772B (zh) | 2018-12-28 | 2018-12-28 | 计算图的并行执行方法和设备 |
CN202010305797.1A Pending CN111522640A (zh) | 2018-12-28 | 2018-12-28 | 计算图的并行执行方法和设备 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010305797.1A Pending CN111522640A (zh) | 2018-12-28 | 2018-12-28 | 计算图的并行执行方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN109669772B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110908667A (zh) * | 2019-11-18 | 2020-03-24 | 北京迈格威科技有限公司 | 神经网络联合编译的方法、装置和电子设备 |
CN111475684A (zh) * | 2020-06-29 | 2020-07-31 | 北京一流科技有限公司 | 数据处理网络系统及其计算图生成方法 |
CN112084038A (zh) * | 2020-09-23 | 2020-12-15 | 安徽寒武纪信息科技有限公司 | 神经网络的内存分配方法及装置 |
CN111738432B (zh) * | 2020-08-10 | 2020-12-29 | 电子科技大学 | 一种支持自适应并行计算的神经网络处理电路 |
WO2021051958A1 (zh) * | 2019-09-18 | 2021-03-25 | 华为技术有限公司 | 一种模型运行方法和系统 |
EP3866008A1 (en) * | 2020-02-14 | 2021-08-18 | Beijing Baidu Netcom Science And Technology Co. Ltd. | Method for processing tasks in parallel, device and storage medium |
CN114237918A (zh) * | 2022-02-28 | 2022-03-25 | 之江实验室 | 一种面向神经网络模型计算的图执行方法和装置 |
US11632301B1 (en) | 2022-05-24 | 2023-04-18 | Cisco Technology, Inc. | Parallel execution of network services with overlapping device configuration |
CN116504281A (zh) * | 2022-01-18 | 2023-07-28 | 浙江力德仪器有限公司 | 计算单元、阵列及计算方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114091686B (zh) * | 2021-11-11 | 2022-10-14 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备和存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101515231A (zh) * | 2009-03-23 | 2009-08-26 | 浙江大学 | 基于数据流分析的单线程程序并行化的实现方法 |
CN102799960A (zh) * | 2012-06-18 | 2012-11-28 | 北京大学 | 面向数据模型的并行业务流程异常检测方法 |
CN103558592A (zh) * | 2013-10-08 | 2014-02-05 | 北京航空航天大学 | 一种基于mpi并行计算的星载sar回波数据模拟方法 |
US20140282180A1 (en) * | 2013-03-15 | 2014-09-18 | The Mathworks, Inc. | Reference nodes in a computational graph |
CN104063486A (zh) * | 2014-07-03 | 2014-09-24 | 四川中亚联邦科技有限公司 | 一种大数据分布式存储方法和系统 |
CN107273339A (zh) * | 2017-06-21 | 2017-10-20 | 郑州云海信息技术有限公司 | 一种任务处理方法及装置 |
CN108228654A (zh) * | 2016-12-21 | 2018-06-29 | 青岛祥智电子技术有限公司 | 一种大数据分布式存储方法和系统 |
CN108292241A (zh) * | 2015-10-28 | 2018-07-17 | 谷歌有限责任公司 | 处理计算图 |
CN108351805A (zh) * | 2015-10-28 | 2018-07-31 | 谷歌有限责任公司 | 计算图的基于流的加速器处理 |
-
2018
- 2018-12-28 CN CN201811618988.2A patent/CN109669772B/zh active Active
- 2018-12-28 CN CN202010305797.1A patent/CN111522640A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101515231A (zh) * | 2009-03-23 | 2009-08-26 | 浙江大学 | 基于数据流分析的单线程程序并行化的实现方法 |
CN102799960A (zh) * | 2012-06-18 | 2012-11-28 | 北京大学 | 面向数据模型的并行业务流程异常检测方法 |
US20140282180A1 (en) * | 2013-03-15 | 2014-09-18 | The Mathworks, Inc. | Reference nodes in a computational graph |
CN103558592A (zh) * | 2013-10-08 | 2014-02-05 | 北京航空航天大学 | 一种基于mpi并行计算的星载sar回波数据模拟方法 |
CN104063486A (zh) * | 2014-07-03 | 2014-09-24 | 四川中亚联邦科技有限公司 | 一种大数据分布式存储方法和系统 |
CN108292241A (zh) * | 2015-10-28 | 2018-07-17 | 谷歌有限责任公司 | 处理计算图 |
CN108351805A (zh) * | 2015-10-28 | 2018-07-31 | 谷歌有限责任公司 | 计算图的基于流的加速器处理 |
CN108228654A (zh) * | 2016-12-21 | 2018-06-29 | 青岛祥智电子技术有限公司 | 一种大数据分布式存储方法和系统 |
CN107273339A (zh) * | 2017-06-21 | 2017-10-20 | 郑州云海信息技术有限公司 | 一种任务处理方法及装置 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021051958A1 (zh) * | 2019-09-18 | 2021-03-25 | 华为技术有限公司 | 一种模型运行方法和系统 |
CN110908667A (zh) * | 2019-11-18 | 2020-03-24 | 北京迈格威科技有限公司 | 神经网络联合编译的方法、装置和电子设备 |
CN110908667B (zh) * | 2019-11-18 | 2021-11-16 | 北京迈格威科技有限公司 | 神经网络联合编译的方法、装置和电子设备 |
KR102482122B1 (ko) | 2020-02-14 | 2022-12-27 | 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. | 태스크 병렬 처리 구현 방법, 장치, 기기 및 매체 |
EP3866008A1 (en) * | 2020-02-14 | 2021-08-18 | Beijing Baidu Netcom Science And Technology Co. Ltd. | Method for processing tasks in parallel, device and storage medium |
KR20210103928A (ko) * | 2020-02-14 | 2021-08-24 | 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. | 태스크 병렬 처리 구현 방법, 장치, 기기 및 매체 |
JP2021128757A (ja) * | 2020-02-14 | 2021-09-02 | ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド | タスク並列処理の実現方法、装置、機器及び媒体 |
JP7094352B2 (ja) | 2020-02-14 | 2022-07-01 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド | タスク並列処理の実現方法、装置、機器及び媒体 |
US11954522B2 (en) | 2020-02-14 | 2024-04-09 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method for processing tasks in parallel, device and storage medium |
CN111475684B (zh) * | 2020-06-29 | 2020-09-22 | 北京一流科技有限公司 | 数据处理网络系统及其计算图生成方法 |
CN111475684A (zh) * | 2020-06-29 | 2020-07-31 | 北京一流科技有限公司 | 数据处理网络系统及其计算图生成方法 |
CN111738432B (zh) * | 2020-08-10 | 2020-12-29 | 电子科技大学 | 一种支持自适应并行计算的神经网络处理电路 |
CN112084038A (zh) * | 2020-09-23 | 2020-12-15 | 安徽寒武纪信息科技有限公司 | 神经网络的内存分配方法及装置 |
CN116504281A (zh) * | 2022-01-18 | 2023-07-28 | 浙江力德仪器有限公司 | 计算单元、阵列及计算方法 |
CN114237918A (zh) * | 2022-02-28 | 2022-03-25 | 之江实验室 | 一种面向神经网络模型计算的图执行方法和装置 |
US11941514B2 (en) | 2022-02-28 | 2024-03-26 | Zhejiang Lab | Method for execution of computational graph in neural network model and apparatus thereof |
US11848820B1 (en) | 2022-05-24 | 2023-12-19 | Cisco Technology, Inc. | Parallel execution of network services with overlapping device configuration |
US11632301B1 (en) | 2022-05-24 | 2023-04-18 | Cisco Technology, Inc. | Parallel execution of network services with overlapping device configuration |
Also Published As
Publication number | Publication date |
---|---|
CN111522640A (zh) | 2020-08-11 |
CN109669772B (zh) | 2020-03-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109669772A (zh) | 计算图的并行执行方法和设备 | |
US11301445B2 (en) | Compiling graph-based program specifications | |
US10896025B2 (en) | Specifying components in graph-based programs | |
US10599475B2 (en) | Controlling data processing tasks | |
EP3189417B1 (en) | Compiling graph-based program specifications for enabling a runtime system to determine an efficient execution | |
EP3189419B1 (en) | Managing invocation of tasks | |
EP3189420B1 (en) | Managing execution state of components in a graph-based program specification for controlling their associated tasks | |
US10817310B2 (en) | Executing graph-based program specifications |
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 |