CN107239334B - 处理不规则应用的方法及装置 - Google Patents
处理不规则应用的方法及装置 Download PDFInfo
- Publication number
- CN107239334B CN107239334B CN201710398325.3A CN201710398325A CN107239334B CN 107239334 B CN107239334 B CN 107239334B CN 201710398325 A CN201710398325 A CN 201710398325A CN 107239334 B CN107239334 B CN 107239334B
- Authority
- CN
- China
- Prior art keywords
- task
- generic
- rule
- index
- queue
- 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
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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明实施例公开处理不规则应用的方法及装置。该方法包括:确定不规则应用的M类任务,M为正整数;并行地执行M类任务,其中,所述M类任务中的每类任务中的各个任务分别具有索引;对于M类任务中的第x类任务中的第i个任务而言,i是正整数,x是小于或者等于M的正整数:当第i个任务被执行到约定点时,暂停第i个任务,并根据第i个任务的索引确定与第i个任务对应的规则,与第i个任务对应的规则用于表示第i个任务与M类任务中的其它任务的依赖关系;根据与第i个任务对应的规则,检查第i个任务的当前状态,以便引导第i个任务的继续执行。本发明实施例能够以细粒度流水并行化的方式高效地、正确地、自动地执行不规则应用。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及处理不规则应用的方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
为了提高应用的执行效率,当前对并行化技术的研究也越来越多。现有的基于C语言或OpenCL等的高层次综合(High-Level Synthesis,HLS)为了实现并行化处理,需要在编译期间提取应用的并行性。然而,这样的技术仅适用于执行规则应用,而在实现不规则应用(Irregular Application)(例如,图形分析和稀疏矩阵计算等)方面性能极差。
这是因为,不规则应用通常具有不佳的局域性或静态不可预测的控制流,这种应用中的任务依赖关系只能在运行期间给定输入数据后才能完全确定,这导致现有的高层次综合方案在实现不规则应用时过度串行化,执行效率非常低。
因此,目前想要实现不规则应用的并行化,仅能通过人工的方式来统筹不规则应用内的并行性,但是实现的复杂度非常大。那么,如何高效地执行不规则应用成为亟待解决的问题。
发明内容
为了高性能地执行不规则应用,本发明实施例提供如下解决方案:
在本发明实施例中,提供一种处理不规则应用的方法,该方法包括:
确定不规则应用的M类任务,M为正整数;
并行地执行所述M类任务,其中,所述M类任务中的每类任务中的各个任务分别具有索引,每个任务的索引用于表示该任务在不规则应用中出现的顺序;
对于所述M类任务中的第x类任务中的第i个任务而言,i是正整数,x是小于或者等于M的正整数:
当所述第i个任务被执行到约定点时,暂停所述第i个任务,并根据所述第i个任务的索引确定与所述第i个任务对应的规则,与所述第i个任务对应的规则用于表示所述第i个任务与所述M类任务中的其它任务的依赖关系;根据与所述第i个任务对应的规则,检查所述第i个任务的当前状态,以便引导所述第i个任务的继续执行。
在本发明实施例中,还提供一种处理不规则应用的装置,该装置包括:
任务确定模块,用于确定不规则应用的M类任务,M为正整数;
任务执行模块,用于并行地执行所述M类任务,其中,所述M类任务中的每类任务中的各个任务分别具有索引,每个任务的索引用于表示该任务在不规则应用中出现的顺序;
所述任务执行模块,还用于:对于所述M类任务中的第x类任务中的第i个任务而言,i是正整数,x是小于或者等于M的正整数:当所述第i个任务被执行到约定点时,暂停所述第i个任务,并根据所述第i个任务的索引确定与所述第i个任务对应的规则,与所述第i个任务对应的规则用于表示所述第i个任务与所述M类任务中的其它任务的依赖关系;根据与所述第i个任务对应的规则,检查所述第i个任务的当前状态,以便引导所述第i个任务的继续执行。
在本发明实施例中,还提供一种处理不规则应用的装置,该装置包括处理系统、存储器及存储在所述存储器上并可在所述处理系统上运行的计算机程序,所述处理系统与所述存储器相耦合,所述处理系统执行所述计算机程序时实现上述处理不规则应用的方法。
在本发明实施例中,还提供一种计算机可读存储介质,所述计算机可读存储介质存储有可执行上述处理不规则应用的方法的计算机程序。
在本发明实施例中,通过划分出不规则应用的M类任务,使这M类任务并行地执行,能够提高不规则应用的执行性能和效率;而在任务被执行到约定点时,依据其与其它任务的依赖关系来检查该任务的当前状态,根据该当前状态来引导该任务的继续执行,由此能够确保任务并行执行结果的正确性。因此,通过本发明实施例,能够以细粒度流水并行化的方式高效地并且正确地执行不规则应用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中处理不规则应用的方法的流程图;
图2为本发明实施例中不规则应用的示例代码片段图;
图3为本发明实施例中在FPGA上实现不规则应用的过程示意图;
图4(a)-图4(d)为本发明实施例中生成适用于FPGA实现的布尔数据流图的过程的示例图,其中,图4(a)示出了不规则应用的代码片段的例子,图4(b)示出了针对该代码片段的程序依赖关系图,图4(c)示出了依据图4(b)转换得到的数据流图,图4(d)示出了BDFG可以实现为FPGA的数据通路的例子;
图5为本发明实施例中可实现本发明实施例的系统的示例图;
图6为本发明实施例中数据通路模块与规则引擎模块之间的交互过程示例图,其中,(a)示出了在数据通路模块512中的示例流水线1,(b)示出了规则引擎模块513的结构示意图,(c)示出了作为一个例子的通用规则伪代码段;
图7为根据本发明一个实施例的处理不规则应用的装置的示意框图;
图8为根据本发明另一实施例的处理不规则应用的装置的示意框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
如前所述,由于不规则应用中的任务间依赖关系只有在运行期间给定输入数据后才能完全确定,因此基于C语言或者OpenCL等的高层次综合通常过度串行化地执行不规则应用,导致执行性能非常差。
本发明实施例提供了处理不规则应用的方案,能够有效地解决上述问题。下面将结合各个实施例来详细描述本发明实施例的方案。
图1为本发明实施例中处理不规则应用的方法的流程图,如图1所示,该方法可以包括:
步骤101、确定不规则应用的M类任务,M为正整数;
步骤102、并行地执行所述M类任务,其中,所述M类任务中的每类任务中的各个任务分别具有索引,每个任务的索引用于表示该任务在不规则应用中出现的顺序;
对于所述M类任务中的第x类任务的第i个任务而言,i是正整数,x是小于或者等于M的正整数:当所述第i个任务被执行到约定点时,暂停所述第i个任务,并根据所述第i个任务的索引确定与所述第i个任务对应的规则,与所述第i个任务对应的规则用于表示所述第i个任务与所述M类任务中的其它任务的依赖关系;根据与所述第i个任务对应的规则,检查所述第i个任务的当前状态,以便引导所述第i个任务的继续执行。
可见,在本发明实施例中,通过划分出不规则应用的M类任务,使这M类任务并行地执行,能够提高不规则应用的执行性能和效率;而在任务被执行到约定点时,依据其与其它任务的依赖关系来检查该任务的当前状态,根据该当前状态来引导该任务的继续执行,由此能够确保任务并行执行结果的正确性。因此,通过本发明实施例,能够以细粒度流水并行化的方式高效地、正确地、自动地执行不规则应用。
具体而言,在本发明实施例中,由于不规则应用可以被抽象(abstracted)为可并行的任务,而任务间的依赖关系可以被抽象为规则,这样在编译期间可以积极地假定任务之间的依赖关系不存在,能够确保任务并行执行,从而提高计算性能;然后在运行期间在约定点处依据规则来检查任务的状态,从而能够确保并行结果的正确性。因此,通过本发明实施例,能够以高层次模型来实现不规则应用的并行化处理,相比现有的人工统筹并行性的方式而言极大地降低了实现复杂度。
在本发明实施例中,确定不规则应用的M类任务可以有多种方式,本发明对此不作限定,相关的变化例均应落入本发明的保护范围,例如,考虑到不规则应用通常围绕着循环结构而建,可以将不规则应用中的M个循环识别为M类任务。可以理解的是,M个循环可以是并列的或者嵌套的。
例如,根据编译器的分类方法,可以将循环结构分为for-all和for-each循环。如本领域中所已知的,对于for-all循环而言,所有迭代能够并行执行。而对于for-each循环而言,后面的迭代可能需要从前面的迭代得到正确的值。因此,上述M类任务可以包括for-each任务和for-all任务。此外,每类任务可以包括至少一个任务,每个任务可以是该类任务对应的循环中的一个迭代。也就是说,循环中的每个迭代可以被抽象为一个任务。那么,可以理解的是,在一类任务执行的过程中,也就是一个循环执行的过程中,可以动态创建新任务。
为了便于说明,在本文中以t表示任务,Σ表示程序状态域(即存储器位置以及在所述位置上存储的值),T表示任务域。
任务t可以是一个从状态到状态和任务的部分函数,t:Σ→Σ×T。具有相同函数(即循环体)的任务可以被划分成一个任务集。那么,基于任务集中使用的循环结构,任务集可以被分为for-all任务集或for-each任务集。任务域T是所有任务集的组合。即,此处的任务域T是所有任务集的叉积或者笛卡尔积。此外,任务还可以分为活动任务和非活动任务。例如,如果一个任务准备好被执行,则认为这个任务是活动的。类似地,具有相同函数的所有活动任务可以形成一个活动的任务集。活动的任务集可以是任务集的一个子集。另外,对于每类任务(即每个循环)而言,可以使用非负整数表示其中的每个任务在激活序列中的顺序。例如,在for-each任务集中,任务tj(j为非负整数)可以表示第j个被激活的任务;在for-all任务集中,任务激活的顺序不影响执行顺序,所以所有任务可以均使用0或者其它数字来标识,从而使得这些任务可以具有相同的顺序。
在一个实施例中,可以为M类任务中的每类任务中的各个任务分别分配索引,其中每个任务的索引可以用于表示该任务在不规则应用中出现的顺序。可以理解的是,由于可以在每类任务的执行期间(例如,一个循环的运行期间)动态地创建其中的各个任务,所以各个任务的索引也可以是在运行期间动态分配的。
在一个实施例中,每个任务的索引可以具有M元组的形式。例如,在用于表示第x类任务中的第i个任务的M元组中,第x个元素用于表示第i个任务在第x类任务中的迭代计数,在第x个元素之前的(x-1)个元素分别用于表示M类任务中在第x类任务之前执行的(x-1)类任务,该(x-1)个元素的顺序可以与该(x-1)类任务在不规则应用中出现的顺序相对应。可以理解的是,在将不规则应用中的M个循环划分为M类任务的情况下,M类任务在不规则应用中出现的顺序也就是M个循环在不规则应用中出现的顺序。
另外,上述M元组中的各个元素可以是非负整数或者正整数或者其它适用的表示,本发明实施例对此不作限定。
可见,通过这样的索引方式,能够使得各个任务维持良好的顺序,从而能够依据该索引来确保后续并行执行结果的正确性。也就是说,通过这样的索引方式,能够确保各个任务并行执行的结果与顺序执行的结果一致。
可以理解的是,此处所述的顺序执行可以如下定义:假定初始活动任务为t0,在所有活动任务中选择最小任务tmin,并将tmin迭代应用到Σ,直到没有活动的任务为止。此处所描述的最小任务可以是指在所有活动任务中索引最小的任务。
还可以理解的是,可以通过将索引进行比较来确定索引是否是最小。例如,在上述采用M元组表示索引的情况下,可以将各个任务对应的M元组的各元素从左到右开始进行比较。M元组中前面的元素可以比后面的元素具有更高的权重。例如,可以将第一个任务的M元组与第二个任务的M元组的各个元素对应比较,如果第一个任务的M元组的第1个元素小于第二个任务的第1个元素,则认为第一个任务的索引比第二个任务的索引小。如果第一个任务的M元组的第1个元素等于第二个任务的第1个元素,那么就继续比较第一个任务的M元组的第2个元素与第二个任务的M元组的第2个元素,如果第一个任务的M元组的第2个元素比第二个任务的M元组的第2个元素小,则认为第一个任务的索引比第二个任务的索引小。以此类推。
应当理解的是,此处的第一个任务和第二个任务中提及的“第一”和“第二”仅是为了在任务之间进行区别,并非指示这两个任务在不规则应用中出现的顺序。
为了本领域技术人员更好地理解本发明实施例中描述的索引方式,下面举例进行说明。应当理解的是,该例子并不对本发明实施例的范围造成任何限定。图2给出了一种不规则应用的示例代码片段。在图2的例子中,具有三个循环。具体而言,外层具有for-each循环结构的Update循环,该循环内嵌了另外两个循环,即具有for-each循环结构的Visit循环和具有for-all循环结构的Writeback循环。在该例子中,Update循环、Visit循环和Writeback循环可以分别被表示为3类任务:tu、tv和tw。Visit的任务体激活了3种任务(即队列中的push)。可以利用iu、iv、iw分别对tu、tv和tw进行编号,其用于表示tu、tv和tw在不规则应用中出现的顺序。在该例子中,iu、iv、iw可以是非负整数。如图2中所示,可以分别利用三元组来对tu、tv和tw进行索引。在该例子中,tu={cu++,0,0},tv={iu,cv++,0},tw={iu,iv,0}。其中,cu++表示tu对应的Update循环中的迭代计数,cv++可以表示tv对应的Visit循环中的迭代计数。
可见,通过这样的索引方式,能够有效地表示任务在不规则应用中出现的顺序,从而为后续确保任务并行执行结果的正确性提供依据。
如上所述,不规则应用的特征之一是在编译时间无法解决的依赖关系,因此如果简单地并行执行不规则应用中的多个任务,它们之间的冲突可能会将错误引入程序状态中,这样会导致不规则应用执行错误。为了实现不规则应用的并行化,本发明实施例可以利用索引来表示不规则应用中的任务的出现顺序,也就是说将不规则应用抽象为良序的任务集。而对于任务之间的依赖关系,可以将其表示为规则。当任务执行到某一约定点时,通过这样的规则来检查任务是否违反依赖性,然后根据检查结果来引导任务的继续执行,从而能够确保并行执行结果的正确性。
在本发明实施例中,采用了积极的并行化思想。具体地,根据是否允许同时执行有冲突的任务,积极的并行化技术可以分为两类:
(1)推测性并行(Speculative parallelization):执行多个任务,而不考虑其之间的冲突。每个任务可以在运行时间期间检查其与其它任务之间的冲突。若与先前的任务发生了冲突,则应中止该任务。
(2)协调并行(Coordinative parallelization):确保仅激活不冲突的任务。
无论是通过上述推测性并行技术还是协调并行技术来并行地执行不规则应用的M类任务,都可以在任务被执行到约定点时,利用本发明实施例所定义的规则来检查其当前状态,从而正确地引导该任务的继续执行。
在本发明实施例中,约定点(rendezvous)可以是预先定义的,例如,可以由编程人员预先将用于指定约定点的指令或者类似的指示嵌入到不规则应用中。
在本发明实施例中,规则可以是如下定义的:规则是在未来当其创建者按计划到达约定点时,向其创建者返回某个值的承诺。该返回的值可以是运行系统跨越从规则的创建到返回点之间的所有状态的函数。
具体而言,对于上述第i个任务而言,当第i个任务被执行到约定点时,可以暂停第i个任务,并根据第i个任务的索引确定与第i个任务对应的规则。在一个实施例中,可以至少基于第i个任务的索引对预先定义的通用规则进行实例化,以创建与第i个任务对应的规则,其中,通用规则可以用于表示不规则应用的任务之间的依赖关系。
例如,可以将第i个任务的索引(比如,以上的M元组)以及其它相关参数作为输入提供给通用规则,由此对该通用规则进行实例化,从而创建与第i个任务对应的规则。可见,每个实例化的规则可以是在运行时间创建的,并且其可以对应于一个父任务。
在一个实施例中,通用规则可以是预先定义的,例如,可以由编程人员预先编写通用规则。在硬件执行不规则应用时,可以调用通用规则。
在一个实施例中,通用规则可以包括正常路径和退出路径。
例如,可以利用事件-条件-动作(Event-Condition-Action,ECA)语法来定义正常路径。ECA语法可以采用传统的ECA子句(ON event IF conditions DO actions)。例如,规则的具体语义可以如下:事件(event)触发规则,然后规则检查条件(conditions),如果条件满足,则执行动作(action)。可见,通过ECA语法,能够简单有效地表示任务之间的依赖关系,从而能够简化不规则应用的并行化实现。
此外,在可选的实施例中,上述事件可以包括任务的激活、任务到达任务体中的特定操作、或这两类事件的组合。通过用信号的方式发送事件,将所触发的任务的索引和数据域广播给所有规则。上述条件可以是布尔表达式,其包括所触发的事件中的索引和数据域、父任务在创建该规则时传送的参数。上述动作可以包括在父任务的任务体中返回用于引导任务令牌的一个布尔值。应当理解的是,此处关于事件、条件和动作的描述仅是示例性说明,本发明实施例对此并不限定。本领域技术人员可以根据具体实现情况来定义事件、条件和动作的具体内容。
从上述可知,当任务到达约定点时,其将暂停并等待对应规则的返回值。然而,如果没有在规则的正常路径上返回一个值,任务可能将永远在约定点等待,这样可能会出现死锁,尤其是执行资源有限时。因此,在一个实施例中,规则可以包含退出路径。当无法通过规则的正常路径返回值时,可以执行规则的退出路径,由此退出规则的执行过程,从而确保不会出现死锁。例如,当规则的父任务是在约定点处所有等待任务中的最小任务时,可以自动触发退出路径。关于最小任务的确定,可以参见前述内容,此处不再赘述。
因此,在一个实施例中,规则可以由任务中用于创建的构造函数(constructor)、许多ECA子句和一个otherwise子句构成。
应当理解的是,虽然以上描述了利用ECA语法来定义规则,但是在其它实施例中,还可以采用本领域技术中其它适用的语法来定义规则,例如,可以采用任何支持基于future和promise语法的异步编程范式的语言。本发明实施例对此不作限定。
如上所述,在具体的实施例中,根据与第i个任务对应的规则,检查第i个任务的当前状态,可以包括:当根据与第i个任务对应的规则的正常路径而产生正常返回值时,根据该正常返回值来检查第i个任务的当前状态,以便引导第i个任务的继续执行;当根据与第i个任务对应的规则的正常路径无法产生正常返回值时,根据与第i个任务对应的规则的退出路径,退出与第i个任务对应的规则的运行,以便根据退出路径所产生的设定值来继续执行第i个任务。在一个实施例中,第i个任务可以是在约定点处等待的任务中索引最小的任务。当根据与第i个任务对应的规则的正常路径无法产生正常返回值时,可以执行退出路径,由此通过退出路径返回一个设定值,该设定值可以指示退出对任务状态的检查,继续任务的执行。
本发明实施例的方案可以在可重构硬件(例如,现场可编程门阵列(Field-Programmable Gate Array,FPGA))上执行,也可以在非可重构硬件(例如,处理器)上执行。也就是说,通过本发明实施例,可以在可重构硬件或者非可重构硬件上实现不规则应用的并行化,从而能够高效地处理不规则应用。
为了在可重构硬件上执行本发明实施例的处理不规则应用的方法,关于并行地执行M类任务,可以包括:将M类任务分别分配在N个任务队列中,N为正整数;生成K个数据通路,K为正整数;在K个数据通路上并行地执行N个任务队列,其中,N个任务队列中的每个任务队列中的任务被并行地执行。例如,任务队列中的任务可以按照先入先出的顺序被弹入到相应的数据通路中。例如,数据通路可以是通过流水线(pipeline)来实现的。可以理解的是,一个任务队列可以由一个或多个数据通路来执行。每个任务队列可以包括一个或多个任务。本发明实施例对此不作限定。
关于将M类任务分别分配在N个任务队列中,可以包括:将M类任务划分为N个任务集,其中,每个任务集中的任务具有相同的函数;将N个任务集分别分配给N个任务队列,其中,每个任务集对应于一个任务队列。这里的N个任务集可以是活动的任务集,任务集中的任务都处于准备执行状态。可见,通过这样的实施例,能够在可重构硬件上高效地实现不规则应用的并行化。
近年来,可重构硬件由于可编程的灵活性以及空间上的并行性,能够显著提升处理性能,因此也成为主流研究方向之一。传统上,可重构硬件使用硬件描述语言(HardwareDescription Languages,HDL)进行编程,HDL基于以硬件为中心的抽象。因此,关于在可重构硬件上上实现不规则应用,仅能通过人工统筹不规则应用的内在并行性,并使用HDL设计将不规则应用有效地映射到可重构硬件上。然而,这样的人工方法复杂性非常高,难于在日益发展的各种复杂系统(例如,仓库规模和分布式系统)中实现。
对于现有的针对可重构硬件的高级语言编程模型(如基于C语言或OpenCL的高层次综合)而言,需要在编译时间提取应用中的并行性,而不规则应用中的任务间依赖关系只有在运行期给定输入数据后才能完全确定,因此,这样的高级语言编程模型仅适用于规则应用,而不太适用于不规则应用。
对此,本发明实施例提供的方案非常适合于在可重构硬件上高效地实现不规则应用。利用本发明实施例的方案,能够以高层次综合在FPGA上实现不规则应用,也就是说,能够将不规则应用高性能地、正确地、自动地被转化成FPGA上的硬件加速器。此外,通过本发明实施例的方案,对于开发人员来说也无需了解硬件知识,能够减轻开发人员的处理复杂度。
为了本领域技术人员更好地理解本发明实施例,下面将通过例子进一步说明如何在作为典型的可重构硬件的FPGA上实现不规则应用的并行化。应当理解的是,以下例子并不对本发明实施例的范围造成任何限制。
下面将结合各个图来描述这些例子。图3为根据本发明一个实施例的在FPGA上实现不规则应用的过程示意图。
如图3所示,在框301中,可以确定不规则应用的M类任务,其中,每类任务中的各个任务分别被分配有索引,每个任务的索引可以用于表示该任务在不规则应用中出现的顺序。此外,可以预先定义通用规则,该通用规则可以用于表示各个任务之间的依赖关系。
在框302中,可以根据框301中确定的任务和规则,将不规则应用转换为布尔数据流图(Boolean Dataflow Graph,BDFG)。框302的过程可以利用本领域中适用的编程语言来实现。可以理解的是,该过程可以在与FPGA相耦合的处理器上实现,也可以在FPGA上实现,本发明实施例对此不作限定。下面还将结合具体例子来描述框302的操作。
在框303中,可以根据布尔数据流图,在FPGA上生成数据通路,以执行不规则应用。也就是说,可以将不规则应用映射为FPGA上的加速器。
图4(a)-4(d)示出了生成适用于FPGA实现的布尔数据流图的过程的例子。例如,图4(a)示出了不规则应用的代码片段的例子。图4(b)示出了针对该代码片段的程序依赖关系图(Program Dependence Graph,PDG)。在图4(b)中,虚线可以表示控制依赖关系。图4(c)示出了依据图4(b)转换得到的数据流图。该数据流图将程序的控制依赖关系编码成参与者/节点(即任务)之间的数据依赖关系,从而能够消除集中控制单元的需要。当在FPGA上实现时,可以使BDFG中的一个参与者/节点对应于FPGA的一个计算模块,BDFG中的每条连线可以对应于FPGA上的一条通信链路(由互连线和缓存队列组成)。计算模块可以受上级通信链路的数据驱动,获取输入数据进行计算,然后将计算结果输出到下级通信链路中。由此,BDFG可以实现为FPGA的数据通路,例如,如图4(d)所示。
另外,在图4(b)-图4(d)中,“LD”可以表示“读取(Load)”,“EQ”可以表示“相等(Equal)”,“ST”可以表示“写入(Store)”。
此外,也可以通过系统化的方式,将通用规则转换为BDFG,从而进一步在FPGA上实现规则。
图5示出了可实现本发明实施例的系统的例子的示意框图。如图5所示,该系统可以包括FPGA 510、处理器520和存储器530。FPGA 510可以与处理器520以及存储器530相耦合。例如,处理器520可以是任何适用的处理器,例如英特尔的Xeon处理器。存储器530可以包括任何适用的存储器,例如动态随机存取存储器(Dynamic Random Access Memory,DRAM)。
如图5所示,FPGA 510可以包括任务队列模块511、数据通路模块512、规则引擎模块513和存储器子系统514。
任务队列模块511可以包括至少一个任务队列。在一个实施例中,每个任务队列可以包括一个活动任务集。如上所述,活动任务集可以包括不规则应用的至少一个活动任务,所述至少一个活动的任务可以具有相同的函数。可以理解的是,当任务被推入一个任务队列中时,可以认为该任务是活动的。
数据通路模块512可以包括至少一条流水线。例如,根据BDFG的拓扑,可以逐步生成多个流水线,直到达到FPGA的资源限制为止。
然而,具有不可预测的时延的操作可能会严重降低流水线的利用率。例如,对FPGA上的64KB缓存的直接读命中可能会有70ns(或者14FPGA周期)的时延,而缓存未中会使得存储器操作停止大约200ns。
针对于该问题,本发明实施例中采用动态数据流方案,根据操作数的可用性来对任务重新排序。这样,可以绕过受阻的任务。如图4(d)中所示,虽然任务a3因缓存未中而停止,但是读取(即,LD)操作节点仍然发出新请求a4。此外,在本发明实施例中,可以将乱序执行限制在之前描述的约定点,从而确保这些任务并行执行结果的正确性。可选地,为了确保数据通路实现简单,可以在将读取操作节点中的乱序结果输出到下级通信链路之前,将这些结果恢复为正常顺序。
在一个实施例中,处理器520可以对任务队列进行初始化。任务队列中的任务可以按照先入先出的顺序,被弹入到数据通路模块512中的流水线中。例如,每个任务队列可以对应于一条流水线或者多条流水线。
规则引擎模块513可以实现以上所述的通用规则。可以理解的是,针对不同类型的任务,可能需要分别预先定义不同类型的通用规则。因此,规则引擎模块513可以实现不同类型的通用规则。在需要确定某个任务对应的规则时,规则引擎模块513可以利用该任务的索引和相关的参数,对通用规则进行实例化,从而创建与该任务对应的规则。
此外,可以理解的是,数据通路模块512中的至少一个流水线可以共享规则引擎模块513,从而能够保证执行结果的正确性。
存储器子系统514可以通过本领域已知的任何可用的存储器来实现,其可以用于存储实现本发明实施例所涉及的相关信息(例如,FPGA的配置信息等)。
下面将结合例子来描述数据通路模块512与规则引擎模块513之间的交互过程。应当理解的是,该例子仅是为了帮助本领域技术人员更好地理解本发明实施例,而非限制本发明实施例的范围。
图6中的(a)-(c)示出了根据本发明一个实施例的数据通路模块512与规则引擎模块513之间的交互过程。具体而言,图6中(a)示出了在数据通路模块512中的示例流水线1。图6中(b)示出了规则引擎模块513的结构示意图。图6中(c)示出了作为一个例子的通用规则伪代码段。
如图图6中(a)中所示,在流水线1中可以分配规则。例如,使用任务的索引和其它变量作为输入参数,来创建与该任务对应的规则(图6中(c)②)。规则引擎模块513中的分配器(Allocator)可以为该任务的索引分配规则通道(Rule Lane)(图6中(c)③)。在没有通道可用的情况下,可以暂停父任务。
另外,通过广播到达特定操作的任务,规则引擎模块513中的事件总线(EventBus)可以捕获到事件。若某一任务对应的规则通过执行正常路径(例如,图6中(c)中由ECA语法所定义的路径)得到返回值,则可以将返回值放置在规则引擎模块513中的返回缓冲器(Return Buffer)中,并释放相应的规则通道。在流水线1中,约定点被设计为开关(switch),其对乱序的返回值进行重新排序,并基于这些值引导任务的继续执行。
另外,可以将在所有流水线上的约定点处的最小任务的索引广播给规则通道,以便在无法执行正常路径时,触发规则中的退出路径(例如,otherwise子句(图6中(c)④))。可以理解的是,此处的规则引擎模块可以等效于积极并行化实现中的运行调度器。
可见,通过上述实施例,能够在FPGA上实现不规则应用的细粒度流水并行,从而能够将不规则应用高性能地、正确地、自动地转化成FPGA上的硬件加速器。
另外,为了进一步说明本发明实施例的有益效果,以下对本发明实施例的方案和现有方案在英特尔的HARP(Intel-Altera Heterogeneous Architecture ResearchPlatform,异构架构研究平台)上的执行结果进行了比较。HARP可以包括一个处理器和一个Altera Stratix V 5SGXEA7N1FC45FPGA。
在该例子中,所测试的不规则应用为宽度优先搜索(Breadth-First search,BFS)算法。在测试中使用的现有的、公开的方案是基于OpenCL语言,人为地分析BFS的并行性,并编写相应的代码,然后利用Altera OpenCL工具生成在FPGA上实现的程序。
相应地,使用的基准测试程序如下:采用本发明实施例的推测并行化的BFS(SPEC-BFS)和协调并行化的BFS(COOR-BFS),以及采用现有方案的OpenCL版本的BFS(OpenCL-BFS)。
在表1中,示出了采用本发明实施例的SPEC-BFS和COOR-BFS在FPGA上的执行时间,以及采用现有方案的OpenCL-BFS在FPGA上的执行时间。
表1
采用的方案 | OpenCL-BFS | SPEC-BFS | COOR-BFS |
执行时间(秒) | 124.1 | 0.47 | 0.64 |
从表1可以看出,采用本发明实施例对不规则应用的处理结果明显优于现有方案的处理结果。可见,与现有处理方案相比,本发明实施例的方案能够高效地执行不规则应用,而且实现复杂度也极大地降低。
图7是根据本发明一个实施例的处理不规则应用的装置的示意框图。如图7所示,该装置可以包括:
任务确定模块701,用于确定不规则应用的M类任务,M为正整数;
任务执行模块702,用于并行地执行所述M类任务,其中,所述M类任务中的每类任务中的各个任务分别具有索引,每个任务的索引用于表示该任务在不规则应用中出现的顺序;
任务执行模块702,还用于:对于所述M类任务中的第x类任务中的第i个任务而言,i是正整数,x是小于或者等于M的正整数:当所述第i个任务被执行到约定点时,暂停所述第i个任务,并根据所述第i个任务的索引确定与所述第i个任务对应的规则,与所述第i个任务对应的规则用于表示所述第i个任务与所述M类任务中的其它任务的依赖关系;根据与所述第i个任务对应的规则,检查所述第i个任务的当前状态,以便引导所述第i个任务的继续执行。
在一个实施例中,任务确定模块701具体可以用于:将所述不规则应用中的M个循环识别为所述M类任务。
在一个实施例中,所述索引具有M元组的形式,其中,在用于表示所述第x类任务中的所述第i个任务的M元组中,第x个元素用于表示所述第i个任务在所述第x类任务中的迭代计数,在所述第x个元素之前的(x-1)个元素分别用于表示所述M类任务中在所述第x类任务之前执行的(x-1)类任务,所述(x-1)个元素的顺序与所述(x-1)类任务在所述不规则应用中出现的顺序相对应。
在一个实施例中,任务执行模块702具体可以用于按如下方式根据所述第i个任务的索引确定与所述第i个任务对应的规则:
至少基于所述第i个任务的索引对预先定义的通用规则进行实例化,以创建与所述第i个任务对应的规则,其中,所述通用规则用于表示所述不规则应用的任务之间的依赖关系。
在一个实施例中,所述通用规则包括正常路径和退出路径,所述正常路径是利用事件-条件-动作语法而定义的。
在一个实施例中,任务执行模块702具体可以用于按如下方式根据与所述第i个任务对应的规则,检查所述第i个任务的当前状态,以便引导所述第i个任务的继续执行:
当根据与所述第i个任务对应的规则的正常路径而产生正常返回值时,根据所述正常返回值来检查所述第i个任务的当前状态,以便引导所述第i个任务的继续执行;
当根据与所述第i个任务对应的规则的正常路径无法产生正常返回值时,根据与所述第i个任务对应的规则的退出路径,退出与所述第i个任务对应的规则的运行,以便根据所述退出路径所产生的设定值来继续执行所述第i个任务。
在一个实施例中,所述第i个任务是在约定点处等待的任务中索引最小的任务。
在一个实施例中,任务执行模块702具体可以用于按如下方式并行地执行所述M类任务:
将所述M类任务分别分配在N个任务队列中,N是正整数;
生成K个数据通路,K为正整数;
在所述K个数据通路上并行地执行所述N个任务队列,其中,所述N个任务队列中的每个任务队列中的任务被并行地执行。
在一个实施例中,任务执行模块702具体可以用于按如下方式将所述M类任务分别分配在N个任务队列中:
将所述M类任务划分为N个任务集,其中,每个任务集中的任务具有相同的函数;
将所述N个任务集分别分配给所述N个任务队列,其中,每个任务集对应于一个任务队列。
图8是根据本发明另一实施例的处理不规则应用的装置的示意框图。如图8所示,该装置可以包括处理系统801、存储器802及存储在所述存储器802上并可在所述处理系统801上运行的计算机程序,所述处理系统801与所述存储器802相耦合,所述处理系统801执行所述计算机程序时实现上述处理不规则应用的方法。
在一个实施例中,图8所示的处理不规则应用的装置可以是任何能够实现其功能的设备,例如该设备可以是台式计算机、膝上型计算机、移动设备等,本发明对此不作限定。其中的处理系统801可以包括处理器、可重构硬件或者二者的组合,其中处理器例如可以采用通用处理器、控制器等实现,如英特尔的Xeon处理器等;可重构硬件例如可以包括现场可编程门阵列等,本发明对此不作限定,相关的变化例均应落入本发明的保护范围。存储器802可以包括任何适用的存储器,例如动态随机存取存储器等,本发明对此也不作限定,相关的变化例也应落入本发明的保护范围。
在本发明实施例中,还提供一种计算机可读存储介质,所述计算机可读存储介质存储有可执行上述处理不规则应用的方法的计算机程序。
综上所述,在本发明实施例中,通过划分出不规则应用的M类任务,使这M类任务并行地执行,能够提高不规则应用的执行性能和效率;而在任务被执行到约定点时,依据其与其它任务的依赖关系来检查该任务的当前状态,根据该当前状态来引导该任务的继续执行,由此能够确保任务并行执行结果的正确性。因此,通过本发明实施例,能够以细粒度流水并行化的方式高效地、正确地、自动地执行不规则应用。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (18)
1.一种处理不规则应用的方法,其特征在于,包括:
确定不规则应用的M类任务,M为正整数;
将所述M类任务分别分配在N个任务队列中,生成K个数据通路,N和K为正整数;在所述K个数据通路上并行地执行所述N个任务队列,其中,所述N个任务队列中的每个任务队列中的任务被并行地执行,所述M类任务中的每类任务中的各个任务分别具有索引,每个任务的索引用于表示该任务在不规则应用中出现的顺序;
对于所述M类任务中的第x类任务中的第i个任务而言,i是正整数,x是小于或者等于M的正整数:
当所述第i个任务被执行到约定点时,暂停所述第i个任务,并根据所述第i个任务的索引确定与所述第i个任务对应的规则,与所述第i个任务对应的规则用于表示所述第i个任务与所述M类任务中的其它任务的依赖关系;根据与所述第i个任务对应的规则,检查所述第i个任务的当前状态,以便引导所述第i个任务的继续执行。
2.如权利要求1所述的方法,其特征在于,所述确定所述不规则应用的M类任务,包括:将所述不规则应用中的M个循环识别为所述M类任务。
3.如权利要求2所述的方法,其特征在于,所述索引具有M元组的形式,其中,在用于表示所述第x类任务中的所述第i个任务的M元组中,第x个元素用于表示所述第i个任务在所述第x类任务中的迭代计数,在所述第x个元素之前的(x-1)个元素分别用于表示所述M类任务中在所述第x类任务之前执行的(x-1)类任务,所述(x-1)个元素的顺序与所述(x-1)类任务在所述不规则应用中出现的顺序相对应。
4.如权利要求1至3中任一项所述的方法,其特征在于,所述根据所述第i个任务的索引确定与所述第i个任务对应的规则包括:
至少基于所述第i个任务的索引对预先定义的通用规则进行实例化,以创建与所述第i个任务对应的规则,其中,所述通用规则用于表示所述不规则应用的任务之间的依赖关系。
5.如权利要求4所述的方法,其特征在于,
所述通用规则包括正常路径和退出路径,所述正常路径是利用事件-条件-动作语法而定义的。
6.如权利要求5所述的方法,其特征在于,所述根据与所述第i个任务对应的规则,检查所述第i个任务的当前状态,以便引导所述第i个任务的继续执行,包括:
当根据与所述第i个任务对应的规则的正常路径而产生正常返回值时,根据所述正常返回值来检查所述第i个任务的当前状态,以便引导所述第i个任务的继续执行;
当根据与所述第i个任务对应的规则的正常路径无法产生正常返回值时,根据与所述第i个任务对应的规则的退出路径,退出与所述第i个任务对应的规则的运行,以便根据所述退出路径所产生的设定值来继续执行所述第i个任务。
7.如权利要求6所述的方法,其特征在于,所述第i个任务是在约定点处等待的任务中索引最小的任务。
8.如权利要求1所述的方法,其特征在于,将所述M类任务分别分配在N个任务队列中包括:
将所述M类任务划分为N个任务集,其中,每个任务集中的任务具有相同的函数;
将所述N个任务集分别分配给所述N个任务队列,其中,每个任务集对应于一个任务队列。
9.一种处理不规则应用的装置,其特征在于,包括:
任务确定模块,用于确定不规则应用的M类任务,M为正整数;
任务执行模块,用于将所述M类任务分别分配在N个任务队列中,生成K个数据通路,N和K为正整数;在所述K个数据通路上并行地执行所述N个任务队列,其中,所述N个任务队列中的每个任务队列中的任务被并行地执行,所述M类任务中的每类任务中的各个任务分别具有索引,每个任务的索引用于表示该任务在不规则应用中出现的顺序;
所述任务执行模块,还用于:对于所述M类任务中的第x类任务中的第i个任务而言,i是正整数,x是小于或者等于M的正整数:当所述第i个任务被执行到约定点时,暂停所述第i个任务,并根据所述第i个任务的索引确定与所述第i个任务对应的规则,与所述第i个任务对应的规则用于表示所述第i个任务与所述M类任务中的其它任务的依赖关系;根据与所述第i个任务对应的规则,检查所述第i个任务的当前状态,以便引导所述第i个任务的继续执行。
10.如权利要求9所述的装置,其特征在于,所述任务确定模块具体用于:将所述不规则应用中的M个循环识别为所述M类任务。
11.如权利要求10所述的装置,其特征在于,所述索引具有M元组的形式,其中,在用于表示所述第x类任务中的所述第i个任务的M元组中,第x个元素用于表示所述第i个任务在所述第x类任务中的迭代计数,在所述第x个元素之前的(x-1)个元素分别用于表示所述M类任务中在所述第x类任务之前执行的(x-1)类任务,所述(x-1)个元素的顺序与所述(x-1)类任务在所述不规则应用中出现的顺序相对应。
12.如权利要求9至11中任一项所述的装置,其特征在于,所述任务执行模块具体用于按如下方式根据所述第i个任务的索引确定与所述第i个任务对应的规则:
至少基于所述第i个任务的索引对预先定义的通用规则进行实例化,以创建与所述第i个任务对应的规则,其中,所述通用规则用于表示所述不规则应用的任务之间的依赖关系。
13.如权利要求12所述的装置,其特征在于,
所述通用规则包括正常路径和退出路径,所述正常路径是利用事件-条件-动作语法而定义的。
14.如权利要求13所述的装置,其特征在于,所述任务执行模块具体用于按如下方式根据与所述第i个任务对应的规则,检查所述第i个任务的当前状态,以便引导所述第i个任务的继续执行:
当根据与所述第i个任务对应的规则的正常路径而产生正常返回值时,根据所述正常返回值来检查所述第i个任务的当前状态,以便引导所述第i个任务的继续执行;
当根据与所述第i个任务对应的规则的正常路径无法产生正常返回值时,根据与所述第i个任务对应的规则的退出路径,退出与所述第i个任务对应的规则的运行,以便根据所述退出路径所产生的设定值来继续执行所述第i个任务。
15.如权利要求14所述的装置,其特征在于,所述第i个任务是在约定点处等待的任务中索引最小的任务。
16.如权利要求9所述的装置,其特征在于,所述任务执行模块具体用于按如下方式将所述M类任务分别分配在N个任务队列中:
将所述M类任务划分为N个任务集,其中,每个任务集中的任务具有相同的函数;
将所述N个任务集分别分配给所述N个任务队列,其中,每个任务集对应于一个任务队列。
17.一种处理不规则应用的装置,其特征在于,包括处理系统、存储器及存储在所述存储器上并可在所述处理系统上运行的计算机程序,所述处理系统与所述存储器相耦合,所述处理系统执行所述计算机程序时实现权利要求1至8任一项所述方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有可执行权利要求1至8中任一项所述方法的计算机程序。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710398325.3A CN107239334B (zh) | 2017-05-31 | 2017-05-31 | 处理不规则应用的方法及装置 |
US15/992,067 US10564948B2 (en) | 2017-05-31 | 2018-05-29 | Method and device for processing an irregular application |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710398325.3A CN107239334B (zh) | 2017-05-31 | 2017-05-31 | 处理不规则应用的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107239334A CN107239334A (zh) | 2017-10-10 |
CN107239334B true CN107239334B (zh) | 2019-03-12 |
Family
ID=59985339
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710398325.3A Active CN107239334B (zh) | 2017-05-31 | 2017-05-31 | 处理不规则应用的方法及装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10564948B2 (zh) |
CN (1) | CN107239334B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110147268B (zh) * | 2019-04-16 | 2020-05-08 | 清华大学无锡应用技术研究院 | 处理并发事务的方法、装置、并发控制系统及存储介质 |
CN110908814A (zh) * | 2019-11-26 | 2020-03-24 | 北京达佳互联信息技术有限公司 | 消息处理方法、装置、电子设备及存储介质 |
CN113254061B (zh) * | 2021-06-02 | 2021-11-09 | 深圳前海大道金融服务有限公司 | 基于规则引擎的业务决策方法、系统及存储介质 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2698710A3 (en) * | 2008-02-12 | 2014-05-28 | Scrutiny, INC. | Systems and methods for information flow analysis |
US8281295B2 (en) * | 2008-05-23 | 2012-10-02 | International Business Machines Corporation | Computer analysis and runtime coherency checking |
WO2009152233A2 (en) * | 2008-06-10 | 2009-12-17 | Board Of Regents, The University Of Texas System | Programming model and software system for exploiting parallelism in irregular programs |
CN102089752B (zh) * | 2008-07-10 | 2014-05-07 | 洛克泰克科技有限公司 | 依赖性问题的有效率的并行计算 |
JP2011053995A (ja) * | 2009-09-03 | 2011-03-17 | Hitachi Ltd | データ処理制御方法および計算機システム |
US8769543B2 (en) * | 2010-09-27 | 2014-07-01 | Throughputer, Inc. | System and method for maximizing data processing throughput via application load adaptive scheduling and context switching |
CN101840329B (zh) * | 2010-04-19 | 2012-10-03 | 浙江大学 | 一种基于图拓扑结构的数据并行处理方法 |
US8601485B2 (en) * | 2011-05-25 | 2013-12-03 | Arm Limited | Data processing apparatus and method for processing a received workload in order to generate result data |
CN102508716B (zh) * | 2011-09-29 | 2015-04-15 | 用友软件股份有限公司 | 任务控制装置和任务控制方法 |
CN103377035A (zh) * | 2012-04-12 | 2013-10-30 | 浙江大学 | 针对粗颗粒度流应用的流水并行化方法 |
US20140047452A1 (en) * | 2012-08-08 | 2014-02-13 | Battelle Memorial Institute | Methods and Systems for Scalable Computing on Commodity Hardware for Irregular Applications |
US10095526B2 (en) * | 2012-10-12 | 2018-10-09 | Nvidia Corporation | Technique for improving performance in multi-threaded processing units |
US9652286B2 (en) * | 2014-03-21 | 2017-05-16 | Oracle International Corporation | Runtime handling of task dependencies using dependence graphs |
CN104133724B (zh) * | 2014-04-03 | 2015-08-19 | 腾讯科技(深圳)有限公司 | 并发任务调度方法及装置 |
US10073652B2 (en) * | 2015-09-24 | 2018-09-11 | International Business Machines Corporation | Performance optimized storage vaults in a dispersed storage network |
US9886328B2 (en) * | 2016-03-11 | 2018-02-06 | Intel Corporation | Flexible binding of tasks to target resources |
US10474510B2 (en) * | 2016-03-11 | 2019-11-12 | Intel Corporation | Declarative properties for data collections |
US10592280B2 (en) * | 2016-11-23 | 2020-03-17 | Amazon Technologies, Inc. | Resource allocation and scheduling for batch jobs |
US10372507B2 (en) * | 2016-12-31 | 2019-08-06 | Intel Corporation | Compute engine architecture to support data-parallel loops with reduction operations |
US10146738B2 (en) * | 2016-12-31 | 2018-12-04 | Intel Corporation | Hardware accelerator architecture for processing very-sparse and hyper-sparse matrix data |
US10180928B2 (en) * | 2016-12-31 | 2019-01-15 | Intel Corporation | Heterogeneous hardware accelerator architecture for processing sparse matrix data with skewed non-zero distributions |
-
2017
- 2017-05-31 CN CN201710398325.3A patent/CN107239334B/zh active Active
-
2018
- 2018-05-29 US US15/992,067 patent/US10564948B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20180349118A1 (en) | 2018-12-06 |
CN107239334A (zh) | 2017-10-10 |
US10564948B2 (en) | 2020-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Jia et al. | Beyond data and model parallelism for deep neural networks. | |
KR102569086B1 (ko) | 태스크 병렬 처리 방법, 장치, 시스템, 기억 매체 및 컴퓨터 기기 | |
US11205125B2 (en) | Scheduler and simulator for an area-efficient, reconfigurable, energy-efficient, speed-efficient neural network | |
US9672065B2 (en) | Parallel simulation using multiple co-simulators | |
CN103858099B (zh) | 用于执行应用的方法和系统、具有机器指令的电路 | |
US10469588B2 (en) | Methods and apparatus for iterative nonspecific distributed runtime architecture and its application to cloud intelligence | |
US20190130270A1 (en) | Tensor manipulation within a reconfigurable fabric using pointers | |
CN107239334B (zh) | 处理不规则应用的方法及装置 | |
WO2020083050A1 (zh) | 一种数据流处理方法及相关设备 | |
CN113168582A (zh) | 量子计算仿真中的受控非门并行化 | |
US9361118B2 (en) | Method for memory consistency among heterogeneous computer components | |
US20230118325A1 (en) | Method and apparatus having a memory manager for neural networks | |
US9141936B2 (en) | Systems and methods for simulating a resource constrained process | |
KR20210148586A (ko) | 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 가속기 시스템 | |
CN103914412B (zh) | 用于存储设备中的流量优先化的方法,存储设备以及存储系统 | |
US20140181467A1 (en) | High level software execution mask override | |
Ma et al. | Adaptive stochastic gradient descent for deep learning on heterogeneous CPU+ GPU architectures | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
CN117009038B (zh) | 一种基于云原生技术的图计算平台 | |
Khaitan et al. | Proactive task scheduling and stealing in master-slave based load balancing for parallel contingency analysis | |
Gorodnyaya | Method of Paradigmatic Analysis of Programming Languages and Systems. | |
Kong et al. | Origin pilot: a quantum operating system for effecient usage of quantum resources | |
US12001382B2 (en) | Methods, apparatus, and articles of manufacture to generate command lists to be offloaded to accelerator circuitry | |
CN117120979A (zh) | 用于机器学习工作负荷的异步分布式数据流 | |
JP2023544911A (ja) | 並列量子コンピューティングのための方法及び装置 |
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 |