CN109522108A - 一种基于Kernel合并的GPU任务调度系统及方法 - Google Patents
一种基于Kernel合并的GPU任务调度系统及方法 Download PDFInfo
- Publication number
- CN109522108A CN109522108A CN201811279163.2A CN201811279163A CN109522108A CN 109522108 A CN109522108 A CN 109522108A CN 201811279163 A CN201811279163 A CN 201811279163A CN 109522108 A CN109522108 A CN 109522108A
- Authority
- CN
- China
- Prior art keywords
- task
- speed
- gpu
- kernel
- merging
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于Kernel合并的GPU多任务调度系统及方法。包括任务分析模块、Kernel合并模块、任务调度模块和任务存储队列。用户提交GPU任务至任务存储队列,任务分析模块计算任务间的合并加速比,任务调度模块计算最优的合并调度顺序,并交至Kernel合并模块合并执行,获得最大任务吞吐率;本发明采用一般图的最大匹配计算最优合并调度顺序。通过任务分析模块计算任务的合并加速比;其次根据任务合并加速比构造有向图;通过二分图匹配算法计算最优的任务合并调度顺序;根据顺序调度任务组完成任务计算。本发明完成了上述功能的设计细节、实现算法和编码工作,提升了多任务下GPU的资源利用率。
Description
技术领域
本发明属于计算机应用领域,具体涉及一种基于Kernel合并的GPU任务调度系统及方法。
背景技术
异构并行编程模型随着GPU的发展而兴起,由于GPU保留了许多流式处理器的特征,因此早期的异构并行编程模型秉承了流式编程思想.流(stream)是这类编程模型的核心,stream是一组数据的集合,计算在stream的每个数据元素上并行执行,符合单指令多数据(SIMD)或多指令多数据(MIMD)的执行模式。在这种背景下,伴随着NVIDIA GPU在商业上获得的巨大成功,2007年出现的CUDA。然而,CUDA仅能在以NVIDIA GPU为加速设备的异构系统中使用,于是,2008年底出现了多家公司共同制定的跨平台异构并行编程框架标准OpenCL,它适用于任何并行系统。OpenCL将实际的不同硬件平台抽象为一个统一的平台模型。
随着光刻技术不断发展,单个GPU存储体系日趋复杂,单片计算单元数量不断提升使得单GPU算力得到了极大的增强。对于一般地可加速并行任务,则必须针对硬件及任务特点,采用一定的编程策略才能最大化发挥硬件性能。另外,单个计算任务往往很难均衡地发挥单个芯片的计算资源,需要使用一定的策略使计算任务能并发地执行,提升任务吞吐率以及GPU资源利用率;在上述前提下,如何合理安排任务并发,以获得多任务下最大吞吐率也是亟待解决的问题。
发明内容
本发明的目的在于提供一种基于Kernel合并GPU任务调度系统及方法。该系统主要包括任务分析模块、Kernel合并模块、任务调度模块和任务存储队列四个部分。本方法采用开放编程语言OpenCL,降低Kernel任务执行的时间,提高GPU资源利用率。本发明给出一种通过构建无向图描述任务加速比的方法,调度器通过求解最大匹配问题,得到最优的GPU任务合并调度方式,以获得最大的任务吞吐率。本方法为用户提供API接口,并完成了上述功能的设计细节、实现算法以及编码工作。本发明实现了基于Kernel合并的多GPU任务调度系统,屏蔽底层设备的差异性,并且该系统架构具有充分的灵活性和可扩展性。
为了实现上述目的,本发明采用如下技术方案:
一种基于Kernel合并的GPU任务调度系统,所述任务调度系统部署于单个异构计算节点,所述异构计算节点至少包括一块CPU和GPU;所述任务调度系统包括任务存储队列、任务分析模块、Kernel合并模块、任务调度模块四个组件,按顺序关系完成工作;具体包括:
任务分析模块,用于接收用户提交的GPU任务,分析任务类型及输入数据规模,计算任务间的合并加速比,并构造所述任务的合并加速比矩阵Speed[i][j],存储两个GPU任务的合并执行加速比;
Kernel合并模块,用于接收两个GPU计算任务,对两个GPU计算任务的Kernel函数进行合并,形成一个大Kernel函数,等效于在GPU上实现Kernel函数的并发执行,同时接收所述任务的输入数据,向用户返回所述任务的计算结果,并给出执行时间等调试信息;
任务调度模块,用于根据所述任务分析模块构造的任务合并加速比矩阵Speed[i][j],构造任务加速关系无向图G(E,V,w),其中E表示无向图的边集,V表示无向图的点集,w表示无向图的权值集,计算最优的计算任务合并对,将任务对传送给所述Kernel合并模块进行合并计算,获得最大任务吞吐率;
任务存储队列,用于接收用户提交的GPU任务请求,将所述任务的Kernel函数发送至所述任务调度模块;
可选地,所述GPU任务是指通过OpenCL编写的GPU内核任务,包括:
任务Kernel函数,是用户基于OpenCL编写的需要在GPU上执行的具体任务代码;
任务输入数据,是用户所提交的任务输入。
可选地,所述任务分析模块通过以下步骤构造所述任务的合并加速比矩阵Speed[i][j]:
接收两个GPU计算任务,记作Qi,Qj,任务分析模块调用计算源评估两个任务单独串行执行及合并执行时间;
计算任务加速比,计算公式为:
其中,Speed_upij表示任务Qi,Qj串行执行于合并执行的加速比,Ti,Tj表示任务Qi,Qj单独执行时间,MergeTimeij表示任务Qi,Qj合并执行时间。
将加速比Speed_upij写入合并加速比矩阵Speed[i][j],其中若
Speed_upij>1则直接写入,否则,向Speed[i][j]写入-1,表示无法获得加速比。
可选地,所述Kernel合并模块包括:
GPU任务预处理模块,将GPU任务的计算特征抽象封装。所述计算特征包括工作组数、全局维度、工作组维度,以及生成Kernel Id;
GPU调度内核,是基于OpenCL的GPU端的持久化Kernel任务,用于接收两个等待合并Kernel任务,按照先进先出方法调度两个Kernel任务的工作组轮询执行,完成Kernel的合并,返回任务执行结果并给出执行时间等调试信息,具体步骤包括:
1)所述GPU调度内核从工作组队列中获取一个工作组及工作组的相关参数,装载至所述GPU调度内核的工作组中;
2)计算原始工作组到所述GPU调度内核的坐标偏移,建立原始工作组到所述GPU调度内核的映射;
3)调度所述GPU调度内核的工作组完成工作组数据计算;
4)转至1),直到所有工作组调度完毕。
可选地,所述任务调度模块根据所述任务分析模块构造的任务合并加速比矩阵Speed[i][j],构造任务加速关系无向图G(E,V,w),计算最优的计算任务合并对;
所述任务加速关系无向图G(E,V,w)描述了任务队列中任务的合并加速关系,所述无向图顶点表示每个待执行的GPU任务,所述无向图的边描述两个任务之间的加速关系,所述无向图边权描述两个任务合并执行后可获得的加速比,无边表示计算任务合并后无法获得加速,所述无向图通过邻接表形式存储;
所述任务调度模块通过计算无向图G(E,V,w)的最大带权匹配,计算任务的最优合并对,其过程如下:
1)将所有计算任务节点标记为尚未访问;
2)若计算任务节点尚未访问,执行(3),否则结束;
3)若当前计算节点还未匹配,则拓展增广路径,转至(3);否则执行(4);
4)当前计算节点已经匹配,则找到一条增广路径,转至(2);
5)若发现图中奇环,则将奇环内所有任务节点视为一个大点,转至(2);
所述调度器依据任务加速比无向图G(E,V,w),求解最优的任务合并调度序列;进一步包括:
1)所述调度器所述任务调度模块根据所述任务分析模块构造的任务合并加速比矩阵Speed[i][j],构造任务加速关系无向图G(E,V,w),通过计算二分图最大带权匹配求解最优的计算任务合并对;
2)所述调度器选取一个任务合并对,传输给位于GPU端的所述Kernel合并模块进行合并计算;
3)所述Kernel合并模块接收两个候选执行任务的计算数据,进行计算并返回计算结果和计算时间;
4)执行2),直到所有任务计算结束;
一种基于Kernel合并的GPU任务调度方法,所述GPU任务调度方法包括:
用户提交一批待处理GPU计算任务至任务队列,记作Q1~Qn,调用计算源评估任意两个任务单独串行执行及合并执行时间,计算加速比,并构建加速比矩阵Speed[i][j],等待计算调度顺序;
通过加速比矩阵Speed[i][j],构造任务加速比无向图G(E,V,w),通过计算所述无向图G(E,V,w)的带权最大匹配,求出待执行任务Q1~Qn最优合并调度顺序;
根据求得的任务调度顺序,选取任务对<Qi,Qj>,对所述任务对的每个任务进行计算特征抽取,将所述任务的Kernel函数合并为大Kernel函数,传入输入数据,完成任务对<Qi,Qj>的合并执行,返回任务计算结果以及计算时间信息。
可选地,通过合并加速比计算合并顺序,合并加速比计算公式为:
其中,Speed_upij表示任务Qi,Qj串行执行于合并执行的加速比,Ti,Tj表示任务Qi,Qj单独执行时间,MergeTimeij表示任务Qi,Qj合并执行时间。
可选地,所述任务合并加速比矩阵Speed[i][j]存储了任务Qi,Qj的合并执行加速比Speed_upij,Speed[i][j]=-1表示任务Qi,Qj合并后不能获得加速。
可选地,所述任务加速关系无向图G(E,V,w)描述了任务队列中任务的合并加速关系,所述无向图顶点表示每个待执行的GPU任务,所述无向图的边描述两个任务之间的加速关系,所述无向图边权描述两个任务合并执行后可获得的加速比,无边表示计算任务合并后无法获得加速,所述无向图通过邻接表形式存储。
与现有技术相比,本发明具有以下有益效果:
首先,本方法屏蔽底层了设备的差异性,并且该系统架构具有充分的灵活性和可扩展性。其次,本方法利用了CPU控制程序执行流程并处理基础数据和GPU处理密集的浮点运算任务相结合的模式提高了大量计算任务的计算速度;其次,通过GPU端的调度Kernel将两个候选Kernel进行合并,形成一个大的Kernel,等效实现了GPU上多个Kernel函数的并发执行,提升了GPU的资源利用率;再者,调度器通过计算二分图最大匹配,求出最优的任务调度合并顺序,提升了整体任务的加速比。
附图说明
图1为本发明的一种基于Kernel合并的GPU任务调度方法的流程示意图。
图2为本发明的一种基于Kernel合并的GPU调度系统的原理框架图。
图3为本发明的一种基于Kernel合并的GPU调度方法及系统的实施过程示意图。
图4为本发明的一种基于Kernel合并的GPU调度系统任务分析模块程示意图。
图5为本发明的一种基于Kernel合并的GPU调度系统任务调度模块程示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可有本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书的各项细节也可以基于不同观点与应用,在没有贝利本发明的精神下进行各种修饰或改变。
本实施例的目的在于提供一种基于Kernel合并的GPU任务调度方法及系统,用于解决现有技术中GPU调度资源利用率低,吞吐率低下的问题。以下将详细阐述本发明的一种基于Kernel合并的GPU任务调度方法及系统的原理及实施方式,使本领域技术人员不需要创造性劳动即可理解本发明的一种基于Kernel合并的GPU任务调度方法及系统。
具体地,本实施例旨在实现一个高性能的基于Kernel合并的GPU调度系统,包括任务分析模块、Kernel合并模块、任务调度模块、任务存储队列,完成过GPU计算任务的提交、任务分析、计算调度合并顺序、合并执行等调度工作。便于开发人员在无需关心硬件系统以及调度细节的前提下获得高吞吐和高资源利用率。
以下结合附图对本实施例的基于Kernel合并的GPU任务调度方法及系统做进一步详细描述。
如图1所示,本实施例提供一种基于Kernel合并的GPU任务调度方法,所述GPU任务调度方法包括:
步骤S101,用户提交一批待处理GPU计算任务Q1~Qn至任务队列。
步骤S102,评估任意两个任务单独串行执行及合并执行时间,计算加速比,并构建加速比矩阵Speed[i][j],等待计算调度顺序。
步骤S103,通过加速比矩阵Speed[i][j],构造任务加速比无向图G(E,V,w)。
步骤S104,计算所述无向图G(E,V,w)的带权最大匹配,求出待执行任务Q1~Qn最优合并调度顺序。
步骤S105,根据求得的任务调度顺序,选取任务对<Qi,Qj>,对所述任务对的每个任务进行计算特征抽取,将所述两个任务的Kernel函数合并为大Kernel函数。
步骤S106,传入输入数据,完成任务对<Qi,Qj>的合并执行,返回任务计算结果以及计算时间信息。
以下对本实施例的基于Kernel合并的GPU任务调度方法进行详细说明。
由于Kernel任务在运行过程中对不同类型资源需求程度不同,将Kernel合并为一个大Kernel函数后执行,可以最大程度提高资源的利用率,提升任务吞吐率。通过合并加速比计算合并顺序,合并加速比计算公式为:
其中,Speed_upij表示任务Qi,Qj串行执行于合并执行的加速比,Ti,Tj表示任务Qi,Qj单独执行时间,MergeTimeij表示任务Qi,Qj合并执行时间。
所述任务合并加速比矩阵Speed[i][j]存储了任务Qi,Qj的合并执行加速比Speed_upij,Speed[i][j]=-1表示任务Qi,Qj合并后不能获得加速。
所述任务加速关系无向图G(E,V,w)描述了任务队列中任务的合并加速关系,所述无向图顶点表示每个待执行的GPU任务,所述无向图的边描述两个任务之间的加速关系,所述无向图边权描述两个任务合并执行后可获得的加速比,无边表示计算任务合并后无法获得加速,所述无向图通过邻接表形式存储。
所述步骤S104通过计算无向图G(E,V,w)的最大带权匹配,计算任务的最优合并对,最大化加速比和,从而的到最优的GPU任务合并调度执行顺序,其过程如下:
1)将所有计算任务节点标记为尚未访问;
2)若计算任务节点尚未访问,执行(3),否则执行(5);
3)若当前计算节点还未匹配,则拓展增广路径,转至(3);否则执行4);
4)当前计算节点已经匹配,则找到一条增广路径,转至(2);
5)若发现图中奇环,则将奇环内所有任务节点视为一个大点。
所述步骤S105从步骤S104计算得到的合并任务顺序中接收两个等待合并Kernel任务,按照先进先出方法调度两个Kernel任务的工作组轮询执行,完成Kernel的合并,返回任务执行结果并给出执行时间等调试信息,具体步骤包括:
1)GPU调度内核从工作组队列中获取一个工作组及工作组的相关参数,装载至所述GPU调度内核的工作组中;
2)计算原始工作组到GPU调度内核的坐标偏移,建立原始工作组到所述GPU调度内核的映射;
3)调度所述GPU调度内核的工作组完成工作组数据计算;
4)转至1),直到所有工作组调度完毕。
具体地,对于所有GPU计算任务Q1~Qn,本实施例提供的基于Kernel合并的GPU调度方法将提高任务吞吐率,提升GPU资源利用率。
为了实现上述基于Kernel合并的GPU调度方法,本实施例提供了一种基于Kernel合并的GPU调度系统100,如图2所示,所述GPU调度系统100包括:任务分析模块110、Kernel合并模块120、任务调度模块130、任务存储队列140。下面对本实施例进行详细说明。
所述基于Kernel合并的GPU任务调度系统100,部署于单个异构计算节点,所述异构计算节点至少包括一块CPU和GPU,所述CPU和GPU均需要支持OpenCL计算平台。还包括:
任务分析模块110,用于接收用户提交的GPU任务,分析任务类型及输入数据规模,计算任务间的合并加速比,并构造所述任务的合并加速比矩阵Speed[i][j];
Kernel合并模块120,用于接收两个GPU计算任务,对所述任务的Kernel函数进行合并,形成一个大Kernel函数,等效于在GPU上实现Kernel函数的并发执行,同时接收所述任务的输入数据,向用户返回所述任务的计算结果,并给出执行时间等调试信息;
任务调度模块130,用于根据110构造的任务合并加速比矩阵Speed[i][j],构造任务加速关系无向图G(E,V,w),计算最优的计算任务合并对,将任务对传送给120进行合并计算,获得最大任务吞吐率;
任务存储队列140,用于接收用户提交的GPU任务请求,将所述任务的Kernel函数发送至130;
图4描述了所述任务分析模块执行示意,具体地,所述任务分析模块110通过以下步骤构造所述任务的合并加速比矩阵Speed[i][j]:
1)接收两个GPU计算任务Qi,Qj,任务分析模块调用计算源评估两个任务单独串行执行及合并执行时间;
2)计算任务加速比,计算公式为:
其中,Speed_upij表示任务Qi,Qj串行执行于合并执行的加速比,Ti,Tj表示任务Qi,Qj单独执行时间,MergeTimeij表示任务Qi,Qj合并执行时间。
3)将加速比Speed_upij写入合并加速比矩阵Speed[i][j],其中若Speed_upij>1则直接写入,否则,向Speed[i][j]写入-1,表示无法获得加速比。
所述Kernel合并模块120包括GPU任务预处理模块,将GPU任务的计算特征抽象封装。所述计算特征包括工作组数、全局维度xDim*yDim、工作组维度xThreads*yThreads,以及生成Kernel Id;GPU调度内核接收两个等待合并Kernel任务,按照先进先出方法调度两个Kernel任务的工作组轮询执行,完成Kernel的合并,返回任务执行结果并给出执行时间等调试信息,具体步骤包括:
1)所述GPU调度内核从工作组队列中获取一个工作组及工作组的相关参数,装载至所述GPU调度内核的工作组中;
2)计算原始工作组到所述GPU调度内核的坐标偏移,建立原始工作组到所述GPU调度内核的映射;
3)调度所述GPU调度内核的工作组完成工作组数据计算;
4)转至1),直到所有工作组调度完毕。
本实施例中,所述任务调度模块130根据所述任务分析模块构造的任务合并加速比矩阵Speed[i][j],构造任务加速关系无向图G(E,V,w),计算最优的计算任务合并对,如图5所示;
所述任务加速关系无向图G(E,V,w)描述了任务队列中任务的合并加速关系,所述无向图顶点表示每个待执行的GPU任务,所述无向图的边描述两个任务之间的加速关系,所述无向图边权描述两个任务合并执行后可获得的加速比,无边表示计算任务合并后无法获得加速,所述无向图通过邻接表形式存储;
所述调度器依据任务加速比无向图G(E,V,w),求解最优的任务合并调度序列;进一步包括:
1)所述调度器所述任务调度模块根据所述任务分析模块构造的任务合并加速比矩阵Speed[i][j],构造任务加速关系无向图G(E,V,w),通过计算二分图最大带权匹配求解最优的计算任务合并对;
2)所述调度器选取一个任务合并对,传输给位于GPU端的所述Kernel合并模块进行合并计算;
3)所述Kernel合并模块接收两个候选执行任务的计算数据,进行计算并返回计算结果和计算时间;
4)执行2),直到所有任务计算结束;
为了使本领域技术人员进一步理解本实施例中的基于Kernel合并的任务调度系统100,如图3所示,以下以具体实例说明本实施例中GPU任务调度系统100和方法的实施过程。
1.用户编写GPU计算任务:用户按照GPU编程规范,编写能在GPU上运行的Kernel程序。
2.用户提交应用请求:用户将任务提交至任务队列140。
3.任务分析模块110分析任务:任务分析模块110分析任务存储队列140中的任务,构造任务加速比矩阵。
4.任务调度模块130构造任务加速无向图:任务调度模块130根据任务分析模块110求得的任务加速比矩阵,构造任务加速无向图,以邻接表存储。
5.任务调度模块130计算任务合并调度顺序:任务调度模块130根据任务加速无向图,计算任务合并调度顺序。
6.Kernel合并模块120完成任务合并:Kernel合并模块120根据任务调度模块130计算任务合并调度顺序,取两个待合并Kernel合并成一个大Kernel函数。
7.Kernel合并模块120执行合并任务:Kernel合并模块120调度执行合并任务,返回计算结果和计算时间。
以上实施例仅例示说明了本发明的原理及功效,而非用于闲置本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或者改变。因此,举凡所记述领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (9)
1.一种基于Kernel合并的GPU任务调度系统,其特征在于,所述任务调度系统部署于单个异构计算节点,异构计算节点至少包括一块CPU和GPU;所述任务调度系统包括任务存储队列、任务分析模块、Kernel合并模块、任务调度模块四个组件,按顺序关系完成工作;具体包括:
任务分析模块,用于接收用户提交的GPU任务,分析任务类型及输入数据规模,计算任务间的合并加速比,并构造所述任务的合并加速比矩阵Speed[i][j],存储两个GPU任务的合并执行加速比;
Kernel合并模块,用于接收两个GPU计算任务,对两个GPU计算任务的Kernel函数进行合并,形成一个大Kernel函数,等效于在GPU上实现Kernel函数的并发执行,同时接收所述任务的输入数据,向用户返回所述任务的计算结果,并给出执行时间等调试信息;
任务调度模块,用于根据所述任务分析模块构造的任务合并加速比矩阵Speed[i][j],构造任务加速关系无向图G(E,V,w),其中E表示无向图的边集,V表示无向图的点集,w表示无向图的权值集,计算最优的计算任务合并对,将任务对传送给所述Kernel合并模块进行合并计算,获得最大任务吞吐率;
任务存储队列,用于接收用户提交的GPU任务请求,将所述任务的Kernel函数发送至所述任务调度模块。
2.根据权利要求1所述的基于Kernel合并的GPU任务调度系统,其特征在于,所述GPU任务是指通过OpenCL编写的GPU内核任务,包括:
任务Kernel函数,是用户基于OpenCL编写的需要在GPU上执行的具体任务代码;
任务输入数据,是用户所提交的任务输入。
3.根据权利要求1所述的基于Kernel合并的GPU任务调度系统,其特征在于,所述任务分析模块通过以下步骤构造所述任务的合并加速比矩阵Speed[i][j]:
1)从所述任务存储队列接收两个GPU计算任务,记作Qi,Qi,任务分析模块调用计算源评估两个任务单独串行执行及合并执行时间;
2)计算任务加速比,计算公式为:
其中,Speed_upij表示任务Qi,Qj串行执行于合并执行的加速比,Ti,Tj表示任务Qi,Qj单独执行时间,MergeTimeij表示任务Qi,Qj合并执行时间;
3)将加速比Speed_upij写入合并加速比矩阵Speed[i][j],其中若Speed_upij>1则直接写入,否则,向Speed[i][j]写入-1,表示无法获得加速比。
4.根据权利要求1所述的基于Kernel合并的GPU任务调度系统,其特征在于,所述Kernel合并模块包括:
GPU任务预处理模块,统计GPU任务的计算特征,所述计算特征包括工作组数、全局维度、工作组维度,以及生成KernelId;
GPU调度内核,是基于OpenCL的GPU端的持久化Kernel任务,用于接收两个等待合并Kernel任务,按照先讲先出方法调度两个Kernel任务的工作组轮询执行,完成Kernel的合并,返回任务执行结果并给出执行时间等调试信息,具体步骤包括:
1)所述GPU调度内核从工作组队列中获取一个工作组及工作组的相关参数,装载至所述GPU调度内核的工作组中;
2)计算原始工作组到所述GPU调度内核的坐标偏移,建立原始工作组到所述GPU调度内核的映射;
3)调度所述GPU调度内核的工作组完成工作组数据计算;
4)转至1),直到所有工作组调度完毕。
5.根据权利要求1所述的基于Kernel合并的GPU任务调度系统,其特征在于,所述任务调度模块根据所述任务分析模块构造的任务合并加速比矩阵Speed[i][j],构造任务加速关系无向图G(E,V,w),计算最优的计算任务合并对;
所述任务加速关系无向图G(E,V,w)描述了任务队列中任务的合并加速关系,所述无向图顶点表示每个待执行的GPU任务,所述无向图的边描述两个任务之间的加速关系,无向图边权描述两个任务合并执行后可获得的加速比,无边表示计算任务合并后无法获得加速,无向图通过邻接表形式存储;
所述任务调度模块通过计算无向图G(E,V,w)的最大带权匹配,计算任务的最优合并对,其过程如下:
1)将所有计算任务节点标记为尚未访问;
2)若计算任务节点尚未访问,执行(3),否则结束;
3)若当前计算节点还未匹配,则拓展增广路径,转至(3);否则执行(4);
4)当前计算节点已经匹配,则找到一条增广路径,转至(2);
5)若发现图中奇环,则将奇环内所有任务节点视为一个大点,转至(2);
所述调度器依据任务加速比无向图G(E,V,w),求解最优的任务合并调度序列;进一步包括:
1)所述调度器所述任务调度模块根据所述任务分析模块构造的任务合并加速比矩阵Speed[i][j],构造任务加速关系无向图G(E,V,w),通过计算二分图最大带权匹配求解最优的计算任务合并对;
2)所述调度器选取一个任务合并对,传输给位于GPU端的所述Kernel合并模块进行合并计算;
3)所述Kernel合并模块接收两个候选执行任务的计算数据,进行计算并返回计算结果和计算时间;
4)执行2),直到所有任务计算结束。
6.一种基于Kernel合并的GPU任务调度方法,其特征在于,所述GPU任务调度方法包括:
用户提交一批待处理GPU计算任务至所述任务队列,分别记作Q1~Qn,调用计算资源评估任意两个任务单独串行执行及合并执行时间,计算加速比,并构建加速比矩阵Speed[i][j],等待计算调度顺序;
通过加速比矩阵Speed[i][j],构造任务加速比无向图G(E,V,w),通过计算所述无向图G(E,V,w)的带权最大匹配,求出待执行任务Q1~Qn最优合并调度顺序;
根据求得的任务调度顺序,选取任务对<Qi,Qj>,对所述任务对的每个任务进行计算特征抽取,将所述任务的Kernel函数合并为大Kernel函数,传入输入数据,完成任务对<Qi,Qj>的合并执行,返回任务计算结果以及计算时间信息。
7.根据权利要求6所述的基于Kernel合并的GPU任务调度方法,其特征在于,通过合并加速比计算合并顺序,合并加速比计算公式为:
其中,Speed_upij表示任务Qi,Qj串行执行于合并执行的加速比,Ti,Tj表示任务Qi,Qj单独执行时间,MergeTimeij表示任务Qi,Qj合并执行时间。
8.根据权利要求6所述的基于Kernel合并的GPU任务调度方法,其特征在于,所述任务合并加速比矩阵Speed[i][j]存储了任务Qi,Qj的合并执行加速比Speed_upij,Speed[i][j]=-1表示任务Qi,Qj合并后不能获得加速。
9.根据权利要求6所述的基于Kernel合并的GPU任务调度方法,其特征在于,所述任务加速关系无向图G(E,V,w)描述了任务队列中任务的合并加速关系,所述无向图顶点表示每个待执行的GPU任务,所述无向图的边描述两个任务之间的加速关系,所述无向图边权描述两个任务合并执行后可获得的加速比,无边表示计算任务合并后无法获得加速,所述无向图通过邻接表形式存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811279163.2A CN109522108B (zh) | 2018-10-30 | 2018-10-30 | 一种基于Kernel合并的GPU任务调度系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811279163.2A CN109522108B (zh) | 2018-10-30 | 2018-10-30 | 一种基于Kernel合并的GPU任务调度系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109522108A true CN109522108A (zh) | 2019-03-26 |
CN109522108B CN109522108B (zh) | 2020-10-27 |
Family
ID=65773254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811279163.2A Active CN109522108B (zh) | 2018-10-30 | 2018-10-30 | 一种基于Kernel合并的GPU任务调度系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109522108B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112445595A (zh) * | 2020-11-26 | 2021-03-05 | 深圳晶泰科技有限公司 | 基于slurm计算平台的多任务提交系统 |
CN113010302A (zh) * | 2021-02-02 | 2021-06-22 | 中国人民解放军战略支援部队信息工程大学 | 量子-经典混合架构下多任务调度方法、系统及量子计算机系统架构 |
CN113407333A (zh) * | 2020-12-18 | 2021-09-17 | 上海交通大学 | Warp级别调度的任务调度方法、系统、GPU及设备 |
CN113748399A (zh) * | 2019-04-25 | 2021-12-03 | 阿里巴巴集团控股有限公司 | 异构计算机中的计算图映射 |
CN114237859A (zh) * | 2022-02-25 | 2022-03-25 | 中瓴智行(成都)科技有限公司 | 分布式的智能终端gpu算力提升方法、终端、系统及介质 |
CN114398166A (zh) * | 2022-01-27 | 2022-04-26 | 重庆大学 | 基于二分法的分布式计算任务调度方法及设备 |
CN116680063A (zh) * | 2023-08-03 | 2023-09-01 | 苏州浪潮智能科技有限公司 | 任务调度方法、装置、计算系统、电子设备和存储介质 |
WO2023224547A3 (zh) * | 2022-05-16 | 2024-02-01 | 脸萌有限公司 | 数据处理方法、装置、设备及存储介质 |
CN117934259A (zh) * | 2024-03-20 | 2024-04-26 | 浙江凌迪数字科技有限公司 | 任务流程图的生成方法、电子设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8108844B2 (en) * | 2006-06-20 | 2012-01-31 | Google Inc. | Systems and methods for dynamically choosing a processing element for a compute kernel |
CN102890642A (zh) * | 2011-12-23 | 2013-01-23 | 同济大学 | 基于匹配矩阵的异构重构计算的性能分析方法 |
CN107464043A (zh) * | 2017-07-20 | 2017-12-12 | 河海大学 | 一种空间众包中多类型任务的分配方法 |
CN107741881A (zh) * | 2017-11-02 | 2018-02-27 | 吉林大学 | 基于GPU的Zernike矩快速计算方法 |
CN108241530A (zh) * | 2016-12-23 | 2018-07-03 | 西北大学 | 一种基于Storm的流式计算二分图任务调度方法 |
CN108415761A (zh) * | 2018-01-31 | 2018-08-17 | 西北工业大学 | 一种基于网络流量优化的Storm任务调度方法 |
CN108681773A (zh) * | 2018-05-23 | 2018-10-19 | 腾讯科技(深圳)有限公司 | 数据运算的加速方法、装置、终端及可读存储介质 |
-
2018
- 2018-10-30 CN CN201811279163.2A patent/CN109522108B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8108844B2 (en) * | 2006-06-20 | 2012-01-31 | Google Inc. | Systems and methods for dynamically choosing a processing element for a compute kernel |
CN102890642A (zh) * | 2011-12-23 | 2013-01-23 | 同济大学 | 基于匹配矩阵的异构重构计算的性能分析方法 |
CN108241530A (zh) * | 2016-12-23 | 2018-07-03 | 西北大学 | 一种基于Storm的流式计算二分图任务调度方法 |
CN107464043A (zh) * | 2017-07-20 | 2017-12-12 | 河海大学 | 一种空间众包中多类型任务的分配方法 |
CN107741881A (zh) * | 2017-11-02 | 2018-02-27 | 吉林大学 | 基于GPU的Zernike矩快速计算方法 |
CN108415761A (zh) * | 2018-01-31 | 2018-08-17 | 西北工业大学 | 一种基于网络流量优化的Storm任务调度方法 |
CN108681773A (zh) * | 2018-05-23 | 2018-10-19 | 腾讯科技(深圳)有限公司 | 数据运算的加速方法、装置、终端及可读存储介质 |
Non-Patent Citations (2)
Title |
---|
易树平、谭明智、郭宗林、温沛涵、周佳: "云制造服务平台中的制造任务分解模式优化", 《计算机集成制造系统》 * |
李珊珊: "面向异构平台的Kernel合并优化及编译技术研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113748399B (zh) * | 2019-04-25 | 2024-05-03 | 阿里巴巴集团控股有限公司 | 在异构计算资源上调度计算图的方法、装置及可读介质 |
CN113748399A (zh) * | 2019-04-25 | 2021-12-03 | 阿里巴巴集团控股有限公司 | 异构计算机中的计算图映射 |
CN112445595A (zh) * | 2020-11-26 | 2021-03-05 | 深圳晶泰科技有限公司 | 基于slurm计算平台的多任务提交系统 |
CN113407333A (zh) * | 2020-12-18 | 2021-09-17 | 上海交通大学 | Warp级别调度的任务调度方法、系统、GPU及设备 |
CN113010302A (zh) * | 2021-02-02 | 2021-06-22 | 中国人民解放军战略支援部队信息工程大学 | 量子-经典混合架构下多任务调度方法、系统及量子计算机系统架构 |
CN114398166A (zh) * | 2022-01-27 | 2022-04-26 | 重庆大学 | 基于二分法的分布式计算任务调度方法及设备 |
CN114398166B (zh) * | 2022-01-27 | 2024-05-28 | 重庆大学 | 基于二分法的分布式计算任务调度方法及设备 |
CN114237859A (zh) * | 2022-02-25 | 2022-03-25 | 中瓴智行(成都)科技有限公司 | 分布式的智能终端gpu算力提升方法、终端、系统及介质 |
WO2023224547A3 (zh) * | 2022-05-16 | 2024-02-01 | 脸萌有限公司 | 数据处理方法、装置、设备及存储介质 |
CN116680063A (zh) * | 2023-08-03 | 2023-09-01 | 苏州浪潮智能科技有限公司 | 任务调度方法、装置、计算系统、电子设备和存储介质 |
CN116680063B (zh) * | 2023-08-03 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 任务调度方法、装置、计算系统、电子设备和存储介质 |
CN117934259A (zh) * | 2024-03-20 | 2024-04-26 | 浙江凌迪数字科技有限公司 | 任务流程图的生成方法、电子设备和存储介质 |
CN117934259B (zh) * | 2024-03-20 | 2024-06-28 | 浙江凌迪数字科技有限公司 | 任务流程图的生成方法、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109522108B (zh) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109522108A (zh) | 一种基于Kernel合并的GPU任务调度系统及方法 | |
Kruatrachue et al. | Grain size determination for parallel processing | |
US8990827B2 (en) | Optimizing data warehousing applications for GPUs using dynamic stream scheduling and dispatch of fused and split kernels | |
CN103279445A (zh) | 运算任务的计算方法及超算系统 | |
CN108416433A (zh) | 一种基于异步事件的神经网络异构加速方法和系统 | |
CN104537713B (zh) | 一种新型三维重构系统 | |
Bosilca et al. | Performance portability of a GPU enabled factorization with the DAGuE framework | |
Guo et al. | Balancing efficiency and flexibility for DNN acceleration via temporal GPU-systolic array integration | |
CN111985629A (zh) | 用于训练神经网络的并行化策略 | |
CN113434548A (zh) | 一种基于Spark的大规模数据流分析方法及系统 | |
Helal et al. | Adaptive task aggregation for high-performance sparse solvers on GPUs | |
Wang et al. | SOLAR: Services-oriented deep learning architectures-deep learning as a service | |
CN104360962B (zh) | 匹配于高性能计算机结构的多级嵌套数据传输方法与系统 | |
CN103810041A (zh) | 一种支持动态伸缩的并行计算的方法 | |
Wang et al. | SOLAR: Services-oriented learning architectures | |
Shah et al. | An efficient sparse matrix multiplication for skewed matrix on gpu | |
Morchdi et al. | A Resource-efficient Task Scheduling System using Reinforcement Learning | |
Xiang et al. | Accelerating CNN algorithm with fine-grained dataflow architectures | |
Catalán et al. | Static versus dynamic task scheduling of the lu factorization on ARM big. LITTLE architectures | |
Al Maruf et al. | Optimizing DNNs Model Partitioning for Enhanced Performance on Edge Devices. | |
US20220326988A1 (en) | Explicit scheduling of on-chip operations | |
Schubert et al. | Parallel synthesis of robust control systems | |
Krömer et al. | An implementation of differential evolution for independent tasks scheduling on GPU | |
Gerlach et al. | DPS-Dynamic Parallel Schedules | |
Hu et al. | Real-time simulation and optimization of elastic aircraft vehicle based on multi-GPU workstation |
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 |