CN114168340B - 一种多核系统同步数据流图实例化并发调度方法 - Google Patents

一种多核系统同步数据流图实例化并发调度方法 Download PDF

Info

Publication number
CN114168340B
CN114168340B CN202111524563.7A CN202111524563A CN114168340B CN 114168340 B CN114168340 B CN 114168340B CN 202111524563 A CN202111524563 A CN 202111524563A CN 114168340 B CN114168340 B CN 114168340B
Authority
CN
China
Prior art keywords
role
sdfg
ins
instance
scheduling
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
Application number
CN202111524563.7A
Other languages
English (en)
Other versions
CN114168340A (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.)
University of Electronic Science and Technology of China
Original Assignee
University of Electronic Science and Technology of China
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 University of Electronic Science and Technology of China filed Critical University of Electronic Science and Technology of China
Priority to CN202111524563.7A priority Critical patent/CN114168340B/zh
Publication of CN114168340A publication Critical patent/CN114168340A/zh
Application granted granted Critical
Publication of CN114168340B publication Critical patent/CN114168340B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5038Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/29Graphical models, e.g. Bayesian networks
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/505Allocation 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 load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5012Processor sets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开一种多核系统同步数据流图实例化并发调度方法,应用于多核处理器数据流图调度领域,针对数据流角色调度的粒度过大、并发度不高;周期可行序列调度未考虑处理器当前状态,且level值计算较复杂;通信感知的自动计时方法对处理器的“忙”、“闲”状态缺少定量描述等问题,本发明首先提出同步数据流图角色实例图构造方法,依据数据平衡原理求解最小执行向量,根据最小执行向量值确定同步数据流图角色实例化个数,构造并发度更高的实例图;其次,改进level值计算方法,缩减在原始同步数据流图上创建额外顶点操作;最后,结合短作业优先和最早完成时间分配策略,提出多核系统同步数据流图实例并发调度方法,提升调度方法的加速比。

Description

一种多核系统同步数据流图实例化并发调度方法
技术领域
本发明属于多核系统数据流图调度领域,特别涉及一种多核系统同步数据流图实例化并发调度技术。
背景技术
同步数据流图(Synchronous dataflow graphs,SDFG)是一种描述流应用程序的表示方法。SDFG使用有向无环图(Directed Acyclic Graph,DAG)表示,顶点表示任务(也称作角色),有向弧指明角色依赖关系,依据同步数据流图中角色输入/输出端口速率固定不变特性,SDFG可以在编译阶段完成角色调度计划。目前常用调度方法有静态调度、自动计时调度。静态调度一般应用在数据流系统调度,自动计时调度主要应用在强实时嵌入式系统调度。随着多核、众核等高性能服务器的出现,静态调度的并行化研究逐渐引起重视。
多核系统同步数据流图静态调度并行优化旨在利用多核处理器资源,缩短同步数据流程序的执行时间,从而提高同步数据流图计算效率。同步数据流图在多核平台下的静态调度代表性方法主要有两类:周期可行序列调度(Period Admissible SequentialSchedule,PAPS)、通信感知的自动计时执行(Communication Aware Self-TimedExecution,CA-STE)。PAPS是基于Hu-level的并行调度方法,level值表示当前角色到终点角色的执行时间。处理器划分依据其编号从小到大顺序分配可调度角色,未考虑处理器的当前状态;同时,level值计算需要对原始同步数据流图创建额外顶点,实现较为复杂。CA-STE需要将SDFG转换为同构SDFG,然后计算角色的就绪时间,依据最早就绪时间调度角色,没有考虑角色之间的层次关系。同时,将角色映射到处理器时只考虑处理器的“忙”、“闲”这两种状态,忙闲程度缺少定量描述,导致处理器使用不均衡。
发明内容
为解决上述技术问题,本发明提出一种多核系统同步数据流图实例化并发调度方法,本发明首先提出一种同步数据流图角色实例图构造方法,依据数据平衡原理求解最小执行向量,根据最小执行向量值确定同步数据流图角色实例化个数,并构造SDFG的角色实例图,提高并发度;其次,改进level值计算方法,缩减在原始同步数据流图上创建额外顶点操作;最后,结合短作业优先和最早完成时间分配策略,提出一种多核系统同步数据流图实例并发调度方法,进一步提升调度方法的加速比。
本发明采用的技术方案为:一种多核系统同步数据流图实例化并发调度方法,包括:
S1、依据数据平衡原理对SDFG角色实例化个数进行求解,结果用n维向量q代表;
S2、根据向量q数值,对SDFG角色进行实例化,构建SDFG实例图;
S3、对SDFG实例图进行逆向递归求解Level值;
S4、采用最短作业优先、最早完成时间混合调度策略,把步骤S3得到的带Level值的SDFG实例图划分到处理器多核单元,生成静态调度计划序列。
步骤S1中SDFG采用二元组(V,E)进行表示,其中,V表示角色集合,V={α12,...,αn},αj表示第j个角色,j=1...n,n=|V|,|V|代表SDFG角色个数,αj具有一个或多个输入或输出端口,E表示有向弧集合,
Figure BDA0003409645040000021
ei表示第i个有向弧,i=1...m,m=|E|,|E|代表有向弧个数;
还包括采用src(ei)表示ei弧尾角色的数据生成速率,des(ei)表示ei弧头角色的数据消耗速率,用|E|维向量b(t)代表在t时刻SDFG各有向弧驻留Tokens个数。
步骤S1还包括建立描述SDFG的有向弧角色拓扑矩阵Γ,矩阵Γ中的行表示有向弧,矩阵Γ中的列表示角色,矩阵Γ中的元素表示有向弧与角色的关系,矩阵Γ中的第i行j列位置元素取值包括三种情况,分别是正值、负值、0,当取值为正值时,表示ei弧尾角色αj的数据生成速率;当取值为负值时,表示ei弧头角色αj的数据消耗速率;当矩阵Γ中的元素取值为0时,表示αj与ei无关联。
步骤S1所述求解具体过程为:
用|V|维向量q代表在单位周期内每个角色创建的实例个数,q与Γ满足产生/消耗数据平衡关系,表达式为:
Γq=0
根据rank(Γ)=|V|-1,得到向量q的解;
其中,rank(Γ)表示拓扑矩阵Γ的秩。
步骤S2所述实例图构建过程为:
A1、设i代表集合中的角色编号,初始化i=1,角色实例的计数向量ICount,ICount=O,O为零向量;
A2、按编号i递增顺序遍历角色集合V;
A3、对于当前遍历的角色αi,判断
Figure BDA0003409645040000031
是否等于qi,若等于,则执行步骤A4;否则执行步骤A5;其中,
Figure BDA0003409645040000032
表示αi对应的角色实例的计数,qi表示向量q中αi所创建的实例个数;
A4、更新i的值,具体的:将i自加1;然后判断更新后的i是否小于或等于n,若是则执行步骤A2;否则执行步骤A11;
A5、根据
Figure BDA0003409645040000033
的计算结果判断当前角色是否可调度,若不可调度,则跳转步骤A4;若可调度,则执行步骤A6;
A6、更新
Figure BDA0003409645040000034
的值,具体的:将
Figure BDA0003409645040000035
自加1;并创建αi的第
Figure BDA0003409645040000036
个实例
Figure BDA0003409645040000037
将创建的实例加入实例序列APG_INS;
A7、判断αi的前驱角色集合是否为空,若是,则执行步骤A11;否则执行步骤A8;
A8、遍历αi的前驱角色集合,得到前驱角色η和与αi关联的有向弧ej
A9、计算
Figure BDA0003409645040000038
如果d>0,则将角色η的前d个实例与角色αi的新建实例
Figure BDA0003409645040000039
建立前驱关系;否则重置d=0;然后执行步骤A10;
A10、更新有向弧向量
Figure BDA00034096450400000310
转至步骤A4;
A11、判断计数向量是否等于Jq,若是,则执行A12;否则令i=1,然后转至A2;
A12、所有角色遍历完成,输出最终的实例序列APG_INS。
步骤A5具体为:对于SDFG中的角色αi,在某一个时刻t,如果αi当前执行次数未达到qi,并且向量b(t+1)中不含负值,则称αi是可被调度的。
步骤S3具体的:根据实例序列APG_INS,基于逆向递归求解得到的各角色Level值;逆向递归求解SDFG实例图各角色实例Level值的过程为:
B1、初始化每个顶点的Level值为该实例的执行时间;
B2、逆序遍历SDFG的DAG邻接表头顶点,获得顶点实例;
B3、递归遍历顶点实例的前驱顶点,计算new_val=当前前驱顶点的执行时间+当前顶点的level值,若new_val大于当前前驱顶点的level值,那么更新当前前驱顶点的level值为new_val;否则保持当前前驱顶点的level值;
B4、判断是否已遍历完成当前顶点的所有前驱顶点,则是执行步骤B5,否则执行步骤B3;
B5、判断是否已遍历完成所有顶点,若是则结束,否则返回步骤B2。
步骤S4具体的:采用最短作业优先、最早完成时间混合调度策略,把步骤S3构建的带有Level值的SDFG实例图划分到处理器多核单元,生成静态调度计划序列,具体实现过程为:
C1、初始化每个处理器的调度队列和clp;其中,clp表示处理器p的结束时间变量;
C2、SDFG的DAG中所有顶点依据level值降序排列,得到序列L;
C3、取出序列L中当前level最大的顶点,加入待调度序列SW;
C4、序列SW依据实例的执行时间升序排列;
C5、遍历序列SW,得到待调度实例s_ins;
C6、获取到结束时间最小的处理器p;
C7、如果clp>s_ins.sta,那么s_ins.sta←clp;否则保持s_ins.sta值;←表示赋值;
C8、更新s_ins所有后继实例suc的开始时间:suc.sta=s_ins.sta+s_ins.et,并将s_ins加入处理器p调度队列;
C9、更新处理器p的结束时间变量:clp←s_ins.sta+s_ins.et。
本发明的有益效果:现有的调度方法,如果终点角色有多个,需新建一个顶点连接所有的终点顶点;存在计算最长路径繁琐和新增顶点的问题,本发明改进level计算方式,采用逆向递归计算level,缩减在原始同步数据流图上创建额外顶点操作;其次,本发明提出一种同步数据流图角色实例图构造方法,依据数据平衡原理求解最小执行向量,根据最小执行向量值确定同步数据流图角色实例化个数,并构造实例图;采用实例化方法可以构建更细粒度的SDFG实例化图,调度对象的粒度更细,更容易利用并发性,提升调度执行效率。最后,结合短作业优先和最早完成时间分配策略,提出一种多核系统同步数据流图实例并发调度方法,利用多核处理器并考虑负载均衡性,进一步提升调度方法的加速比。
附图说明
图1为本发明实施例提供的SDFG示意图;
图2为本发明的一种多核系统同步数据流图实例化并发调度方法流程图;
图3为同步数据流图及其有向无环图生成与调度;
其中,(a)为同步数据流图示例,(b)为单周期(J=1)下重构的有向无环图及并行调度结果,(c)为双周期(J=2)下重构的有向无环图及并行调度结果;
图4为LSEFT算法并行调度结果;
图5为本发明方法与现有技术的平均加速比较。
具体实施方式
为便于本领域技术人员理解本发明的技术内容,下面结合附图对本发明内容进一步阐释。
1、首选对本发明的方法所基于的SDFG符号进行说明:
SDFG是数据流程序的图形化表示。其中,角色具有输入/输出端口,端口具有数据消耗/生成速率;有向弧指明角色间数据依赖关系;角色之间传递的数据称作Token,采用先进先出(First In First Out,FIFO)队列存储。Token是任意数据类型的统称,具体可以是整型、实型、矩阵等,有数据依赖关系的角色根据其事先约定的数据类型写出或读入数据。每一个有向弧对应一个FIFO队列,队首连接一个角色的输入端口,队尾连接另一个角色的输出端口。SDFG有向弧上的延迟(Delay,D)表示FIFO队列的初始tokens。
采用二元组(V,E)定义SDFG,角色集合为V={α12,...,αn},n=|V|,αj表示第j个角色,j=1...n,有向弧集合为
Figure BDA0003409645040000051
ei表示第i个有向弧,i=1...m。αj可以具有一个或多个输入/输出端口,即顶点入度/出度大于1。src(ei)表示ei弧尾角色(有向弧起始的角色)的数据生成速率,des(ei)表示ei弧头角色(有向弧指向的角色)的数据消耗速率。
定义拓扑矩阵Γ,行表示有向弧,列表示角色,建立描述SDFG的有向弧角色关系矩阵(|E|×|V|矩阵)。Γ中第i行j列位置元素取值对应有正、负、0三个分类,正值表示ei弧尾角色的数据生成速率,负值表示ei弧头角色的数据消耗速率,0表示角色αj与有向弧ei无关联。如图1所示给出一个SDFG示意图,顶点圆圈中的数字表示角色编号,有向弧上的数字表示有向弧编号,有向弧两个端点处的字母表示有向弧尾角色的数据生成速率和有向弧头角色的数据消耗速率,对应的拓扑矩阵如下:
Figure BDA0003409645040000061
|V|代表SDFG角色个数,|E|代表有向弧个数,采用|V|维向量s(t)表示t时刻计划调度角色。结合图1示例,假设s(t)=(0,1,0),则代表t时刻调度角色α2,也可记作
Figure BDA0003409645040000062
表示角色αi被调度,这里的下标i=2;用|E|维向量b(t)代表在t时刻SDFG各有向弧驻留Tokens个数,b(0)表示SDFG各有向弧零时刻初始Tokens个数,记作:xD,x∈N,D代表初始时刻有向弧上有驻留数据(Delay Token)。调度方法可以通过b(0)和Γ判定0时刻SDFG的可启用角色。
2、其次,对本发明的SDFG调度模型进行说明:
对于一个闭环系统,SDFG可以代表一个实际应用的系统流程,SDFG调度先从0时刻可启用角色开始,可启用角色的生成数据满足后继角色的输入端口的数据要求就会自动触发后继角色执行(触发执行是调度方法决定的),直至SDFG中所有角色至少调度执行一次为止。将这一调度执行过程称作“SDFG一次完整执行”。SDFG执行是一个周期性的迭代,每一次迭代对应SDFG一次完整执行,即:SDFG周期性的调度执行SDFG一次完整执行,直至周期性迭代执行次数达到事先设定的迭代周期值(Iteration Period Value,IPV)而停止。这里的迭代周期值取值为整数,最小取值为1,实际应用中可以根据SDFG图模型需要执行的次数来确定,比如SDFG图模型执行1000次,就设定迭代周期值为1000。
一般地,SDFG的迭代执行具有两个假设:(1)SDFG是一个连通图;(2)SDFG角色可以无限制地执行(FIFO队列存储空间无限)。在SDFG中,角色受限于输入/输出端口速率的不同,SDFG完整执行一次意味着各角色可能需要调度执行不同次数,例如:当前角色需要执行多次才能启动下游角色执行一次;或者当前角色执行一次,其下游角色执行多次等等。将SDFG各角色最小的一次完整迭代(满足SDFG中每个角色至少执行一次)称作“单位周期(Unit Period,UP)”。
3、本发明基于上述SDFG符号及SDFG调度模型采用的调度方法如图2所示,具体包括以下内容:
为了充分利用多核处理器,本发明提出基于SDFG角色实例并发调度的设计方法,包括:
31、依据数据平衡原理对SDFG角色实例化个数进行求解,结果用|V|维向量q代表;
32、根据向量q数值,对SDFG角色进行实例化构建,即:创建SDFG实例图(角色代表模型的抽象定义,实例代表具有角色相同行为和属性抽象定义的内存对象,调度方法实际调度对象是实例);
33、对SDFG实例图,采用逆向递归求解各实例的Level值;
34、考虑负载均衡,采用最短作业优先、最早完成时间混合调度策略,把SDFG实例划分到处理器多核单元,生成静态调度计划序列。
步骤31所述SDFG角色的实例化个数求解过程为:
用|V|维向量q代表在单位周期内每个角色创建的实例个数,称作“最小执行向量”,q与Γ满足产生/消耗数据平衡关系,其关系表达式如式(1):
Γq=0                                (1)
式(1)存在最小正整数解的充要条件是rank(Γ)=|V|-1,其中rank(Γ)表示拓扑矩阵的秩。拓扑矩阵Γ信息已知,(1)式等价为一个线性方程组,可以求解出最小执行向量q。这个求解过程称作“角色最小实例个数求解”。
定义1同步数据流图可被调度:对于一个SDFG,如果q存在正整数解,则SDFG满足一致性条件,即:SDFG可被调度。
在一个实例的整个生命周期中,会消耗和产生新的Tokens,在实例执行完成后由于被调度角色实例的执行,其FIFO数据存储队列发生变化,因此需要同步更新b(t),用向量v(t)表示t时刻被调度角色,更新算式如式(2):
b(t+1)=b(t)+Γv(t)                              (2)
定义2角色可被调度:对于SDFG中的角色αi,在某一个时刻t,如果αi当前执行次数未达到qi,并且b(t+1)中不含负值,则称αi是可被调度的。
步骤32所述SDFG实例图构造求解过程为:
SDFG是在概念层次上描述角色的数据流关系,由于数据率的不一致,角色调度执行次数会有不同。而在计算机上执行SDFG,调度对象实际是角色的实例。多核系统拥有多个处理器核心(计算单元),具有并发计算执行的资源优势。因此,本发明所述方法主要研究如何利用多个处理器核心制定SDFG实例对象的静态调度计划。选择SDFG实例图作为多核系统同步数据流静态调度研究对象,主要有以下优点:(1)SDFG实例图消除了数据率不一致问题;(2)实例可以直接映射为计算机内存对象,更容易实现;(3)实例是角色粒度的细化,可以提高SDFG的并发执行度,在多核系统中更有利于提升执行效率。
所构造的SDFG角色实例图是一个无环优先级图(Acyclic Precedence Graph,APG)。假设一个SDFG迭代周期值IPV=J,J≥1,J为最小调度单元,最小执行向量为q,角色集合为V={α12,...,αn},n=|V|,角色个数为n,有向弧集合为
Figure BDA0003409645040000081
有向弧个数为m,拓扑矩阵为Γ|E|×|V|,有向弧初始时刻FIFO向量为b(0)。设角色实例的计数向量ICount=O,O为零向量,则最小调度单元所确定的角色实例的调度次数可表示为向量Jq=J*q,满足|ICount|=|Jq|=n。以J作为最小调度单元时,SDFG实例图的构造过程具体步骤描述如下:
A1、设i代表集合中的角色编号,初始化i=1,ICount=O;
A2、按编号i递增顺序遍历角色集合V;
A3、设当前遍历角色为αi,判断
Figure BDA0003409645040000082
若相等,则执行A4;否则,执行A5;
A4、i=i+1并判断i?≤n,若是,则执行A2;若否,则跳转A11。
A5、根据定义2判断角色αi是否可调度,具体的通过
Figure BDA0003409645040000083
的计算结果判断是否可调度。若不可调度,则跳转A4;若可调度,则执行A6;
Figure BDA0003409645040000084
在这里用于表示当前时刻被调度的角色是αi
A6、
Figure BDA0003409645040000085
并创建角色αi的第
Figure BDA0003409645040000086
个实例
Figure BDA0003409645040000087
将其加入实例序列APG_INS;
A7、判断角色αi的前驱角色集合是否为空,若是,则跳转A11;若否,则执行A8;本领域技术人员应知,在SDFG中角色αi包括前驱角色集合与后继角色集合,前驱角色集合与后继角色集合通过有向弧的弧尾、弧头指向关系来确定;角色αi的前驱角色集合即所有弧尾指向角色αi的弧头所指向的角色集合。
A8、遍历αi的前驱角色集合,得到前驱角色η和与αi关联的有向弧ej
A9、计算
Figure BDA0003409645040000091
如果d>0,则将角色η的前d个实例与角色αi的新建实例
Figure BDA0003409645040000092
建立前驱关系;否则重置d=0;然后执行步骤A10;Γ(eji)表示拓扑矩阵中有向弧ej所在行与角色αi所在列的交叉位置矩阵元素的值,Γ(ej,η)表示拓扑矩阵中有向弧ej所在行与角色η所在列的交叉位置矩阵元素的值,有正值、负值、0三种情况,文中有阐述。
Figure BDA0003409645040000093
为向上取整符号。
A10、更新有向弧向量
Figure BDA0003409645040000094
跳转A4;
A11、判断计数向量是否等于Jq,即:ICount=Jq?,若是,则执行A12;否则执行令i=1,跳转A2;
A12、所有角色遍历完成,输出SDFG实例序列APG_INS,结束退出。
步骤33所述SDFG角色实例划分包括以下分步骤:
33、对SDFG实例图,采用逆向递归求解各实例的Level值:
定义3角色αi的level值是αi到终点角色的最长路径中所有角色的执行时间总和,其计算表达式如式(3):
Figure BDA0003409645040000095
式(3)中S表示当前角色到终点角色(出度为0的角色)的最长路径中所包含角色的集合,αi表示当前角色,αj表示集合S中的角色,et(αj)表示αj的执行时间。如果终点角色有多个,需新建一个顶点连接所有的终点顶点。针对计算最长路径繁琐和新增顶点的问题,本发明改进level计算方式,提出逆向递归计算方法,具体描述如下:
逆向递归求解level方法:
输入:DAG实例序列APG_INS
输出:带Level值的DAG实例序列
初始化每个顶点的Level值为该实例的执行时间
(1)逆序遍历DAG邻接表头顶点,获得顶点ins;
(2)递归遍历ins的前驱顶点,直到为空的level值;否则,更新前驱顶点的level值为new_val;
(2.1)计算new_val=当前顶点前驱顶点的执行时间+当前顶点的level值;
(2.2)如果new_val大于前驱顶点的level值,那么更新前驱顶点的level值为new_val;
(2.3)如果new_val小于或等于前驱顶点的level值,那么保持前驱顶点的level值;
(3)如果ins的前驱顶点有多个,选取下一个前驱顶点递归遍历,跳到(2);
(4)所有的顶点遍历完成,算法结束。
34、LSEFT混合调度策略
图3(a)给出一个同步数据流示例图,已知角色的执行时间,根据步骤A1-A12得到对应的SDFG实例序列APG_INS,即图3(a)中的优先级顺序。现有的PAPS算法优先选择level值大的实例调度,level相同的实例认为是可以分配到不同处理器上。如图3(b)所示当level值相同的实例与处理器数量发生冲突时,使用长作业优先策略,即C被调度到P0处理器,PAPS算法在单周期、双周期下的调度结果分别如图3(b)、图3(c)所示,图3(b)、(c)中角色左上角为level值。如图3(c)所示,在C1和B1调度完成后,C2,A3和A4可以并行。C2的执行时间最长,C2的优先级最大,被调度到P0处理器。显然最优的调度应调度A3到C1后面,然后再调度C2或者A4。
为解决现有技术中调度不均衡的问题,本发明采用LSEFT并行调度优化方法,考虑到处理器在运行过程中自身状态,加入最短作业优先和最早完成时间处理器划分策略。表1给出算法使用的符号定义,LSEFT算法具体描述如下:
表1算法描述符号定义
Figure BDA0003409645040000101
LSEFT方法:
输入:带Level值的DAG实例序列
输出:SDFG静态调度计划,即:调度列表集合
Figure BDA0003409645040000102
Figure BDA0003409645040000103
表示第i个实例分配给处理p执行,ins.sta表示执行开始时间、ins_et表示执行时间。
初始化每个处理器的调度队列和clp
(1)DAG中所有顶点依据level值降序排列,得到序列L;
(2)取出序列L中当前level最大的顶点,加入待调度序列SW;
(3)序列SW依据实例的执行时间升序排列;
(4)遍历序列SW,得到待调度实例s_ins;
(5)获取到结束时间最小的处理器p;
(6)如果clp>s_ins.sta,那么用clp值更新s_ins.sta值,即:s_ins.sta←clp;否则保持s_ins.sta值不变;
其中,s_ins.sta表示待调度实例s_ins的执行开始时间;
(7)更新s_ins所有后继实例suc的开始时间:suc.sta=s_ins.sta+s_ins.et,并将s_ins加入处理器p调度队列;其中,s_ins.et表示实例s的执行时间;
(8)更新处理器p的结束时间变量:clp←s_ins.sta+s_ins.et(注:逆向递归算法在LSEFT算法之前执行)。
在多核系统(配置为CPU处理器:Intel i7-9700kf 8核心,主频:3.60GHz,内存为16GB)下,本发明所述方法通过实验,分别与PAPS,PAPS-B(加入负载均衡策略)两种调度方法进行比较。
为更好量化算法优劣,如式(4)所示,定义SDFG加速比ξ:
Figure BDA0003409645040000111
其中,SFT表示调度方法在单位周期下单核心所有实例执行结束的时间,FT表示并行调度方法在J倍单位周期下所有实例执行结束的时间。测试在不同周期,不同处理器核心数量的情况下的加速比,结果如表2所示。
表2特定SDFG下3种方法的加速比
Figure BDA0003409645040000121
从表2得知,当调度的角色数量较多,处理器数量较多的情况下,LSEFT算法的并行加速效果更优异。
为进一步验证本发明所述方法的优势,使用SDFG随机生成器生成1000个SDFG。其中,生成的SDFG中的角色数服从(1,50)的均匀分布,有向弧数服从(1,80)的均匀分布,端口速率和执行时间服从(1,3)的均匀分布。模拟处理器核心数分别为2,4和8,验证在这三种处理器核心下的平均加速比,结果如图5所示。
从图5可以进一步得出,改进后的LSEFT算法随着处理器核心数量增大,其加速比相比PAPS算法和PAPS-B算法也在增大。在8核心仿真情况下的加速比相比PAPS算法增加了10.17%。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

Claims (3)

1.一种多核系统同步数据流图实例化并发调度方法,其特征在于,包括:
S1、依据数据平衡原理对SDFG角色实例化个数进行求解,结果用n维向量q代表;步骤S1中SDFG采用二元组(V,E)进行表示,其中,V表示角色集合,V={α12,...,αn},αi表示第i个角色,i=1...m,n=|V|,|V|代表SDFG角色个数,αi具有一个或多个输入或输出端口,E表示有向弧集合,
Figure FDA0004107271300000011
ej表示第j个有向弧,j=1...m,m=|E|,|E|代表有向弧个数;
还包括采用src(ei)表示ei弧尾角色的数据生成速率,des(ei)表示ei弧头角色的数据消耗速率,用|E|维向量b(t)代表在t时刻SDFG各有向弧驻留Tokens个数;
步骤S1还包括建立描述SDFG的有向弧角色拓扑矩阵Γ,矩阵Γ中的行表示有向弧,矩阵Γ中的列表示角色,矩阵Γ中的元素表示有向弧与角色的关系,矩阵Γ中的第i行j列位置元素取值包括三种情况,分别是正值、负值、0,当取值为正值时,表示ei弧尾角色αj的数据生成速率;当取值为负值时,表示ei弧头角色αj的数据消耗速率;当矩阵Γ中的元素取值为0时,表示αj与ei无关联;
步骤S1所述求解具体过程为:
用|V|维向量q代表在单位周期内每个角色创建的实例个数,q与Γ满足产生/消耗数据平衡关系,表达式为:
Γq=0
根据rank(Γ)=|V|-1,得到向量q的解;
其中,rank(Γ)表示拓扑矩阵Γ的秩;
S2、根据向量q数值,对SDFG角色进行实例化,构建SDFG实例图;步骤S2所述实例图构建过程为:
A1、设i代表集合中的角色编号,初始化i=1,角色实例的计数向量ICount,ICount=O,O为零向量;
A2、按编号i递增顺序遍历角色集合V;
A3、对于当前遍历的角色αi,判断
Figure FDA0004107271300000012
是否等于qi,若等于,则执行步骤A4;否则执行步骤A5;其中,
Figure FDA0004107271300000021
表示αi对应的角色实例的计数,qi表示向量q中αi所创建的实例个数;
A4、更新i的值,具体的:将i自加1;然后判断更新后的i是否小于或等于n,若是则执行步骤A2;否则执行步骤A11;
A5、根据
Figure FDA0004107271300000022
的计算结果判断当前角色是否可调度,若不可调度,则跳转步骤A4;若可调度,则执行步骤A6;
A6、更新
Figure FDA0004107271300000023
的值,具体的:将
Figure FDA0004107271300000024
自加1;并创建αi的第
Figure FDA0004107271300000025
个实例
Figure FDA0004107271300000026
将创建的实例加入实例序列APG_INS;
A7、判断αi的前驱角色集合是否为空,若是,则执行步骤A11;否则执行步骤A8;
A8、遍历αi的前驱角色集合,得到前驱角色η和与αi关联的有向弧ej
A9、计算
Figure FDA0004107271300000027
如果d>0,则将角色η的前d个实例与角色αi的新建实例
Figure FDA0004107271300000028
建立前驱关系;否则重置d=0;然后执行步骤A10;
A10、更新有向弧向量
Figure FDA0004107271300000029
转至步骤A4;
A11、判断计数向量是否等于Jq,若是,则执行A12;否则令i=1,然后转至A2;
A12、所有角色遍历完成,输出最终的实例序列APG_INS;
S3、对SDFG实例图进行逆向递归求解Level值;Level值表示当前角色到终点角色的执行时间;
S4、采用最短作业优先、最早完成时间混合调度策略,把步骤S3得到的带Level值的SDFG实例图划分到处理器多核单元,生成静态调度计划序列;步骤S4具体的:采用最短作业优先、最早完成时间混合调度策略,把步骤S3构建的带有Level值的SDFG实例图划分到处理器多核单元,生成静态调度计划序列;实现过程为:
C1、初始化每个处理器的调度队列和clp;其中,clp表示处理器p的结束时间变量;
C2、SDFG的DAG中所有顶点依据level值降序排列,得到序列L;
C3、取出序列L中当前level最大的顶点,加入待调度序列SW;
C4、序列SW依据实例的执行时间升序排列;
C5、遍历序列SW,得到待调度实例s_ins;
C6、获取到clp最小的处理器p;
C7、如果clp>s_ins.sta,那么s_ins.sta←clp;否则保持s_ins.sta不变;←表示赋值;s_ins.sta表示实例s_ins的执行开始时间;
C8、更新s_ins所有后继实例suc的开始时间:suc.sta=s_ins.sta+s_ins.et,并将s_ins加入处理器p调度队列;s_ins.et表示实例s_ins的执行时间;
C9、更新处理器p的结束时间变量:clp←s_ins.sta+s_ins.et。
2.根据权利要求1所述的一种多核系统同步数据流图实例化并发调度方法,其特征在于,步骤A5具体为:对于SDFG中的角色αi,在某一个时刻t,如果αi当前执行次数未达到qi,并且向量b(t+1)中不含负值,则称αi是可被调度的。
3.根据权利要求2所述的一种多核系统同步数据流图实例化并发调度方法,其特征在于,步骤S3具体的:根据实例序列APG_INS,基于逆向递归求解得到的各角色Level值;逆向递归求解SDFG实例图各角色实例Level值的过程为:
B1、初始化每个顶点的Level值为该实例的执行时间;
B2、逆序遍历SDFG的DAG邻接表头顶点,获得顶点实例;
B3、递归遍历顶点实例的前驱顶点,计算new_val=当前前驱顶点的执行时间+当前顶点的level值,若new_val大于当前前驱顶点的level值,那么更新当前前驱顶点的level值为new_val;否则保持当前前驱顶点的level值;
B4、判断是否已遍历完成当前顶点的所有前驱顶点,则是执行步骤B5,否则执行步骤B3;
B5、判断是否已遍历完成所有顶点,若是则结束,否则返回步骤B2。
CN202111524563.7A 2021-12-14 2021-12-14 一种多核系统同步数据流图实例化并发调度方法 Active CN114168340B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111524563.7A CN114168340B (zh) 2021-12-14 2021-12-14 一种多核系统同步数据流图实例化并发调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111524563.7A CN114168340B (zh) 2021-12-14 2021-12-14 一种多核系统同步数据流图实例化并发调度方法

Publications (2)

Publication Number Publication Date
CN114168340A CN114168340A (zh) 2022-03-11
CN114168340B true CN114168340B (zh) 2023-04-18

Family

ID=80486268

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111524563.7A Active CN114168340B (zh) 2021-12-14 2021-12-14 一种多核系统同步数据流图实例化并发调度方法

Country Status (1)

Country Link
CN (1) CN114168340B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112817708A (zh) * 2021-01-05 2021-05-18 中国电子科技集团公司第五十四研究所 一种异构多核处理器系统中有向无环图任务的调度方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510749B2 (en) * 2010-05-27 2013-08-13 International Business Machines Corporation Framework for scheduling multicore processors
CN103699365B (zh) * 2014-01-07 2016-10-05 西南科技大学 一种众核处理器结构上避免无关依赖的线程划分方法
CN107247628B (zh) * 2017-06-22 2019-12-20 华中科技大学 一种面向多核系统的数据流程序任务划分与调度方法
CN109977514B (zh) * 2019-03-19 2021-02-09 电子科技大学 一种雷达同步数据流图模型调度序列生成方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112817708A (zh) * 2021-01-05 2021-05-18 中国电子科技集团公司第五十四研究所 一种异构多核处理器系统中有向无环图任务的调度方法

Also Published As

Publication number Publication date
CN114168340A (zh) 2022-03-11

Similar Documents

Publication Publication Date Title
CN104965761B (zh) 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法
WO2021057746A1 (zh) 神经网络处理方法、装置、计算机设备及存储介质
Rashidi et al. Astra-sim: Enabling sw/hw co-design exploration for distributed dl training platforms
CN103729246B (zh) 一种任务调度方法和装置
CN103473134A (zh) 一种异构多核处理器的依赖任务调度方法
Thibault On runtime systems for task-based programming on heterogeneous platforms
CN114647515A (zh) 一种面向gpu集群的动态资源调度方法
CN107943568A (zh) 综合模块化航空电子系统两级调度模型与原型平台
Fell et al. Force-directed scheduling for data flow graph mapping on coarse-grained reconfigurable architectures
CN108170861B (zh) 一种基于动态规划的分布式数据库系统协同优化方法
Canon et al. Online scheduling of task graphs on heterogeneous platforms
Wu et al. Using hybrid MPI and OpenMP programming to optimize communications in parallel loop self-scheduling schemes for multicore PC clusters
Kelefouras et al. Workflow simulation and multi-threading aware task scheduling for heterogeneous computing
CN114168340B (zh) 一种多核系统同步数据流图实例化并发调度方法
CN111090613B (zh) 一种基于图分割的低复杂度软硬件划分与调度方法
CN115686795A (zh) 一种基于dag的启发式任务调度方法
Bożejko A new class of parallel scheduling algorithms
Herrmann et al. Memory-aware list scheduling for hybrid platforms
Steinberger On dynamic scheduling for the gpu and its applications in computer graphics and beyond
Niknam et al. Resource optimization for real-time streaming applications using task replication
CN112817708A (zh) 一种异构多核处理器系统中有向无环图任务的调度方法
CN114860417B (zh) 多核神经网络处理器及用于该处理器多任务分配调度方法
Beaumont et al. MadPipe: Memory aware dynamic programming algorithm for pipelined model parallelism
Yuan et al. Efficient scheduling of DAG tasks on multi-core processor based parallel systems
Eyraud-Dubois et al. Independent tasks on 2 resources with co-scheduling effects

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