CN109213587A - GPU平台下的多Stream并行DAG图任务映射策略 - Google Patents

GPU平台下的多Stream并行DAG图任务映射策略 Download PDF

Info

Publication number
CN109213587A
CN109213587A CN201811063152.0A CN201811063152A CN109213587A CN 109213587 A CN109213587 A CN 109213587A CN 201811063152 A CN201811063152 A CN 201811063152A CN 109213587 A CN109213587 A CN 109213587A
Authority
CN
China
Prior art keywords
dag
node
parallel
data
dependence
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
CN201811063152.0A
Other languages
English (en)
Other versions
CN109213587B (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.)
Information Engineering University of PLA Strategic Support Force
Original Assignee
Information Engineering University of PLA Strategic Support Force
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 Information Engineering University of PLA Strategic Support Force filed Critical Information Engineering University of PLA Strategic Support Force
Priority to CN201811063152.0A priority Critical patent/CN109213587B/zh
Publication of CN109213587A publication Critical patent/CN109213587A/zh
Application granted granted Critical
Publication of CN109213587B publication Critical patent/CN109213587B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)

Abstract

本发明涉及并行计算技术领域,尤其涉及GPU平台下的多Stream并行DAG图任务映射策略。本发明的GPU平台下的多Stream并行DAG图任务映射策略,包括:根据应用任务的数据流向将应用任务抽象成一个DAG图,并对DAG图中的节点和有向边的属性进行赋值;根据DAG图中的节点与节点之间的数据依赖关系,将DAG图实现并行;将并行的DAG图映射到不同粒度的GPU编程模型中。本发明GPU平台下的多Stream并行DAG任务映射策略实现了CPU+GPU异构平台上的单DAG图的任务映射,将节点的依赖关系与GPU并行能力相结合,有效的提升了CPU+GPU异构平台的执行效率。

Description

GPU平台下的多Stream并行DAG图任务映射策略
技术领域
本发明涉及并行计算技术领域,尤其涉及GPU平台下的多Stream并行DAG图任务映射策略。
背景技术
伴随着通用并行计算架构(compute unified device architecture,CUDA)的推出,高性能计算技术得到了迅猛的发展。并行计算作为实现高性能计算(high performancecomputing,HPC)的重要手段,探索实现并行计算技术与图形处理器(graphic processunit,GPU)与中央处理器(computing processor unit,CPU)异构平台的高效耦合,成为国内外并行计算领域中的一个研究热点。应用程序在CPU+GPU异构平台上的执行效率不仅取决于硬件平台的计算能力,而且受限于任务的映射策略。一个高效的映射策略可以降低对硬件资源的需求的同时,还可以有效的提高应用程序的执行效率。任务映射依据任务之间是否存在依赖关系,可分为独立任务映射和依赖任务映射,依赖任务映射通常也被称为相关任务映射。典型的相关任务映射模型都是建立在图的基础上的,通常称它们为任务图,最常用的任务图是有向无环图(Direction Asyclic Graph,DAG),因此任务映射的优化问题常被建模为图优化问题。
CUDA将平台分为两部分:host端(CPU)和device端(GPU),host端主要进行初始化、设备的管理、数据的传输控制,device端进行任务的执行,在device端上执行的函数称为kernel函数。在device端运行程序之前,需要先从host端完成数据的拷贝,数据完成后host端调用kernel函数,而kernel函数调用是一种异步的方式,即调用kernel函数后,host控制权返回。而CUDA可以通过多Stream并行的方式,实现多kernel函数的并行执行。根据CUDA提供的多种并行模式,就可以在单GPU上实现多任务的并行,这是CPU+GPU异构平台与其他异构平台最大的不同。而在单GPU上合理安排任务的执行顺序成为了一个亟待解决的问题,而任务映射策略的目的就是通过一定的方式合理的安排任务的执行顺序,实现应用的高效执行。
发明内容
针对上述问题,本发明提出了GPU平台下的多Stream并行DAG图任务映射策略,提升了执行效率。
为了实现上述目的,本发明采用以下技术方案:
GPU平台下的多Stream并行DAG图任务映射策略,包括以下步骤:
步骤1:根据应用任务的数据流向将应用任务抽象成一个DAG图,并对DAG图中的节点和有向边的属性进行赋值;
步骤2:根据DAG图中的节点与节点之间的数据依赖关系,将DAG图实现并行;
步骤3:将并行的DAG图映射到不同粒度的GPU编程模型中。
进一步地,所述DAG图用四元组[V,E,C,T]表示,其中V为节点集合,每个节点表示一个子任务,E为数据流向集合,C为V中节点对应的计算复杂度集合,T为节点之间数据流的传输时间集合。
进一步地,所述节点与节点之间的数据依赖关系包括:
流依赖关系:且R(vi)发生在W(vj)之后,则称节点vi流依赖于节点vj
反依赖关系:且R(vi)发生在W(vj)之前,则称节点vi反依赖于节点vj
输出依赖关系:即:两个节点vi和vj先后对数据δ进行写入,则称两个节点vi和vj是输出依赖关系;
输入依赖关系:即:两个节点vi和vj先后对数据δ进行读取,则称两个节点vi和vj是输入依赖关系;
其中vi和vj表示两个节点,R(vi)表示vi节点对数据δ的读取,W(vi)表示vi节点对数据δ的写入。
进一步地,所述步骤2包括:
通过DAG图中节点与节点之间的连接关系确定DAG图中节点与节点之间的数据依赖关系;
通过DAG图中节点与节点之间的数据依赖关系,划分DAG层;
依据DAG图中的节点与节点之间的数据依赖关系,将流依赖关系、反依赖关系以及输出依赖关系对应的节点分别放入到同一并行分支中,将输入依赖关系对应的两个节点划分到不同的并行分支中。
进一步地,所述步骤3包括:
对于并行的DAG图,根据所述DAG层和所述数据依赖关系,选择不同的GPU并行粒度,将不同的并行分支分别映射到不同的Stream中;
对于分配到一个Stream中的不同的子任务,分配不同的线程块和线程数量,实现细粒度并行;
结合CUDA编程模型的异步数据传输和异步数据调度,在CPU的配合下,实现基于CPU+GPU异构平台多Stream流水线并行多粒度混合下的DAG图的任务映射。
与现有技术相比,本发明具有的有益效果:
本发明提出了GPU平台下的多Stream并行DAG任务映射策略,根据应用的执行关系,抽象建模出数据传递的DAG图,依据数据之间的依赖关系优化抽象出来的DAG图模型,实现任务在GPU平台上的任务映射。在DAG图的建模过程中引入数据间的依赖关系的数学抽象,为进一步定义DAG图中的节点之间的关系提供了基础,为进一步优化DAG图任务映射模型提供了支撑。将GPU中的多流并行与DAG图相互结合,将硬件的并行计算能力与DAG图模型高度耦合,可以有效的提高算法的执行效率,提高硬件资源的利用率。本发明GPU平台下的多Stream并行DAG任务映射策略实现了CPU+GPU异构平台上的单DAG图的任务映射,将节点的依赖关系与GPU并行能力相结合,有效的提升了CPU+GPU异构平台的执行效率。
附图说明
图1为本发明实施例的GPU平台下的多Stream并行DAG图任务映射策略的基本流程图。
图2为本发明实施例的任务分层及Stream划分示意图。
图3为本发明实施例的多Stream流水线并行示意图。
图4为本发明实施例的随机DAG图。
图5为本发明实施例的HEFT算法时间线图。
图6为本发明实施例的GPU平台下的多Stream并行DAG图任务映射策略时间线图。
图7为本发明实施例的不同节点数HEFT算法和GPU平台下的多Stream并行DAG图任务映射策略(MS-DAG任务映射策略)对比图。
图8为本发明实施例的节点数为100的条件下不同处理器数HEFT算法与GPU平台下的多Stream并行DAG图任务映射策略(MS-DAG任务映射策略)对比图。
图9为本发明实施例的处理器性能相同的条件下HEFT算法与GPU平台下的多Stream并行DAG图任务映射策略(MS-DAG任务映射策略)对比图。
图10为本发明实施例的Pinned Memory与Pageable Memory数据传输对比图。
具体实施方式
下面结合附图和具体的实施例对本发明做进一步的解释说明:
实施例一:
如图1所示,本发明的一种GPU平台下的多Stream并行DAG图任务映射策略,包括以下步骤:
步骤S101:根据应用任务的数据流向将应用任务抽象成一个DAG图,并对DAG图中的节点和有向边的属性进行赋值;
步骤S102:根据DAG图中的节点与节点之间的数据依赖关系,将DAG图实现并行;
步骤S103:将并行的DAG图映射到不同粒度的GPU编程模型中。
具体地,所述DAG图用四元组[V,E,C,T]表示,其中V为节点集合,每个节点表示一个子任务,E为数据流向集合,C为V中节点对应的计算复杂度集合,T为节点之间数据流的传输时间集合。
具体地,所述节点与节点之间的数据依赖关系包括:
流依赖关系:且R(vi)发生在W(vj)之后,则称节点vi流依赖于节点vj
反依赖关系:且R(vi)发生在W(vj)之前,则称节点vi反依赖于节点vj
输出依赖关系:即:两个节点vi和vj先后对数据δ进行写入,则称两个节点vi和vj是输出依赖关系;
输入依赖关系:即:两个节点vi和vj先后对数据δ进行读取,则称两个节点vi和vj是输入依赖关系;
其中vi和vj表示两个节点,R(vi)表示vi节点对数据δ的读取,W(vi)表示vi节点对数据δ的写入。
具体地,所述步骤S102包括:
通过DAG图中节点与节点之间的连接关系确定DAG图中节点与节点之间的数据依赖关系;
通过DAG图中节点与节点之间的数据依赖关系,划分DAG层;
依据DAG图中的节点与节点之间的数据依赖关系,将流依赖关系、反依赖关系以及输出依赖关系对应的节点分别放入到同一并行分支中,将输入依赖关系对应的两个节点划分到不同的并行分支中。
具体地,所述步骤S103包括:
对于并行的DAG图,根据所述DAG层和所述数据依赖关系,选择不同的GPU并行粒度,将不同的并行分支分别映射到不同的Stream中;
对于分配到一个Stream中的不同的子任务,分配不同的线程块和线程数量,实现细粒度并行;
结合CUDA编程模型的异步数据传输和异步数据调度,在CPU的配合下,实现基于CPU+GPU异构平台多Stream流水线并行多粒度混合下的DAG图的任务映射。
本发明提出了GPU平台下的多Stream并行DAG任务映射策略,根据应用的执行关系,抽象建模出数据传递的DAG图,依据数据之间的依赖关系优化抽象出来的DAG图模型,实现任务在GPU平台上的任务映射。在DAG图的建模过程中引入数据间的依赖关系的数学抽象,为进一步定义DAG图中的节点之间的关系提供了基础,为进一步优化DAG图任务映射模型提供了支撑。将GPU中的多流并行与DAG图相互结合,将硬件的并行计算能力与DAG图模型高度耦合,可以有效的提高算法的执行效率,提高硬件资源的利用率。GPU平台下的多Stream并行DAG任务映射策略实现了CPU+GPU异构平台上的单DAG图的任务映射,将节点的依赖关系与GPU并行能力相结合,有效的提升了CPU+GPU异构平台的执行效率。
实施例二:
本发明的另一种GPU平台下的多Stream并行DAG图任务映射策略,包括:
步骤S201:根据应用任务的数据流向将应用任务抽象成一个DAG图,并对DAG图中的节点和有向边的属性进行赋值,包括:
任务映射分为独立任务映射和依赖任务映射。依赖任务映射通常也被称为相关任务映射。典型的相关任务映射模型都是建立在图的基础上的,通常称它们为任务图,最常用的任务图是DAG图,因此任务映射策略的研究常被转化为DAG图的优化问题。
在数学和计算机科学中,DAG图是由集合的顶点和有向边组成,根据任务的特点需要,赋予节点和有向边不同的属性。而任务映射的优化正是通过节点和有向边的属性设计映射策略实现高效的任务模型。
任务映射DAG图可以用四元组表示:DAG=[V,E,C,T],其中,V={v0,v1,…,vn}作为节点集合,每个节点表示一个子任务,E={eij}表示有向边的连接关系集合,eij表示数据流向是从i节点流向j节点,C={c0,c1,…,cn}表示E中对应节点的计算复杂度集合,T={tij}表示由数据由i节点流向j节点所需要的传输时间集合。
根据节点之间的连接关系可以确定数据之间的依赖关系;数据之间的依赖关系主要分为流依赖、反依赖、输出依赖以及输入依赖四种。假设有两个节点vi和vj,R(vi)表示vi节点对数据δ的读取,W(vi)表示vi节点对数据δ的写入。则节点的依赖关系可以表示为:
(1)流依赖关系:且R(vi)发生在W(vj)之后,则称节点vi流依赖于节点vj
(2)反依赖关系:且R(vi)发生在W(vj)之前,则称节点vi反依赖于节点vj
(3)输出依赖:即:两个节点vi和vj先后对数据δ进行写入,则称两个节点vi和vj是输出依赖关系;
(4)输入依赖:即:两个节点vi和vj先后对数据δ进行读取,则称两个节点vi和vj是输入依赖关系。
在DAG图的建模过程中引入数据间的依赖关系的数学抽象,为进一步定义DAG图中的节点之间的关系提供了基础,为进一步优化DAG图任务映射模型提供了支撑。
步骤S202:根据DAG图中的节点与节点之间的数据依赖关系,将DAG图实现并行,包括:
步骤S2021:通过DAG图中节点与节点之间的连接关系确定DAG图中节点与节点之间的数据依赖关系,通过DAG图中节点与节点之间的数据依赖关系划分DAG层:
当在DAG图中出现跨Stream交互且具有流依赖关系的任务节点时,以该节点为新一层的开始进行分层。并根据每一层的输出节点数量确定任务执行的Stream。对于下层的输出节点需要用到上层不同输出节点的结果,采用事件驱动的Stream交互方式。当Stream中的任务队列中的任务节点需要调用其他层或者其他Stream中的计算结果时,条件未满足之前该Stream处于阻塞状态,直到条件满足继续执行,而其他输出节点的Stream执行队列不受影响。
步骤S2022:通过节点与节点之间的连接关系确定数据依赖关系,依据DAG图中的节点与节点之间的数据依赖关系,将流依赖关系、反依赖关系以及输出依赖关系对应的节点分别放入到同一并行分支中,将输入依赖关系对应的两个节点划分到不同的并行分支中:
在处理同一层任务节点的并行分支的时候,会涉及到读数据和写数据两部分操作,为了保证应用执行的正确性,需要保证节点对数据的操作符合应用执行顺序。而流依赖关系、反依赖关系以及输出依赖关系存在读取的先后顺序,将对应的节点放入到同一任务队列中。而输入依赖关系,由于两个节点对同一部分数据进行读取操作,未对数据进行修改,可以将输入依赖关系的两个节点划分到不同的任务队列中。整体的流程如图2所示。其中,v0、v10、v1n、v100、v1000、v1001、v2、v3表示不同的节点、即不同的子任务,Stream10、Stream1001、Stream1n、Stream2、Stream3表示不同的任务流,不同的任务流包含有不同的任务队列。其中v0到v1000由于存在数据的流依赖关系,因此将v0到v1000节点任务部署到Stream10中执行,而v1000、v1001都使用的是v100计算后的数据,属于输入依赖关系,因此,将两个节点分别分配到Stream10和Stream1001两个Stream中执行,和v1000、v1001类似关系的节点还有v10、v1n,因此,v10、v1n两个节点分别分配到Stream10和Stream1n中执行;由于v2、v3的执行需要两个不同Stream中执行的节点的支撑,所以以v2、v3为界,进行分层并分配不同的Stream进行执行。
步骤S203:将并行的DAG图映射到不同粒度的GPU编程模型中;
步骤S2031:对于并行的DAG图,根据所述DAG层和所述数据依赖关系,选择不同的GPU并行粒度,将不同的并行分支分别映射到不同的Stream中;
步骤S2032:对于分配到一个Stream中的不同的子任务,分配不同的线程块和线程数量,实现细粒度并行;CUDA的出现使得GPU并行开发逐渐简单,它为用户提供了多层次的内存结构和多粒度的并行模式。而多Stream流水线并行开发方式,需要结合应用的不同要求,合理的规划内存结构和划分并行粒度;
步骤S2033:结合CUDA编程模型的异步数据传输和异步数据调度,在CPU的配合下,实现基于CPU+GPU异构平台多Stream流水线并行多粒度混合下的DAG图的任务映射;
通过分析CUDA提供的数据传输方式,选择合适的CPU到GPU数据传输方式。CUDA为CPU端的数据存放提供了两种内存模式:Pageable Memory和Pinned Memory,以及两种数据传输的方式:同步数据传输和异步数据传输。同步传输和异步传输最大区别是控制权的返回时间,同步数据传输的控制权只有等数据传输完毕后才会返回,而异步数据传输,命令调用后控制权就返回。从CPU端的Memory结构中发现,使用Pinned Memory进行异步数据传输的安全性要高于Pageable Memory,由于Pageable Memory中的数据在进行异步传输时,可能会发生数据转移而造成数据传输错误。应用在GPU上执行时,需要先将应用所需的数据拷贝到GPU的显存中,而数据的异步传输适合于可以将数据分批处理的应用,而某些必须要完成所有数据传输后才能开始进行各项数据处理的应用来说,异步传输和同步传输的效果差距较小。对于可以分批处理的应用,利用多Stream的流水线并行,异步传输与异步调用相结合,实现数据传输和数据处理的折叠,提高效率,其传输和处理的流程如图3所示。
具体地,为了评估GPU平台下的多Stream并行DAG图任务映射策略的性能,为了表述方便,将GPU平台下的多Stream并行DAG图任务映射策略简写为MS-DAG(multiple StreamDirection Asyclic Graph)任务映射策略,将MS-DAG任务映射策略与HEFT算法进行对比,通过随机的DAG图测试两个算法在应对不同节点数以及不同处理器数量和性能条件下的随机DAG图任务映射效率。并对CUDA中提供的Pageable Memory和Pinned Memory两种内存进行数据传输测试,评估两种内存的传输性能。所述HEFT算法具体参见文献1(Topcuoglu H,Hariri S,Wu M Y.Performance-effective and low-complexity task scheduling forheterogeneous computing[J].IEEE Transactions on Parallel&Distributed Systems,2002,13(3):260-274.)。
a.不同处理器条件下的HEFT算法和MS-DAG任务映射策略对比
为了测试本发明的GPU平台下的多Stream并行DAG图任务映射策略,即GPU平台下的MS-DAG任务映射策略的性能,利用文献1中随机生成的DAG图做模拟,比较MS-DAG任务映射策略与HEFT算法性能。HEFT模拟三个不同处理器对随机DAG图的任务映射,三个处理器在处理不同节点的计算代价如表1所示。随机DAG图如图4所示,其中v1-v10表示不同的节点、即不同的子任务,节点与节点之间的连线上的数字表示不同的计算代价,数字越大计算代价越高。
表1计算代价
分别利用HEFT算法和MS-DAG任务映射策略对图4中的随机DAG图进行任务部署。以表1中节点在各个处理器上的最高时间代价为CPU+GPU多Stream处理的时间代价,由于MS-DAG任务映射策略中任务的处理是在单GPU上完成,因此,任务与任务之间的数据传输时间可以忽略不计,HEFT算法和MS-DAG任务映射策略的时间流水线分别如图5、图6所示,其中v1-v10表示不同的节点、即不同的子任务,Stream1-Stream6表示不同的任务流,0-90表示时钟周期,P1、P2、P3分别表示三个不同处理器:
分析实验结果,可以看出HEFT算法完成图4任务映射需要花费80个时钟周期,MS-DAG任务映射策略只需要花费76个时钟周期,并且,仿真MS-DAG任务映射策略时假设多Stream中的节点计算效率要弱于HEFT中的各个处理器的处理速度,通过图5和图6的任务映射时间线可以看出MS-DAG任务映射策略在进行DAG图任务映射时,效率优于HEFT算法。
为了探究随机DAG图中节点数量以及处理器的数量对任务映射策略效率的影响,利用HEFT算法和MS-DAG任务映射策略进行测试。由于MS-DAG使用的是单GPU进行测试,因此,将多处理器对各个节点最大的计算代价作为MS-DAG任务映射策略的计算代价,在测试处理器数量对算法性能的影响时,固定节点的数量为100。进行仿真测试。
通过图7和图8的实验结果可以看出,MS-DAG任务映射策略在不同节点数下的处理代价小于HEFT算法。在不同节点数量的DAG图任务映射时,MS-DAG任务映射策略执行效率较HEFT算法提高了大约10%。而对于随机的DAG图,传输代价为随机值,造成对于不同处理器下的HEFT算法性能波动较大,但由于MS-DAG任务映射策略是在单GPU上进行任务映射,任务之间的交互代价较小,使得MS-DAG任务映射策略相比于HEFT算法性能更优。
b.相同处理器条件下的HEFT算法和MS-DAG任务映射策略对比
当处理器性能一致时,HEFT算法效果较差,为了探究两个算法在处理器性能一致的条件下的性能效果,分别测试了HEFT算法和MS-DAG任务映射策略在处理器数量固定,各个处理器性能一致的条件下,不同节点数下随机DAG图的任务映射效率。测试结果如下:
通过图9的实验结果可以看出,HEFT算法在处理器性能一致的情况下,各个节点在不同处理器上的代价一致,对于节点的优先级的定义效果较差,数据之间的交互代价较大,严重的影响了算法的性能。MS-DAG任务映射是针对单GPU的任务映射算法,是根据节点之间的依赖关系确定任务执行顺序,且数据存储在单GPU上,数据之间的交互代价较小。通过仿真对比,可以看出:MS-DAG任务映射策略与在处理器性能相同的条件下的HEFT算法相比,性能有了约30%的提升。
c.数据传输测试
由于CPU+GPU异构平台中GPU在进行密集型计算之前需要将数据从CPU上传递到GPU中,因此,为了测试不同的CPU端的内存存储方式对实验的影响,设计了Pinned Memory与Pageable Memory两种内存传输效率的测试。将两种内存存放相同数量的double型数据,采用同样的传输方式,调用相同的cudaMemcpy()函数进行数据的传输,记录传输10000次数据后的总时间,求其均值,得到近似的单次传输时间。其结果如下:
通过图10可以看出,在小数据量的传输过程中,两种内存的传输效率近乎相同,随着数据量的增加,可以很明显的看出:Pinned Memory的传输效率要远远高于PageableMemory的传输效率。因此,使用Pinned Memory来进行数据的存储可以有效提高CPU+GPU异构平台的数据传输效率,实现更高的实时性。
本发明针对CPU+GPU异构平台上的单GPU的任务映射策略算法提出了GPU平台下的多Stream并行DAG任务映射策略,根据应用的执行关系,抽象建模出数据传递的DAG图,依据数据之间的依赖关系优化抽象出来的DAG图模型,实现任务在GPU平台上的任务映射。在DAG图的建模过程中引入数据间的依赖关系的数学抽象,为进一步定义DAG图中的节点之间的关系提供了基础,为进一步优化DAG图任务映射模型提供了支撑。将GPU中的多流并行与DAG图相互结合,将硬件的并行计算能力与DAG图模型高度耦合,可以有效的提高算法的执行效率,提高硬件资源的利用率。GPU平台下的多Stream并行DAG任务映射策略实现了CPU+GPU异构平台上的单DAG图的任务映射,将节点的依赖关系与GPU并行能力相结合,有效的提升了CPU+GPU异构平台的执行效率。性能对比分析结果表明,MS-DAG任务映射策略的任务映射效率相比于处理器性能不一致条件下的HEFT算法有了约10%的提升,相比于处理器性能一致条件下的HEFT算法有了约30%的提升,对于GPU阵列条件下的任务映射策略研究具有重要的指导意义。
以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (5)

1.GPU平台下的多Stream并行DAG图任务映射策略,其特征在于,包括以下步骤:
步骤1:根据应用任务的数据流向将应用任务抽象成一个DAG图,并对DAG图中的节点和有向边的属性进行赋值;
步骤2:利用CUDA提供的多Stream流水线并行,实现多Stream并行DAG图任务映射策略;
步骤3:将并行的DAG图映射到不同粒度的GPU编程模型中。
2.根据权利要求1所述的GPU平台下的多Stream并行DAG图任务映射策略,其特征在于,所述DAG图用四元组[V,E,C,T]表示,其中V为节点集合,每个节点表示一个子任务,E为数据流向集合,C为V中节点对应的计算复杂度集合,T为节点之间数据流的传输时间集合。
3.根据权利要求1所述的GPU平台下的多Stream并行DAG图任务映射策略,其特征在于,所述节点与节点之间的数据依赖关系包括:
流依赖关系:且R(vi)发生在W(vj)之后,则称节点vi流依赖于节点vj
反依赖关系:且R(vi)发生在W(vj)之前,则称节点vi反依赖于节点vj
输出依赖关系:即:两个节点vi和vj先后对数据δ进行写入,则称两个节点vi和vj是输出依赖关系;
输入依赖关系:即:两个节点vi和vj先后对数据δ进行读取,则称两个节点vi和vj是输入依赖关系;
其中vi和vj表示两个节点,R(vi)表示vi节点对数据δ的读取,W(vi)表示vi节点对数据δ的写入。
4.根据权利要求3所述的GPU平台下的多Stream并行DAG图任务映射策略,其特征在于,所述步骤3包括:
通过DAG图中节点与节点之间的连接关系确定DAG图中节点与节点之间的数据依赖关系;
通过DAG图中节点与节点之间的数据依赖关系,划分DAG层;
依据DAG图中的节点与节点之间的数据依赖关系,将流依赖关系、反依赖关系以及输出依赖关系对应的节点分别放入到同一并行分支中,将输入依赖关系对应的两个节点划分到不同的并行分支中。
5.根据权利要求4所述的GPU平台下的多Stream并行DAG图任务映射策略,其特征在于,所述步骤3包括:
对于并行的DAG图,根据所述DAG层和所述数据依赖关系,选择不同的GPU并行粒度,将不同的并行分支分别映射到不同的Stream中;
对于分配到一个Stream中的不同的子任务,分配不同的线程块和线程数量,实现细粒度并行;
结合CUDA编程模型的异步数据传输和异步数据调度,在CPU的配合下,实现基于CPU+GPU异构平台多Stream流水线并行多粒度混合下的DAG图的任务映射。
CN201811063152.0A 2018-09-12 2018-09-12 GPU平台下的多Stream并行DAG图任务映射策略 Active CN109213587B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811063152.0A CN109213587B (zh) 2018-09-12 2018-09-12 GPU平台下的多Stream并行DAG图任务映射策略

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811063152.0A CN109213587B (zh) 2018-09-12 2018-09-12 GPU平台下的多Stream并行DAG图任务映射策略

Publications (2)

Publication Number Publication Date
CN109213587A true CN109213587A (zh) 2019-01-15
CN109213587B CN109213587B (zh) 2021-11-09

Family

ID=64983991

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811063152.0A Active CN109213587B (zh) 2018-09-12 2018-09-12 GPU平台下的多Stream并行DAG图任务映射策略

Country Status (1)

Country Link
CN (1) CN109213587B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109885388A (zh) * 2019-01-31 2019-06-14 上海赜睿信息科技有限公司 一种适用于异构系统的数据处理方法和装置
CN110377340A (zh) * 2019-07-24 2019-10-25 北京中科寒武纪科技有限公司 运算方法、装置及相关产品
CN110968412A (zh) * 2019-12-13 2020-04-07 武汉慧联无限科技有限公司 一种任务执行方法、系统及存储介质
WO2021057465A1 (zh) * 2019-09-26 2021-04-01 中兴通讯股份有限公司 一种对深度学习模型进行并行处理的方法及装置

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110067030A1 (en) * 2009-09-16 2011-03-17 Microsoft Corporation Flow based scheduling
CN103473134A (zh) * 2013-09-23 2013-12-25 哈尔滨工程大学 一种异构多核处理器的依赖任务调度方法
CN103970602A (zh) * 2014-05-05 2014-08-06 华中科技大学 一种面向x86多核处理器的数据流程序调度方法
CN105159737A (zh) * 2015-07-28 2015-12-16 哈尔滨工程大学 一种面向类仿射数组下标应用的参数化并行存储结构模版
CN106055311A (zh) * 2016-05-26 2016-10-26 浙江工业大学 基于流水线多线程的MapReduce任务并行化方法
CN106358003A (zh) * 2016-08-31 2017-01-25 华中科技大学 一种基于线程级流水线的视频分析加速方法
CN106920034A (zh) * 2017-02-07 2017-07-04 云南大学 一种挖掘bpmn编制流程并行性的方法及系统
CN107329828A (zh) * 2017-06-26 2017-11-07 华中科技大学 一种面向cpu/gpu异构集群的数据流编程方法和系统
CN108108225A (zh) * 2017-12-14 2018-06-01 长春工程学院 一种面向云计算平台的任务调度方法
CN108255492A (zh) * 2016-12-28 2018-07-06 学校法人早稻田大学 并行程序的生成方法以及并行化编译装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110067030A1 (en) * 2009-09-16 2011-03-17 Microsoft Corporation Flow based scheduling
CN103473134A (zh) * 2013-09-23 2013-12-25 哈尔滨工程大学 一种异构多核处理器的依赖任务调度方法
CN103970602A (zh) * 2014-05-05 2014-08-06 华中科技大学 一种面向x86多核处理器的数据流程序调度方法
CN105159737A (zh) * 2015-07-28 2015-12-16 哈尔滨工程大学 一种面向类仿射数组下标应用的参数化并行存储结构模版
CN106055311A (zh) * 2016-05-26 2016-10-26 浙江工业大学 基于流水线多线程的MapReduce任务并行化方法
CN106358003A (zh) * 2016-08-31 2017-01-25 华中科技大学 一种基于线程级流水线的视频分析加速方法
CN108255492A (zh) * 2016-12-28 2018-07-06 学校法人早稻田大学 并行程序的生成方法以及并行化编译装置
CN106920034A (zh) * 2017-02-07 2017-07-04 云南大学 一种挖掘bpmn编制流程并行性的方法及系统
CN107329828A (zh) * 2017-06-26 2017-11-07 华中科技大学 一种面向cpu/gpu异构集群的数据流编程方法和系统
CN108108225A (zh) * 2017-12-14 2018-06-01 长春工程学院 一种面向云计算平台的任务调度方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
TSAI, YING-LIN: "Adaptive dual-criteria task group allocation for clustering-based multi-workflow scheduling on parallel computing platform", 《JOURNAL OF SUPERCOMPUTING》 *
于俊清: "面向多核集群的数据流程序层次流水线并行优化方法", 《计算机学报》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109885388A (zh) * 2019-01-31 2019-06-14 上海赜睿信息科技有限公司 一种适用于异构系统的数据处理方法和装置
CN110377340A (zh) * 2019-07-24 2019-10-25 北京中科寒武纪科技有限公司 运算方法、装置及相关产品
WO2021057465A1 (zh) * 2019-09-26 2021-04-01 中兴通讯股份有限公司 一种对深度学习模型进行并行处理的方法及装置
CN110968412A (zh) * 2019-12-13 2020-04-07 武汉慧联无限科技有限公司 一种任务执行方法、系统及存储介质

Also Published As

Publication number Publication date
CN109213587B (zh) 2021-11-09

Similar Documents

Publication Publication Date Title
US11023360B2 (en) Systems and methods for configuring programmable logic devices for deep learning networks
CN109213587A (zh) GPU平台下的多Stream并行DAG图任务映射策略
Chirkin et al. Execution time estimation for workflow scheduling
CN112381220B (zh) 一种神经网络张量处理器
KR20220145848A (ko) 집적 회로 아키텍처 내에서 최적화된 데이터흐름을 위한 지능형 버퍼 추적 시스템 및 방법
JP6834097B1 (ja) 推論のニューラルネットワークアクセラレータのハードウェア固有分割
Everaars et al. Using coordination to parallelize sparse-grid methods for 3-d cfd problems
US9244886B1 (en) Minimum resource fast fourier transform
Grove Performance modelling of message-passing parallel programs
Chakrabarti et al. Resource scheduling for parallel database and scientific applications
Čibej et al. Adaptation and evaluation of the simplex algorithm for a data-flow architecture
Chen et al. Exploiting on-chip heterogeneity of versal architecture for gnn inference acceleration
Hsiung et al. Perfecto: A SystemC-based performance evaluation framework for dynamically partially reconfigurable systems
Koehler et al. Platform-aware bottleneck detection for reconfigurable computing applications
Soldavini et al. Platform-Aware FPGA System Architecture Generation based on MLIR
Banerjee et al. Selective bandwidth and resource management in scheduling for dynamically reconfigurable architectures
Bobda et al. High-level synthesis of on-chip multiprocessor architectures based on answer set programming
Wu et al. A model-based expert system for digital system design
Ko et al. The pipeline decomposition tree: An analysis tool for multiprocessor implementation of image processing applications
Legalov et al. Asynchronous-streamed model for describing dynamically changing parallelism.
Li et al. Scheduling and allocation of single-chip multiprocessors for multimedia
Mirsu et al. Parallel model for Spiking Neural Networks using MATLAB
CN116432722A (zh) 一种评估脉动阵列加速器性能的方法及系统
Glanon Deployment of loop-intensive applications on heterogeneous multiprocessor architectures
Schumacher Performance modeling and analysis in high-performance reconfigurable computing

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