CN110231986B - 基于多fpga的动态可重配置的多任务调度和放置方法 - Google Patents

基于多fpga的动态可重配置的多任务调度和放置方法 Download PDF

Info

Publication number
CN110231986B
CN110231986B CN201910526553.3A CN201910526553A CN110231986B CN 110231986 B CN110231986 B CN 110231986B CN 201910526553 A CN201910526553 A CN 201910526553A CN 110231986 B CN110231986 B CN 110231986B
Authority
CN
China
Prior art keywords
fpga
task
subtasks
processed
subtask
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
CN201910526553.3A
Other languages
English (en)
Other versions
CN110231986A (zh
Inventor
张海涛
孙滋唱
张泽晗
马华东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN201910526553.3A priority Critical patent/CN110231986B/zh
Publication of CN110231986A publication Critical patent/CN110231986A/zh
Application granted granted Critical
Publication of CN110231986B publication Critical patent/CN110231986B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • 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
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5012Processor sets

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本申请实施例提供的基于多FPGA的动态可重配置的多任务调度和放置方法、装置,通过任务级和子任务级的两阶段调度和放置方法,实现了在多FPGA系统的多任务调度和放置,在任务调度阶段,考虑任务相似性和资源需求相似性,为每个任务选择合适的计算单元,以减少重新配置和资源争用的可能性,在子任务调度阶段,综合考虑子任务的调度顺序和放置位置,以充分利用FPGA的硬件资源,利用FPGA可重配置能力使任务高度并行化,从而减小多任务的最小完工时间。

Description

基于多FPGA的动态可重配置的多任务调度和放置方法
技术领域
本申请涉及计算机应用技术领域,特别是基于多FPGA的动态可重配置的多任务调度和放置方法。
背景技术
近年来,随着云计算、大数据等信息技术的不断发展以及数据规模的不断增长,基于FPGA(Field-Programmable Gate Array,现场可编程门阵列)的加速器正以其高性能、低功耗和可重构等特性逐渐成为计算密集型任务的主流异构加速设备。然而,如何在多FPGA系统中高效地进行多任务调度,仍然具有很大的挑战。目前,多任务的调度方法主要分为三类。
第一类是在多核和多处理器系统上的任务调度算法:通过将运行时不同处理单元的资源、能耗等信息作为调度策略的依据为任务选取合适的调度策略,优化系统的整体性能。此类传统的调度算法并不能考虑FPGA中的任务配置,任务放置等问题,不能完全适用于多FPGA系统中的任务调度问题。
第二类主要集中于在单FPGA上的任务调度:此类调度方法大多在单FPGA上根据任务的资源需求,通过合理的资源放置策略减少资源碎片化或者通过合理的任务调度减少重配置开销,进而提高任务加速的性能。这类调度方法只是考虑了单FPGA处理单元中的任务调度和放置而没有考虑多FPGA计算单元的具体情况进行任务调度,导致无法充分利用多FPGA计算资源。
最后是多FPGA系统中的任务调度:此类调度方法通过考虑资源占用、模块重用等不同因素将任务调度到合适的FPGA计算单元,提高整体任务的处理性能。此类多FPGA调度方法几乎没有考虑由不同任务对硬件资源需求的不同而引起的资源争用问题,导致硬件资源不能充分利用而减小任务并行度。
总之,现有的多任务的调度方法不能实现多FPGA系统中高效的任务调度和放置,无法减小多任务的最小完工时间,无法提高资源利用率。
发明内容
本申请实施例的目的在于提供一种基于多FPGA的动态可重配置的多任务调度和放置方法、装置,以实现多FPGA系统中高效的任务调度和任务放置,减小多任务的最小完工时间,提高资源利用率,从而提高系统的加速性能。具体技术方案如下:
第一方面,本申请实施例提供了一种基于多FPGA的动态可重配置的多任务调度和放置方法,包括:
获取待处理任务和各FPGA的子任务集的信息,所述待处理任务包含多个子任务,所述FPGA的子任务集包括FPGA等待队列中的子任务、FPGA就绪队列中的子任务和FPGA已完成配置的子任务;
分析所述待处理任务的特征与各所述FPGA的子任务集的信息,分别得到所述待处理任务和各所述FPGA子任务集的任务类型相似度,分别得到所述待处理任务和各所述FPGA子任务集的资源需求相似度;
根据所述任务类型相似度和所述资源需求相似度,确定为所述待处理任务分配的目标FPGA;
根据所述待处理任务的子任务间的依赖关系,将所述待处理任务的子任务调度到与所述目标FPGA相对应的等待对列和就绪队列中;
根据所述就绪队列中子任务的特征和所述目标FPGA已完成配置的子任务的信息,计算得到所述就绪队列中子任务的调度顺序和在所述目标FPGA可重配置区域的放置位置;
根据所述调度顺序将所述就绪队列中子任务调度到所述目标FPGA的执行队列;
从预设位流库加载所述就绪队列中子任务对应的位流文件并将所述位流文件配置到所述放置位置。
可选的,所述子任务的特征包括:子任务类型、子任务所需硬件资源的数量、子任务需要配置的FPGA可重配置区域的参数、子任务执行时间、子任务对应位流文件的大小。
可选的,所述分析所述待处理任务的特征与各所述FPGA的子任务集的信息,分别得到所述待处理任务和各所述FPGA子任务集的任务类型相似度,分别得到所述待处理任务和各所述FPGA子任务集的资源需求相似度,包括:
根据如下公式,计算所述任务类型相似度;
Figure BDA0002098376120000031
式中Vi为第i个待处理任务工作流程图的顶点集,M(i)为第i个待处理任务到FPGA的映射,SK(M(i))为所述任务类型相似度,Sk为第k个FPGA的子任务集;
根据如下公式,计算所述资源需求相似度:
Figure BDA0002098376120000032
其中
Figure BDA0002098376120000033
式中R(M(i))为所述资源需求相似度,p为所述第i个待处理任务工作流程图的顶点集Vi中与所述第k个FPGA的子任务集Sk不同类型子任务的个数,q为所述第k个FPGA的子任务集Sk中与所述第i个待处理任务工作流程图的顶点集Vi不同类型子任务的个数,Cos(θ)uv为所述Vi中第u个子任务和所述Sk中第v个子任务的资源需求相似度,R·u为所述Vi中第u个子任务的资源需求向量,R·v为所述Sk中第v个子任务的资源需求向量。
可选的,所述根据所述任务类型相似度和所述资源需求相似度,确定为所述待处理任务分配的目标FPGA包括:
确定目标FPGA的目标函数为:
Figure BDA0002098376120000041
式中
Figure BDA0002098376120000042
为目标函数值,λ为所述任务类型相似度权重,μ为所述资源需求相似度权重,且遵循λ+μ=1;
Figure BDA0002098376120000043
最大时,所述M(i)所对应的FPGA即为所述目标FPGA。
可选的,所述根据所述待处理任务的子任务间的依赖关系,将所述待处理任务的子任务调度到与所述目标FPGA相对应的等待对列和就绪队列中,包括:
根据所述待处理任务的处理流程确定的所述待处理任务的子任务间的依赖关系;
将具有依赖关系的所述待处理任务的子任务调度到与所述目标FPGA相对应的等待对列中;
将没有依赖关系的所述待处理任务的子任务调度到与所述目标FPGA相对应的就绪对列中;
当所述等待对列中的子任务不再存在依赖关系时,将所述等待对列中的子任务调度到所述目标FPGA相对应的就绪对列中。
可选的,所述根据所述就绪队列中子任务的特征和所述目标FPGA已完成配置的子任务的信息,计算得到所述就绪队列中子任务的调度顺序和在所述目标FPGA可重配置区域的放置位置,包括:
基于遗传算法计算得到所述就绪队列中子任务调度顺序的信息素分布,所述信息素分布为双向收敛蚁群优化算法的初始信息素分布;
基于所述双向收敛蚁群优化算法计算得到所述就绪队列中子任务的调度顺序;
基于最大空闲矩形3D放置法计算得到的所述就绪队列中子任务的放置位置和计算时间;
根据所述计算时间评估遗传算法和双向收敛蚁群优化算法适应度,通过所述遗传算法和所述双向收敛蚁群优化算法迭代更新,计算得到最优的所述调度顺序和最优的所述放置位置。
第二方面,本申请实施例提供了一种基于多FPGA的动态可重配置的多任务调度和放置装置,包括:
采集模块,用于获取待处理任务和各FPGA的子任务集的信息,所述待处理任务包含多个子任务,所述FPGA的子任务集包括FPGA等待队列中的子任务、FPGA就绪队列中的子任务和FPGA已完成配置的子任务;
相似度模块,用于分析所述待处理任务的特征与各所述FPGA的子任务集的信息,分别得到所述待处理任务和各所述FPGA子任务集的任务类型相似度,分别得到所述待处理任务和各所述FPGA子任务集的资源需求相似度;
FPGA确定模块,用于根据所述任务类型相似度和所述资源需求相似度,确定为所述待处理任务分配的目标FPGA;
任务级队列调度模块,用于根据所述待处理任务的子任务间的依赖关系,将所述待处理任务的子任务调度到与所述目标FPGA相对应的等待对列和就绪队列中;
计算模块,用于根据所述就绪队列中子任务的特征和所述目标FPGA已完成配置的子任务的信息,计算得到所述就绪队列中子任务的调度顺序和在所述目标FPGA可重配置区域的放置位置;
子任务级调度模块,用于根据所述调度顺序将所述就绪队列中子任务调度到所述目标FPGA的执行队列;
配置模块,用于从预设位流库加载所述就绪队列中子任务对应的位流文件并将所述位流文件配置到所述放置位置。
可选的,所述子任务的特征包括:子任务类型、子任务所需硬件资源的数量、子任务需要配置的FPGA可重配置区域的参数、子任务执行时间、子任务对应位流文件的大小。
可选的,所述相似度模块包括:
任务类型相似度子模块,用于根据如下公式,计算所述任务类型相似度;
Figure BDA0002098376120000061
式中Vi为第i个待处理任务工作流程图的顶点集,M(i)为第i个待处理任务到FPGA的映射,SK(M(i))为所述任务类型相似度,Sk为第k个FPGA的子任务集;
资源需求相似度子模块,用于根据如下公式,计算所述资源需求相似度:
Figure BDA0002098376120000062
其中
Figure BDA0002098376120000063
式中R(M(i))为所述资源需求相似度,p为所述第i个待处理任务工作流程图的顶点集Vi中与所述第k个FPGA的子任务集Sk不同类型子任务的个数,q为所述第k个FPGA的子任务集Sk中与所述第i个待处理任务工作流程图的顶点集Vi不同类型子任务的个数,Cos(θ)uv为所述Vi中第u个子任务和所述Sk中第v个子任务的资源需求相似度,R·u为所述Vi中第u个子任务的资源需求向量,R·v为所述Sk中第v个子任务的资源需求向量。
可选的,所述根据所述任务类型相似度和所述资源需求相似度,确定为所述待处理任务分配的目标FPGA,包括:
确定目标FPGA的目标函数为:
Figure BDA0002098376120000064
式中
Figure BDA0002098376120000071
为目标函数值,λ为所述任务类型相似度权重,μ为所述资源需求相似度权重,且遵循λ+μ=1;
Figure BDA0002098376120000072
最大时,所述M(i)所对应的FPGA即为所述目标FPGA。
可选的,所述任务级队列调度模块包括:
依赖关系确定子模块,用于根据所述待处理任务的处理流程确定的所述待处理任务的子任务间的依赖关系;
等待对列第一调度子模块,用于将具有依赖关系的所述待处理任务的子任务调度到与所述目标FPGA相对应的等待对列中;
就绪对列调度子模块,用于将没有依赖关系的所述待处理任务的子任务调度到与所述目标FPGA相对应的就绪对列中;
等待对列第二调度子模块,用于当所述等待对列中的子任务不再存在依赖关系时,将所述等待对列中的子任务调度到所述目标FPGA相对应的就绪对列中。
可选的,所述计算模块,包括:
遗传算法子模块,用于基于遗传算法计算得到所述就绪队列中子任务调度顺序的信息素分布,所述信息素分布为双向收敛蚁群优化算法的初始信息素分布;
双向收敛蚁群优化算法子模块,用于基于所述双向收敛蚁群优化算法计算得到所述就绪队列中子任务的调度顺序;
最大空闲矩形3D放置法子模块,用于基于最大空闲矩形3D放置法计算得到的所述就绪队列中子任务的放置位置和计算时间;
最优子模块,用于根据所述计算时间评估遗传算法和双向收敛蚁群优化算法适应度,通过所述遗传算法和所述双向收敛蚁群优化算法迭代更新,计算得到最优的所述调度顺序和最优的所述放置位置。
第三方面,本申请实施例提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中:
所述处理器,通信接口,存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行存储器上所存放的程序时,实现上述第一方面任一所述的基于多FPGA的动态可重配置的多任务调度和放置方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面任一所述的基于多FPGA的动态可重配置的多任务调度和放置方法。
第五方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面任一所述的基于多FPGA的动态可重配置的多任务调度和放置方法。
本申请实施例提供的基于多FPGA的动态可重配置的多任务调度和放置方法、装置,通过任务级和子任务级的两阶段调度和放置方法,实现了在多FPGA系统的多任务调度和放置,在任务调度阶段,考虑任务相似性和资源需求相似性,为每个任务选择合适的计算单元,以减少重新配置和资源争用的可能性,在子任务调度阶段,综合考虑子任务的调度顺序和放置位置,以充分利用FPGA的硬件资源,利用FPGA可重配置能力使任务高度并行化,从而减小多任务的最小完工时间。当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的基于多FPGA的动态可重配置的多任务调度和放置方法的示意图;
图2为本申请实施例的基于多FPGA的动态可重配置的多任务调度和放置装置的示意图;
图3为本申请实施例的电子设备的一种示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例公开了一种基于多FPGA的动态可重配置的多任务调度和放置方法、装置、电子设备、计算机可读存储介质及包含指令的计算机程序产品,以下分别进行说明。
本申请实施例提供了基于多FPGA的动态可重配置的多任务调度和放置的方法,参见图1,图1为本申请实施例的基于多FPGA的动态可重配置的多任务调度和放置方法的示意图,包括如下步骤:
步骤110,获取待处理任务和各FPGA的子任务集的信息子任务集的信息,上述待处理任务包含多个子任务,上述FPGA的子任务集包括FPGA等待队列中的子任务、FPGA就绪队列中的子任务和FPGA已完成配置的子任务。
本申请实施例的基于多FPGA的动态可重配置的多任务调度和放置方法可以通过电子设备实现,具体的,该电子设备可以为服务器。
在多FPGA系统中进行多任务加速时,系统中有多个FPGA,假设系统有m个FPGA计算单元,表示为F={F1,...,Fm},第k个FPGA表示为Fk,k∈{1,...,m},将FPGA看作拥有宽为Fw,高为Fh的可重配置区域的矩形,上述每个FPGA可以被划分为许多连续的自由区域,并配置给不同的任务,其中上述每个FPGA还包含各种硬件资源,例如CLB(Configurable LogicBlock,可配置逻辑模块)、BRAM(Block RAM,嵌入式块随机存取存储器)和DSP(DigitalSignal Processing,数字信号处理)等。将FPGA可以看作拥有宽为Fw,高为Fh的可重配置区域的矩形,为剩余资源组建最大空闲矩形用以配置不同任务。
在多FPGA系统中进行多任务加速时,系统中的任务可以有多个,待处理任务为其中的任一任务,待处理任务有多个子任务,假设系统有n个待处理任务,将待处理任务定义为Ti,i∈{1,...,n},将上述待处理任务表示为工作流程图Ti=Gi(Vi,Ei),其中Vi和Ei代表Gi的顶点集和边集。Vi被描述为
Figure BDA0002098376120000101
Figure BDA0002098376120000102
其中mi是Ti中子任务的数量。
步骤120,分析上述待处理任务的特征与各上述FPGA的子任务集的信息,分别得到上述待处理任务和各上述FPGA子任务集的任务类型相似度,分别得到上述待处理任务和各上述FPGA子任务集的资源需求相似度。
获取上述Fk(第k个FPGA)的配置信息,当获得待处理任务时,首先需要遍历上述Fk的配置信息,根据待处理任务中子任务类型特征,分析上述待处理任务的特征与各上述FPGA的子任务集的信息,分别得到上述待处理任务和各上述FPGA子任务集的任务类型相似度,分别得到上述待处理任务和各上述FPGA子任务集的资源需求相似度,查看该类型的任务是否已经配置在该FPGA上。
在本申请实施例中,将各上述待处理任务Ti中第j个子任务特征化描述为
Figure BDA0002098376120000103
其中
Figure BDA0002098376120000104
代表上述待处理任务Ti中第j个子任务的类型,
Figure BDA0002098376120000105
Figure BDA0002098376120000106
分别表示上述待处理任务Ti中第j个子任务所需的CLB、BRAM和DSP的数量,
Figure BDA0002098376120000107
Figure BDA0002098376120000108
表示上述待处理任务Ti中第j个子任务需要配置的矩形区域的宽度和高度,
Figure BDA0002098376120000109
Figure BDA00020983761200001010
分别为上述待处理任务Ti中第j个子任务的执行时间和对应位流文件的大小。
定义FPGA的子任务集为Sk,Sk={STki|i=1,...,x+y+p},其中x表示FPGA等待队列中的子任务个数,y表示就绪队列中的子任务个数,p为在已配置到FPGA上的子任务个数。使用
Figure BDA00020983761200001011
表示上述第k个FPGA在t时刻的已配置到FPGA上的子任务的信息,其中nk表示Fk上已配置的子任务的数量,
Figure BDA0002098376120000111
Figure BDA0002098376120000112
J∈{1,...,nk},TCkj(·)为第k个FPGA上已配置的第j个子任务,其中,
Figure BDA0002098376120000113
表示Fk上已配置的第j个子任务的任务类型,
Figure BDA0002098376120000114
Figure BDA0002098376120000115
分别表示Fk上已配置的第j个子任务所需的CLB、BRAM和DSP的数量,
Figure BDA0002098376120000116
和1
Figure BDA0002098376120000117
分别为Fk上已配置的第j个子任务在FPGA所占逻辑区域的左上角的横纵坐标以及所占用区域的宽度和高度,
Figure BDA0002098376120000118
是Fk上已配置的第j个子任务的剩余执行时间。
考虑上述任务相似度和上述资源需求相似度,从而为上述待处理任务选择合适的FPGA,以减少重新配置和资源争用的可能性。
在一种可能的实施方式中,上述子任务的特征包括:子任务类型、子任务所需硬件资源的数量、子任务需要配置的FPGA可重配置区域的参数、子任务执行时间、子任务对应位流文件的大小。
子任务的特征包括子任务类型、子任务所需硬件资源的数量、子任务需要配置的FPGA可重配置区域的参数、子任务执行时间、子任务对应位流文件的大小。例如:将上述待处理任务Ti中第j个子任务特征化描述为
Figure BDA0002098376120000119
Figure BDA00020983761200001110
其中
Figure BDA00020983761200001111
代表上述待处理任务Ti中第j个子任务的类型,
Figure BDA00020983761200001112
Figure BDA00020983761200001113
分别表示上述待处理任务Ti中第j个子任务所需的CLB、BRAM和DSP的数量,
Figure BDA00020983761200001114
Figure BDA00020983761200001115
表示上述待处理任务Ti中第j个子任务需要配置的矩形区域的宽度和高度,
Figure BDA00020983761200001116
Figure BDA00020983761200001117
为上述待处理任务Ti中第j个子任务的执行时间和对应位流文件的大小。
在一种可能的实施方式中,上述分析上述待处理任务的特征与各上述FPGA的子任务集的信息,分别得到上述待处理任务和各上述FPGA子任务集的任务类型相似度,分别得到上述待处理任务和各上述FPGA子任务集的资源需求相似度,包括:
根据如下公式,计算上述任务类型相似度;
Figure BDA0002098376120000121
式中Vi为第i个待处理任务工作流程图的顶点集,M(i)为第i个待处理任务到FPGA的映射,SK(M(i))为上述任务类型相似度,Sk为第k个FPGA的子任务集;
根据如下公式,计算上述资源需求相似度:
Figure BDA0002098376120000122
其中
Figure BDA0002098376120000123
式中R(M(i))为上述资源需求相似度,p为上述第i个待处理任务工作流程图的顶点集Vi中与所述第k个FPGA的子任务集Sk不同类型子任务的个数,q为上述第k个FPGA的子任务集Sk中与所述第i个待处理任务工作流程图的顶点集Vi不同类型子任务的个数,Cos(θ)uv为上述Vi中第u个子任务和上述Sk中第v个子任务的资源需求相似度,R·u为上述Vi中第u个子任务的资源需求向量,R·v为上述Sk中第v个子任务的资源需求向量。
步骤130,根据上述任务类型相似度和上述资源需求相似度,确定为上述待处理任务分配的目标FPGA。
考虑上述任务相似度和上述资源需求相似度,从而为上述待处理任务选择合适的FPGA,以减少重新配置和资源争用的可能性。
在一种可能的实施方式中,上述根据上述任务类型相似度和上述资源需求相似度,确定为上述待处理任务分配的目标FPGA包括:
确定目标FPGA的目标函数为:
Figure BDA0002098376120000131
式中
Figure BDA0002098376120000132
为目标函数值,λ为上述任务类型相似度权重,μ为上述资源需求相似度权重,且遵循λ+μ=1。
Figure BDA0002098376120000133
最大时,上述M(i)所对应的FPGA即为上述目标FPGA。
SK(M)越大,表示上述待处理任务Ti的子任务与上述Sk之间相同类型的子任务数越多,当任务被分配到Fk上,则可以减少子任务间的重新配置操作,使得硬件资源可以更有效地利用并且减小了模块重用的可能,进而减少任务配置消耗,提高并行度,提高系统的运算速率。R(M)越小,上述Ti和上述Sk之间发生资源争用的可能性就越小,这更有利于多维资源的充分利用而提高任务间的并行度。
步骤140,根据上述待处理任务的子任务间的依赖关系,将上述待处理任务的子任务调度到与上述目标FPGA相对应的等待对列和就绪队列中。
为各个上述待处理任务依此选择合适的FPGA,根据上述待处理任务的处理流程确定的上述待处理任务的子任务间的依赖关系,并依据待处理任务的子任务间的依赖关系,分别存储到相应的等待队列和就绪队列,完成任务级的调度和放置。在任务级的调度和放置阶段,考虑任务相似度和资源需求相似度,从而为每个待处理任务选择合适的FPGA,以减少重新配置和资源争用的可能性。
在一种可能的实施方式中,上述根据上述待处理任务的子任务间的依赖关系,将上述待处理任务的子任务调度到与上述目标FPGA相对应的等待对列和就绪队列中,包括:
根据上述待处理任务的处理流程确定的上述待处理任务的子任务间的依赖关系;
将具有依赖关系的上述待处理任务的子任务调度到与上述目标FPGA相对应的等待对列中;
将没有依赖关系的上述待处理任务的子任务调度到与上述目标FPGA相对应的就绪对列中;
当上述等待对列中的子任务不再存在依赖关系时,将上述等待对列中的子任务调度到上述目标FPGA相对应的就绪对列中。
依据待处理任务的子任务间的依赖关系,分别存储到相应的等待队列和就绪队列,完成任务级的调度和放置。在任务级的调度和放置阶段,考虑任务相似度和资源需求相似度,从而为每个待处理任务选择合适的FPGA,以减少重新配置和资源争用的可能性。
步骤150,根据上述就绪队列中子任务的特征和上述目标FPGA已完成配置的子任务的信息,计算得到上述就绪队列中子任务的调度顺序和在上述目标FPGA可重配置区域的放置位置。
经过上述任务级的调度和放置后,上述就绪队列中子任务已经确定将在哪个FPGA上得以配置和执行,但是不同的调度顺序和放置位置会影响任务重配置消耗和资源碎片化的程度,进而影响FPGA运算速率的性能。因此,需对上述就绪队列中的子任务进行调度,为其选择合适的调度顺序和放置位置。综合考虑子任务的调度顺序和任务的放置位置,以充分利用FPGA的硬件资源,利用FPGA可重配置能力使任务高度并行化,从而提高系统的运算速率。
在一种可能的实施方式中,上述根据上述就绪队列中子任务的特征和上述目标FPGA已完成配置的子任务的信息,计算得到上述就绪队列中子任务的调度顺序和在上述目标FPGA可重配置区域的放置位置,包括:
基于遗传算法计算得到上述就绪队列中子任务调度顺序的信息素分布,上述信息素分布为双向收敛蚁群优化算法的初始信息素分布;
基于上述双向收敛蚁群优化算法计算得到上述就绪队列中子任务的调度顺序;
基于最大空闲矩形3D放置法(MER-3D-Placement)计算得到的上述就绪队列中子任务的放置位置和计算时间;
根据上述计算时间评估遗传算法和双向收敛蚁群优化算法适应度,通过上述遗传算法和上述双向收敛蚁群优化算法迭代更新,计算得到最优的上述调度顺序和最优的上述放置位置。
可以利用GA算法(Genetic Algorithm,遗传算法)、双向ACO算法(Ant ColonyOptimization,收敛蚁群优化算法)及PSO算法(Particle Swarm Optimization,粒子群优化算法)进行调度顺序和放置位置的优化,计算得到最优的上述调度顺序和最优的上述放置位置。例如将GA算法与双向ACO算法相结合进行上述就绪队列中子任务调度决策,首先充分利用GA算法的随机性和快速全局收敛性,生成上述就绪队列中子任务调度顺序的信息素分布,该信息素分布作为双向ACO算法的初始信息素分布,然后充分利用双向ACO算法正反馈和高精度特性,通过算法不断的迭代更新,找到上述就绪队列中子任务调度顺序的最优排序解。
此外,由于每一个需要在FPGA上执行的上述就绪队列中子任务必须要配置相应的逻辑资源,需要为每一个任务找到合适的位置,这样才能更加充分地利用硬件资源。因此,在整个任务调度决策的过程中,需要在FPGA可重构区域为上述就绪队列中子任务找到合适的放置位置。可以利用最大空闲矩形3D放置法及二维的最大空闲矩形(MER)放置法为上述就绪队列中子任务找到合适的放置位置,例如利用最大空闲矩形3D放置法,找到上述就绪队列中子任务的放置位置。为了更加充分地利用硬件资源,通过GA算法,ACO算法以及最大空闲矩形3D放置法,可以找到最优的上述调度顺序和最优的上述放置位置。基于最大空闲矩形3D放置法计算上述就绪队列中子任务的最大完工时间,利用上述最大完工时间作为适应度评估每个调度顺序,确定调度顺序的适应度,从而找到最优的上述调度顺序和最优的上述放置位置。
例如最大空闲矩形(MER)的表示方式为MER=(MERx,MERv,MERw,MERh,MERr),其中MERx、MERy、MERw、MERh分别代表空闲矩形的左上角在FPGA可重配置区域的横纵位置、MER的宽度和高度,MERr表示此矩形中的资源是否包含DSP和BRAM。为在上述Fk上找到上述就绪队列中子任务的合适的配置位置L=(x,y),首先提取Fk已配置的第i个子任务的位置特征信息
Figure BDA0002098376120000161
并根据位置信息计算最大空矩形MERs={MERi|i=1,...,z},然后,遍历所有符合上述就绪队列中子任务资源需求的最大空矩形中的侯选位置并计算每个侯选位置的连接值,将上述连接值定义为3D连接值。上述侯选位置包括每个MER的左上角,右上角,左下角以及右下角。如果上述就绪队列中子任务需要除CLB以外的其他硬件资源(BRAM,DSP),那么将考虑上述就绪队列中子任务所需的特殊资源列与空闲矩形边界形成的两个交点位置为其侯选位置。定义每个侯选位置的3D连接值C如下:
Figure BDA0002098376120000162
其中,n表示上述就绪队列中子任务放置在侯选位置时与Fk已配置的子任务或者可重配置区域边界相邻接的边的数量,Lp为第p条邻接边的长度,LTp是第p条邻接边的生命周期,即LTp存在的时间。如果该邻接边是由上述就绪队列中子任务和Fk已配置的第i个任务TCki占用的资源区域组成,那么LTp为两个任务中的最短剩余执行时间,即
Figure BDA0002098376120000163
其中
Figure BDA0002098376120000164
表示上述就绪队列中第j个子任务配置的时间,其由以下公式计算得到:
Figure BDA0002098376120000165
其中,Recfreq表示在FPGA上配置单元大小的位流文件所需的时间。
如果该邻接边是由上述就绪队列中子任务和FPGA的可重配置区域的边界组成,则
Figure BDA0002098376120000166
最终,为上述就绪队列中子任务选取最大3D连接值的位置进行配置,尽量减少硬件资源的碎片化。
将所有上述就绪队列中子任务的最大完工时间表示为MP,为了得到上述MP的最小值,将GA算法和双向收敛的ACO算法相结合,通过不断的进化迭代最终获得最优的调度顺序π={π1,...,πy},其中π1∈{1,...,y}。在此过程中,首先将每个调度顺序的适应度Fit定义为整个任务集合的最小完工时间,即Fit(π)=MPπ。按照每个调度顺序依此利用最大空闲矩形3D放置算法进行子任务的放置,通过不断的迭代优化,计算得到最小完工时间。
在GA算法阶段,首先初始化一个有一定数目染色体的初始化种群,其中一定数目为变量,表示为popsize,其中每个染色体代表一种调度顺序π。然后,通过算最大空闲矩形3D放置法计算种群中每条染色体的适应度Fit(π),并以一定的选择概率P(π)交叉、突变和复制染色体,形成N条新的染色体。通过不断地迭代,找到合适的优化结果。其中概率P(π)定义为
Figure BDA0002098376120000171
当GA算法转换为ACO算法时,为了避免传统算法中GA算法迭代次数固定会影响算法的效率,设置最大和最小的遗传迭代次数Genmax、Genmin,并给出最小进化率Evomin,当进化速率Evoaie小于Evomin时,将GA算法转化为ACO算法,以此采用动态融合的方法来保证遗传算法与蚁群算法的正确转换时间。
在ACO算法阶段,根据蚂蚁觅食的规律,通过M只蚂蚁的群体智能,找到最优的调度序列。每只蚂蚁调度在上述Fk的就绪队列子任务中的所有子任务,并在第i个子任务STki和第j个子任务STkj之间释放某种信息素γij,首先初始化信息素
Figure BDA0002098376120000172
其中
Figure BDA0002098376120000173
为STki、STkj调度序列在GA算法中获取的最优解中的比例。为了加速ACO算法的收敛,当蚂蚁Am调度完所有子任务后,利用正负反馈来更新信息素,信息素γij的更新公式如下:
其中γij(t+n)=(1-δ)γij(t)+Δγij(t+n);
Figure BDA0002098376120000181
其中Δγij(t+n)是一个奖惩函数,奖励最佳调度顺序πbest并惩罚最差调度顺序πworst。Q是奖励信息素常数,Q′是惩罚信息素常数,δ是信息素挥发系数。当越来越多的蚂蚁通过相同的顺序,越来越多的信息素被释放。经过不懈的迭代,最终会选择最优的调度顺序。另外,蚂蚁Am在t时选择下一个子任务的概率ρij(t)为:
Figure BDA0002098376120000182
其中
Figure BDA0002098376120000183
其中,α为信息素启发式因子,反映了随机因素在蚁群搜索中的强度。β是期望启发式因子,反映了蚁群搜索中的先验性和确定性因素的强度。Nextm是Am可选的下一个子任务的集合。Fit(πm)是Am在t时刻所搜寻的调度顺序的适应度。
综合考虑子任务的调度顺序和任务的放置位置,以充分利用FPGA的硬件资源,利用FPGA可重配置能力使任务高度并行化,从而提高系统的运算速率。
步骤160,根据上述调度顺序将上述就绪队列中子任务调度到上述目标FPGA的执行队列。
根据上述调度顺序将上述就绪队列中子任务调度到上述目标FPGA的执行队列,进行任务级的调度。通过两阶段的调度方法充分考虑重配置开销,资源争用以及资源碎片化问题,实现多FPGA系统中高效的多任务调度,减小多任务的最小完工时间,提高资源利用率。
步骤170,从预设位流库加载上述就绪队列中子任务对应的位流文件并将上述位流文件配置到上述放置位置。
预设位流库专门用来存储提前编译的上述就绪队列中子任务位流文件,通过从预设位流库加载上述就绪队列中子任务对应的位流文件并将上述位流文件配置到上述放置位置,完成子任务级的调度和配置。通过两阶段的调度方法充分考虑重配置开销,资源争用以及资源碎片化问题,实现多FPGA系统中高效的多任务调度和放置,减小多任务的最小完工时间,提高资源利用率。
通过任务级和子任务级的两阶段调度和放置方法,实现了在多FPGA系统的多任务调度和放置,在任务调度阶段,考虑任务相似性和资源需求相似性,为每个任务选择合适的计算单元,以减少重新配置和资源争用的可能性,在子任务调度阶段,综合考虑子任务的调度顺序和放置位置,以充分利用FPGA的硬件资源,利用FPGA可重配置能力使任务高度并行化,从而减小多任务的最小完工时间。
本申请实施例还提供了一种装置,参见图2,图2为本申请实施例的基于多FPGA的动态可重配置的多任务调度和放置装置的示意图,上述装置包括:
采集模块210,用于获取待处理任务和各FPGA的子任务集的信息,上述待处理任务包含多个子任务,所述FPGA的子任务集包括FPGA等待队列中的子任务、FPGA就绪队列中的子任务和FPGA已完成配置的子任务;
相似度模块220,用于分析上述待处理任务的特征与各上述FPGA的子任务集的信息,分别得到上述待处理任务和各上述FPGA子任务集的任务类型相似度,分别得到上述待处理任务和各上述FPGA子任务集的资源需求相似度;
FPGA确定模块230,用于根据上述任务类型相似度和上述资源需求相似度,确定为上述待处理任务分配的目标FPGA;
任务级队列调度模块240,用于根据上述待处理任务的子任务间的依赖关系,将上述待处理任务的子任务调度到与上述目标FPGA相对应的等待对列和就绪队列中;
计算模块250,用于根据上述就绪队列中子任务的特征和上述目标FPGA已完成配置的子任务的信息,计算得到上述就绪队列中子任务的调度顺序和在上述目标FPGA可重配置区域的放置位置;
子任务级调度模块260,用于根据上述调度顺序将上述就绪队列中子任务调度到上述目标FPGA的执行队列;
配置模块270,用于从预设位流库加载上述就绪队列中子任务对应的位流文件并将上述位流文件配置到上述放置位置。
在一种可能的实施方式中,上述相似度模块220包括:
任务类型相似度子模块,用于根据如下公式,计算上述任务类型相似度;
Figure BDA0002098376120000201
式中Vi为第i个待处理任务工作流程图的顶点集,M(i)为第i个待处理任务到FPGA的映射,SK(M(i))为上述任务类型相似度,Sk为第k个FPGA的子任务集;
资源需求相似度子模块,用于根据如下公式,计算上述资源需求相似度:
Figure BDA0002098376120000202
其中
Figure BDA0002098376120000203
式中R(M(i))为上述资源需求相似度,p为上述第i个待处理任务工作流程图的顶点集Vi中与所述第k个FPGA的子任务集Sk不同类型子任务的个数,q为上述第k个FPGA的子任务集Sk中与所述第i个待处理任务工作流程图的顶点集Vi不同类型子任务的个数,Cos(θ)uv为上述Vi中第u个子任务和上述Sk中第v个子任务的资源需求相似度,R·u为上述Vi中第u个子任务的资源需求向量,R·v为上述Sk中第v个子任务的资源需求向量。
在一种可能的实施方式中,上述根据上述任务类型相似度和上述资源需求相似度,确定为上述待处理任务分配的目标FPGA,包括:
确定目标FPGA的目标函数为:
Figure BDA0002098376120000211
式中
Figure BDA0002098376120000212
为目标函数值,λ为上述任务类型相似度权重,μ为上述资源需求相似度权重,且遵循λ+μ=1;
Figure BDA0002098376120000213
最大时,上述M(i)所对应的FPGA即为上述目标FPGA。
在一种可能的实施方式中,上述任务级队列调度模块240包括:
依赖关系确定子模块,用于根据上述待处理任务的处理流程确定的上述待处理任务的子任务间的依赖关系;
等待对列第一调度子模块,用于将具有依赖关系的上述待处理任务的子任务调度到与上述目标FPGA相对应的等待对列中;
就绪对列调度子模块,用于将没有依赖关系的上述待处理任务的子任务调度到与上述目标FPGA相对应的就绪对列中;
等待对列第二调度子模块,用于当上述等待对列中的子任务不再存在依赖关系时,将上述等待对列中的子任务调度到上述目标FPGA相对应的就绪对列中。
在一种可能的实施方式中,上述计算模块250,包括:
遗传算法子模块,用于基于遗传算法计算得到上述就绪队列中子任务调度顺序的信息素分布,上述信息素分布为双向收敛蚁群优化算法的初始信息素分布;
双向收敛蚁群优化算法子模块,用于基于上述双向收敛蚁群优化算法计算得到上述就绪队列中子任务的调度顺序;
最大空闲矩形3D放置法子模块,用于基于最大空闲矩形3D放置法计算得到的上述就绪队列中子任务的放置位置和计算时间;
最优子模块,用于根据上述计算时间评估遗传算法和双向收敛蚁群优化算法适应度,通过上述遗传算法和上述双向收敛蚁群优化算法迭代更新,计算得到最优的上述调度顺序和最优的上述放置位置。
本申请实施例还提供了一种电子设备,参见图3,包括:处理器310、通信接口320、存储器330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信,
上述存储器330,用于存放计算机程序;
上述处理器310,用于执行上述存储器330存放的计算机程序时,实现如下步骤:
获取待处理任务和各FPGA的子任务集的信息,所述待处理任务包含多个子任务,所述FPGA的子任务集包括FPGA等待队列中的子任务、FPGA就绪队列中的子任务和FPGA已完成配置的子任务;
分析所述待处理任务的特征与各所述FPGA的子任务集的信息,分别得到所述待处理任务和各所述FPGA子任务集的任务类型相似度,分别得到所述待处理任务和各所述FPGA子任务集的资源需求相似度;
根据所述任务类型相似度和所述资源需求相似度,确定为所述待处理任务分配的目标FPGA;
根据所述待处理任务的子任务间的依赖关系,将所述待处理任务的子任务调度到与所述目标FPGA相对应的等待对列和就绪队列中;
根据所述就绪队列中子任务的特征和所述目标FPGA已完成配置的子任务的信息,计算得到所述就绪队列中子任务的调度顺序和在所述目标FPGA可重配置区域的放置位置;
根据所述调度顺序将所述就绪队列中子任务调度到所述目标FPGA的执行队列;
从预设位流库加载所述就绪队列中子任务对应的位流文件并将所述位流文件配置到所述放置位置。
比如,电子设备的处理器310包括一个中心控制单元及多个FPGA,其中FPGA包括各种硬件资源,比如CLB、BRAM和DSP,中心控制单元包括数据采集器、任务调度器、子任务调度器,电子设备用于处理多FPGA的多任务调度和配置任务。其中,数据采集器周期性地收集FPGA可重构区域的配置信息,然后任务调度器根据获取到的配置信息,为任务队列中的任务依此选择合适的FPGA,子任务调度器为就绪队列中的子任务确定适当的调度顺序和放置位置,并根据调度顺序将就绪队列中的子任务发送到执行队列。最后,子任务调度器从预设的位流库中加载就绪队列中的子任务对应的位流文件,并将就绪队列中的子任务对应的位流文件调度到FPGA,然后在FPGA上配置。
可选的,处理器310,用于执行存储器330上所存放的程序时,还可以实现上述任一基于多FPGA的动态可重配置的多任务调度和放置方法。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的基于多FPGA的动态可重配置的多任务调度和放置方法。
需要说明的是,在本文中,各个可选方案中的技术特征只要不矛盾均可组合来形成方案,这些方案均在本申请公开的范围内。诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备及存储介质的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

Claims (6)

1.一种基于多FPGA的动态可重配置的多任务调度和放置方法,其特征在于,包括:
获取待处理任务和各FPGA的子任务集的信息,所述待处理任务包含多个子任务,所述FPGA的子任务集包括FPGA等待队列中的子任务、FPGA就绪队列中的子任务和FPGA已完成配置的子任务;
分析所述待处理任务的特征与各所述FPGA的子任务集的信息,分别得到所述待处理任务和各所述FPGA子任务集的任务类型相似度,分别得到所述待处理任务和各所述FPGA子任务集的资源需求相似度;
根据所述任务类型相似度和所述资源需求相似度,确定为所述待处理任务分配的目标FPGA;
根据所述待处理任务的子任务间的依赖关系,将所述待处理任务的子任务调度到与所述目标FPGA相对应的等待对列和就绪队列中;
根据所述就绪队列中子任务的特征和所述目标FPGA已完成配置的子任务的信息,计算得到所述就绪队列中子任务的调度顺序和在所述目标FPGA可重配置区域的放置位置;
根据所述调度顺序将所述就绪队列中子任务调度到所述目标FPGA的执行队列;
从预设位流库加载所述就绪队列中子任务对应的位流文件并将所述位流文件配置到所述放置位置;
所述分析所述待处理任务的特征与各所述FPGA的子任务集的信息,分别得到所述待处理任务和各所述FPGA子任务集的任务类型相似度,分别得到所述待处理任务和各所述FPGA子任务集的资源需求相似度,包括:
根据如下公式,计算所述任务类型相似度;
Figure FDA0002827155530000011
式中Vi为第i个待处理任务工作流程图的顶点集,M(i)为第i个待处理任务到FPGA的映射,SK(M(i))为所述任务类型相似度,Sk为第k个FPGA的子任务集;
根据如下公式,计算所述资源需求相似度:
Figure FDA0002827155530000021
其中
Figure FDA0002827155530000022
式中R(M(i))为所述资源需求相似度,p为所述第i个待处理任务工作流程图的顶点集Vi中与所述第k个FPGA的子任务集Sk不同类型子任务的个数,q为所述第k个FPGA的子任务集Sk中与所述第i个待处理任务工作流程图的顶点集Vi不同类型子任务的个数,Cos(θ)uv为所述Vi中第u个子任务和所述Sk中第v个子任务的资源需求相似度,R·u为所述Vi中第u个子任务的资源需求向量,R·v为所述Sk中第v个子任务的资源需求向量;
所述根据所述任务类型相似度和所述资源需求相似度,确定为所述待处理任务分配的目标FPGA包括:
确定目标FPGA的目标函数为:
Figure FDA0002827155530000023
式中
Figure FDA0002827155530000024
为目标函数值,λ为所述任务类型相似度权重,μ为所述资源需求相似度权重,且遵循λ+μ=1;
Figure FDA0002827155530000025
最大时,所述M(i)所对应的FPGA即为所述目标FPGA;
所述根据所述就绪队列中子任务的特征和所述目标FPGA已完成配置的子任务的信息,计算得到所述就绪队列中子任务的调度顺序和在所述目标FPGA可重配置区域的放置位置,包括:
基于遗传算法计算得到所述就绪队列中子任务调度顺序的信息素分布,所述信息素分布为双向收敛蚁群优化算法的初始信息素分布;
基于所述双向收敛蚁群优化算法计算得到所述就绪队列中子任务的调度顺序;
基于最大空闲矩形3D放置法计算得到的所述就绪队列中子任务的放置位置和计算时间;
根据所述计算时间评估遗传算法和双向收敛蚁群优化算法适应度,通过所述遗传算法和所述双向收敛蚁群优化算法迭代更新,计算得到最优的所述调度顺序和最优的所述放置位置。
2.根据权利要求1所述的方法,其特征在于,所述子任务的特征包括:子任务类型、子任务所需硬件资源的数量、子任务需要配置的FPGA可重配置区域的参数、子任务执行时间、子任务对应位流文件的大小。
3.根据权利要求1所述的方法,其特征在于,所述根据所述待处理任务的子任务间的依赖关系,将所述待处理任务的子任务调度到与所述目标FPGA相对应的等待对列和就绪队列中,包括:
根据所述待处理任务的处理流程确定的所述待处理任务的子任务间的依赖关系;
将具有依赖关系的所述待处理任务的子任务调度到与所述目标FPGA相对应的等待对列中;
将没有依赖关系的所述待处理任务的子任务调度到与所述目标FPGA相对应的就绪对列中;
当所述等待对列中的子任务不再存在依赖关系时,将所述等待对列中的子任务调度到所述目标FPGA相对应的就绪对列中。
4.一种基于多FPGA的动态可重配置的多任务调度和放置装置,其特征在于,包括:
采集模块,用于获取待处理任务和各FPGA的子任务集的信息子任务集的信息,所述待处理任务包含多个子任务,所述FPGA的子任务集包括FPGA等待队列中的子任务、FPGA就绪队列中的子任务和FPGA已完成配置的子任务;
相似度模块,用于分析所述待处理任务的特征与各所述FPGA的子任务集的信息,分别得到所述待处理任务和各所述FPGA子任务集的任务类型相似度,分别得到所述待处理任务和各所述FPGA子任务集的资源需求相似度;
FPGA确定模块,用于根据所述任务类型相似度和所述资源需求相似度,确定为所述待处理任务分配的目标FPGA;
任务级队列调度模块,用于根据所述待处理任务的子任务间的依赖关系,将所述待处理任务的子任务调度到与所述目标FPGA相对应的等待对列和就绪队列中;
计算模块,用于根据所述就绪队列中子任务的特征和所述目标FPGA已完成配置的子任务的信息,计算得到所述就绪队列中子任务的调度顺序和在所述目标FPGA可重配置区域的放置位置;
子任务级调度模块,用于根据所述调度顺序将所述就绪队列中子任务调度到所述目标FPGA的执行队列;
配置模块,用于从预设位流库加载所述就绪队列中子任务对应的位流文件并将所述位流文件配置到所述放置位置;
所述相似度模块包括:
任务类型相似度子模块,用于根据如下公式,计算所述任务类型相似度;
Figure FDA0002827155530000041
式中Vi为第i个待处理任务工作流程图的顶点集,M(i)为第i个待处理任务到FPGA的映射,SK(M(i))为所述任务类型相似度,Sk为第k个FPGA的子任务集;
资源需求相似度子模块,用于根据如下公式,计算所述资源需求相似度:
Figure FDA0002827155530000051
其中
Figure FDA0002827155530000052
式中R(M(i))为所述资源需求相似度,p为所述第i个待处理任务工作流程图的顶点集Vi中与所述第k个FPGA的子任务集Sk不同类型子任务的个数,q为所述第k个FPGA的子任务集Sk中与所述第i个待处理任务工作流程图的顶点集Vi不同类型子任务的个数,Cos(θ)uv为所述Vi中第u个子任务和所述Sk中第v个子任务的资源需求相似度,R·u为所述Vi中第u个子任务的资源需求向量,R·v为所述Sk中第v个子任务的资源需求向量;
所述FPGA确定模块,具体用于:
确定目标FPGA的目标函数为:
Figure FDA0002827155530000053
式中
Figure FDA0002827155530000054
为目标函数值,λ为所述任务类型相似度权重,μ为所述资源需求相似度权重,且遵循λ+μ=1;
Figure FDA0002827155530000055
最大时,所述M(i)所对应的FPGA即为所述目标FPGA;
所述计算模块,具体用于:
基于遗传算法计算得到所述就绪队列中子任务调度顺序的信息素分布,所述信息素分布为双向收敛蚁群优化算法的初始信息素分布;
基于所述双向收敛蚁群优化算法计算得到所述就绪队列中子任务的调度顺序;
基于最大空闲矩形3D放置法计算得到的所述就绪队列中子任务的放置位置和计算时间;
根据所述计算时间评估遗传算法和双向收敛蚁群优化算法适应度,通过所述遗传算法和所述双向收敛蚁群优化算法迭代更新,计算得到最优的所述调度顺序和最优的所述放置位置。
5.一种电子设备,其特征在于,包括:处理器、通信接口、存储器和通信总线,其中,
所述处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-3中任一项所述的基于多FPGA的动态可重配置的多任务调度和放置方法。
6.一种存储介质,其特征在于,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-3任一所述的基于多FPGA的动态可重配置的多任务调度和放置方法。
CN201910526553.3A 2019-06-18 2019-06-18 基于多fpga的动态可重配置的多任务调度和放置方法 Active CN110231986B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910526553.3A CN110231986B (zh) 2019-06-18 2019-06-18 基于多fpga的动态可重配置的多任务调度和放置方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910526553.3A CN110231986B (zh) 2019-06-18 2019-06-18 基于多fpga的动态可重配置的多任务调度和放置方法

Publications (2)

Publication Number Publication Date
CN110231986A CN110231986A (zh) 2019-09-13
CN110231986B true CN110231986B (zh) 2021-03-02

Family

ID=67859643

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910526553.3A Active CN110231986B (zh) 2019-06-18 2019-06-18 基于多fpga的动态可重配置的多任务调度和放置方法

Country Status (1)

Country Link
CN (1) CN110231986B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6911600B2 (ja) * 2017-07-18 2021-07-28 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム
CN111352735A (zh) * 2020-02-27 2020-06-30 上海上大鼎正软件股份有限公司 数据加速方法、装置、存储介质及设备
CN111858463B (zh) * 2020-07-17 2024-04-02 上海科技大学 一种基于dvfs的优化重配置方法
CN112000591B (zh) * 2020-08-24 2023-12-05 深圳忆联信息系统有限公司 可指定逻辑区块地址的扫描ssd方法、装置、计算机设备及存储介质
CN112579268A (zh) * 2020-12-05 2021-03-30 西安翔腾微电子科技有限公司 一种高效可乱序的统一染色阵列多任务并行处理方法
CN112540854B (zh) * 2020-12-28 2021-10-08 上海体素信息科技有限公司 在限定硬件资源条件下的深度学习模型调度部署方法及系统
KR20220124551A (ko) * 2021-03-03 2022-09-14 삼성전자주식회사 이종 하드웨어 타입의 가속기들을 포함한 전자 장치
US20240152388A1 (en) * 2021-07-27 2024-05-09 Boe Technology Group Co., Ltd. Task dispatching method and apparatus, computing and processing device, computer program and computer-readable medium

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080195449A1 (en) * 2007-02-08 2008-08-14 Microsoft Corporation Techniques to manage cost resources
CN109814985B (zh) * 2017-11-20 2021-07-16 华为技术有限公司 一种任务调度方法及调度器、计算设备、系统

Also Published As

Publication number Publication date
CN110231986A (zh) 2019-09-13

Similar Documents

Publication Publication Date Title
CN110231986B (zh) 基于多fpga的动态可重配置的多任务调度和放置方法
CN110399222B (zh) Gpu集群深度学习任务并行化方法、装置及电子设备
Mahmoud et al. Multiobjective task scheduling in cloud environment using decision tree algorithm
Chakravarthi et al. TOPSIS inspired budget and deadline aware multi-workflow scheduling for cloud computing
Deng et al. A data and task co-scheduling algorithm for scientific cloud workflows
Shojafar et al. An efficient scheduling method for grid systems based on a hierarchical stochastic Petri net
CN108427602B (zh) 一种分布式计算任务的协同调度方法及装置
Gupta et al. Workflow scheduling in heterogeneous computing systems: A survey
Garg et al. Enhancing the discrete particle swarm optimization based workflow grid scheduling using hierarchical structure
CN114217930A (zh) 一种基于混合任务调度的加速器系统资源优化管理方法
CN110088730B (zh) 任务处理方法、装置、介质及其设备
Mirsoleimani et al. A parallel memetic algorithm on GPU to solve the task scheduling problem in heterogeneous environments
Oliveira et al. Optimizing query prices for data-as-a-service
Ilyashenko et al. Algorithms for planning resource-intensive computing tasks in a hybrid supercomputer environment for simulating the characteristics of a quantum rotation sensor and performing engineering calculations
Wang et al. Geoclone: Online task replication and scheduling for geo-distributed analytics under uncertainties
Khalid et al. FusionCL: A machine-learning based approach for OpenCL kernel fusion to increase system performance
Wang et al. On mapreduce scheduling in hadoop yarn on heterogeneous clusters
Uchroński et al. User estimates inaccuracy study in hpc scheduler
Sun et al. Resource-aware task scheduling and placement in multi-fpga system
Li et al. Workflow scheduling algorithm based on control structure reduction in cloud environment
Deniziak et al. Synthesis of power aware adaptive schedulers for embedded systems using developmental genetic programming
Elhossini et al. An efficient scheduling methodology for heterogeneous multi-core processor systems
Ding et al. A heuristic method for data allocation and task scheduling on heterogeneous multiprocessor systems under memory constraints
Khaldoune et al. Improvement of the HEFT algorithm by lookahead technique for heterogeneous resource environments
Priya et al. Processor scheduling in high-performance computing environment using MPI

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