CN109522108B - 一种基于Kernel合并的GPU任务调度系统及方法 - Google Patents

一种基于Kernel合并的GPU任务调度系统及方法 Download PDF

Info

Publication number
CN109522108B
CN109522108B CN201811279163.2A CN201811279163A CN109522108B CN 109522108 B CN109522108 B CN 109522108B CN 201811279163 A CN201811279163 A CN 201811279163A CN 109522108 B CN109522108 B CN 109522108B
Authority
CN
China
Prior art keywords
task
merging
gpu
kernel
tasks
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
CN201811279163.2A
Other languages
English (en)
Other versions
CN109522108A (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.)
Xian Jiaotong University
Original Assignee
Xian Jiaotong University
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 Xian Jiaotong University filed Critical Xian Jiaotong University
Priority to CN201811279163.2A priority Critical patent/CN109522108B/zh
Publication of CN109522108A publication Critical patent/CN109522108A/zh
Application granted granted Critical
Publication of CN109522108B publication Critical patent/CN109522108B/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/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

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任务调度系统及方法
技术领域
本发明属于计算机应用领域,具体涉及一种基于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,任务分析模块调用计算源评估两个任务单独串行执行及合并执行时间;
计算任务加速比,计算公式为:
Figure BDA0001847685950000031
其中,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>的合并执行,返回任务计算结果以及计算时间信息。
可选地,通过合并加速比计算合并顺序,合并加速比计算公式为:
Figure BDA0001847685950000061
其中,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函数后执行,可以最大程度提高资源的利用率,提升任务吞吐率。通过合并加速比计算合并顺序,合并加速比计算公式为:
Figure BDA0001847685950000091
其中,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)计算任务加速比,计算公式为:
Figure BDA0001847685950000111
其中,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 (8)

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函数发送至所述任务调度模块;
所述任务调度模块根据所述任务分析模块构造的任务合并加速比矩阵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合并模块接收两个候选执行任务的计算数据,进行计算并返回计算结果和计算时间;
执行2),直到所有任务计算结束。
2.根据权利要求1所述的基于Kernel合并的GPU任务调度系统,其特征在于,所述GPU任务是指通过OpenCL编写的GPU内核任务,包括:
任务Kernel函数,是用户基于OpenCL编写的需要在GPU上执行的具体任务代码;
任务输入数据,是用户所提交的任务输入。
3.根据权利要求1所述的基于Kernel合并的GPU任务调度系统,其特征在于,所述任务分析模块通过以下步骤构造所述任务的合并加速比矩阵Speed[i][j]:
1)从所述任务存储队列接收两个GPU计算任务,记作Qi,Qj,任务分析模块调用计算源评估两个任务单独串行执行及合并执行时间;
2)计算任务加速比,计算公式为:
Figure FDA0002615687890000031
其中,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.一种基于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>的合并执行,返回任务计算结果以及计算时间信息。
6.根据权利要求5所述的基于Kernel合并的GPU任务调度方法,其特征在于,通过合并加速比计算合并顺序,合并加速比计算公式为:
Figure FDA0002615687890000051
其中,Speed_upij表示任务Qi,Qj串行执行于合并执行的加速比,Ti,Tj表示任务Qi,Qj单独执行时间,MergeTimeij表示任务Qi,Qj合并执行时间。
7.根据权利要求5所述的基于Kernel合并的GPU任务调度方法,其特征在于,所述任务合并加速比矩阵Speed[i][j]存储了任务Qi,Qj的合并执行加速比Speed_upij,Speed[i][j]=-1表示任务Qi,Qj合并后不能获得加速。
8.根据权利要求5所述的基于Kernel合并的GPU任务调度方法,其特征在于,所述任务加速关系无向图G(E,V,w)描述了任务队列中任务的合并加速关系,所述无向图顶点表示每个待执行的GPU任务,所述无向图的边描述两个任务之间的加速关系,所述无向图边权描述两个任务合并执行后可获得的加速比,无边表示计算任务合并后无法获得加速,所述无向图通过邻接表形式存储。
CN201811279163.2A 2018-10-30 2018-10-30 一种基于Kernel合并的GPU任务调度系统及方法 Active CN109522108B (zh)

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 CN109522108A (zh) 2019-03-26
CN109522108B true 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)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11556756B2 (en) * 2019-04-25 2023-01-17 Alibaba Group Holding Limited Computation graph mapping in heterogeneous computer system
CN112445595B (zh) * 2020-11-26 2022-10-25 深圳晶泰科技有限公司 基于slurm计算平台的多任务提交系统
CN113407333B (zh) * 2020-12-18 2023-05-26 上海交通大学 Warp级别调度的任务调度方法、系统、GPU及设备
CN113010302B (zh) * 2021-02-02 2022-11-01 中国人民解放军战略支援部队信息工程大学 量子-经典混合架构下多任务调度方法、系统及量子计算机系统架构
CN114398166B (zh) * 2022-01-27 2024-05-28 重庆大学 基于二分法的分布式计算任务调度方法及设备
CN114237859B (zh) * 2022-02-25 2022-05-13 中瓴智行(成都)科技有限公司 分布式的智能终端gpu算力提升方法、终端、系统及介质
CN114880122A (zh) * 2022-05-16 2022-08-09 脸萌有限公司 数据处理方法、装置、设备及存储介质
CN116680063B (zh) * 2023-08-03 2023-11-03 苏州浪潮智能科技有限公司 任务调度方法、装置、计算系统、电子设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
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
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 腾讯科技(深圳)有限公司 数据运算的加速方法、装置、终端及可读存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102890642B (zh) * 2011-12-23 2014-10-22 同济大学 基于匹配矩阵的异构重构计算的性能分析方法
CN107464043A (zh) * 2017-07-20 2017-12-12 河海大学 一种空间众包中多类型任务的分配方法
CN107741881B (zh) * 2017-11-02 2020-05-05 吉林大学 基于GPU的Zernike矩快速计算方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
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
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 腾讯科技(深圳)有限公司 数据运算的加速方法、装置、终端及可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
云制造服务平台中的制造任务分解模式优化;易树平、谭明智、郭宗林、温沛涵、周佳;《计算机集成制造系统》;20150831;第21卷(第8期);摘要、第三章-第四章 *
面向异构平台的Kernel合并优化及编译技术研究;李珊珊;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160915(第9期);第2节-第4节 *

Also Published As

Publication number Publication date
CN109522108A (zh) 2019-03-26

Similar Documents

Publication Publication Date Title
CN109522108B (zh) 一种基于Kernel合并的GPU任务调度系统及方法
Kruatrachue et al. Grain size determination for parallel processing
CN110458280B (zh) 一种适用于移动端的卷积神经网络加速方法及系统
CN109918182B (zh) 虚拟化技术下的多gpu任务调度方法
CN103279445A (zh) 运算任务的计算方法及超算系统
EP3742350A1 (en) Parallelization strategies for training a neural network
CN115880132B (zh) 图形处理器、矩阵乘法任务处理方法、装置及存储介质
CN116263701A (zh) 算力网络任务调度方法、装置、计算机设备及存储介质
CN105183562B (zh) 一种基于cuda技术对栅格化数据进行抽阶的方法
Li et al. Efficient algorithms for task mapping on heterogeneous CPU/GPU platforms for fast completion time
Sun et al. Cognn: efficient scheduling for concurrent gnn training on gpus
CN103810041A (zh) 一种支持动态伸缩的并行计算的方法
Das Real-time scheduling of machine learning operations on heterogeneous neuromorphic SoC
Davidović et al. Parallel local search to schedule communicating tasks on identical processors
CN110502337B (zh) 针对Hadoop MapReduce中混洗阶段的优化系统
Messina et al. Exploiting gpus to simulate complex systems
Li et al. Heterogeneous system implementation of deep learning neural network for object detection in OpenCL framework
CN110209631A (zh) 大数据处理方法及其处理系统
EP4384902A1 (en) Parallel processing architecture using distributed register files
CN116108952A (zh) 用于组合优化的并行处理
Kundu et al. HIOS: Hierarchical Inter-Operator Scheduler for Real-Time Inference of DAG-Structured Deep Learning Models on Multiple GPUs
JP2023544911A (ja) 並列量子コンピューティングのための方法及び装置
CN117940934A (zh) 数据处理装置及方法
CN114003359A (zh) 基于弹性持久的线程块的任务调度方法、系统及gpu
CN113076191A (zh) 一种集群gpu资源调度系统

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