CN109254846A - 基于两级调度的cpu与gpu协同计算的动态调度方法及系统 - Google Patents
基于两级调度的cpu与gpu协同计算的动态调度方法及系统 Download PDFInfo
- Publication number
- CN109254846A CN109254846A CN201810861203.8A CN201810861203A CN109254846A CN 109254846 A CN109254846 A CN 109254846A CN 201810861203 A CN201810861203 A CN 201810861203A CN 109254846 A CN109254846 A CN 109254846A
- Authority
- CN
- China
- Prior art keywords
- node
- data
- gpu
- cpu
- queue
- 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/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/5044—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 hardware capabilities
-
- 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/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种基于两级调度的CPU与GPU协同计算的动态调度方法及系统,包括:预估系统中各个节点的处理能力;全局调度模块根据各节点中的节点调度模块的请求分批次按照预估的各节点的处理能力进行动态分发数据至各个节点;节点中的节点调度模块发现用于放置处理数据的数据队列为空时,则向全局调度模块请求下一批次待处理数据,并按照节点内的CPU和GPU处理能力进行动态任务调度。本发明考虑到了系统资源的异构性,让性能弱的节点分担较少的任务,性能强的节点处理更多的任务,能够提高CPU/GPU异构混合并行系统的整体并发度,减少任务完成时间。
Description
技术领域
本发明属于分布式计算技术领域,具体涉及一种基于两级调度的CPU与GPU协同计算的动态调度方法。
背景技术
CPU/GPU异构混合并行系统以其强劲计算能力、高性价比和低能耗等特点成为新型高性能计算平台,但其复杂体系结构也为并行计算研究提出了巨大挑战。现有技术中在CPU/GPU异构混合并行系统进行任务调度的研究一般是采取对各种类型硬件的计算能力或者是任务在各类处理器上的运行时间进行预测,然后进行一次性任务分配。这种方法缺项明显,因此预测可能不够准确,会造成各个计算节点的结束时间不一致,造成有些节点有长尾现象,其他节点可能在最后阶段空闲,没有充分发挥集群的计算能力,任务完成时间没有达到最短。
发明内容
针对上述问题,本发明提出一种基于两级调度的CPU与GPU协同计算的动态调度方法,考虑到了系统资源的异构性,让性能弱的节点分担较少的任务,性能强的节点处理更多的任务,能够提高CPU/GPU异构混合并行系统的整体并发度,减少任务完成时间。
实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:
第一方面,本发明提供一种基于两级调度的CPU与GPU协同计算的动态调度方法,该方法的执行过程就是各个计算节点从全局调度模块分多批次动态获取数据,并在节点内部的CPU与GPU之间动态调度数据的过程,包括以下步骤:
步骤(1):预估系统中各个节点的处理能力;所述的节点为计算节点;
作为本发明的进一步改进,所述步骤(1)具体为:根据各个节点中CPU和GPU相关信息计算出系统范围内所有节点的处理能力权值。
优选地,所述步骤(1)具体包括以下子步骤:
(1.1)实时监视每个节点的中的CPU和GPU的型号和空闲状态以及其他相关参数信息,并将前述信息汇总到全局调度模块;所述其他相关参数信息包括:CPU的主频、核心数、平均空闲率等参数,以及GPU的型号、流处理器数量等参数;
(1.2)全局调度模块中的计算能力量化模型根据接收到的信息对各节点进行CPU和GPU处理能力总和进行预估;更优选地,所述步骤(1.2)具体包括以下子步骤:全局调度模块在各节点使用测试任务对各节点的CPU和GPU进行性能评估,然后再根据实时监视模块发来的各个节点的CPU和GPU处理器型号和空闲率等信息,确定整个系统范围内所有节点的处理能力权值;
(1.2.1)全局调度模块在调度任务前,先将任务在各节点的CPU和GPU上执行,处理设定段长度的数据;比较CPU和GPU所消耗的时间,得出各节点中CPU和GPU的处理能力比值;
(1.2.2)再根据接收到的信息计算出整个系统范围内所有节点的处理能力权值,作为动态调度的依据,具体为:计算时间比值的倒数就是权值的比值。
步骤(2):全局调度模块根据各节点中的节点调度模块的请求分批次按照预估的各节点的处理能力进行动态分发数据至各个节点;
作为本发明的进一步改进,具体为:
(2.1)全局调度模块将当前计算任务的所有数据尽可能的进行细粒度拆分;
(2.2)在各个节点中的节点调度模块请求数据时,按照各个节点的计算能力的权值按比例分发与其计算能力相匹配的数据量到节点,权值越高的节点分得的数据越多,且每次只分发1MB至10MB左右的数据,等待先完成计算的节点再次进行请求,保证整个系统并发运行和负载均衡,避免一次性分发完毕造成的某些节点的长尾现象。
步骤(3):当节点中的节点调度模块发现本节点中用于放置处理数据的数据队列为空时,则向全局调度模块请求下一批次待处理数据,并按照节点内的CPU和GPU处理能力进行动态任务调度,完成基于两级调度的CPU与GPU协同计算的动态调度;
作为本发明的进一步改进,为了提高本发明的数据处理效率,所述步骤(3)具体为:各个节点中均设置两条节点级数据存储队列,两条节点级数据存储队列在当前处理队列和数据缓存队列间进行角色轮换,当节点调度模块发现本节点中的数据缓存队列为空且网络空闲时,则向全局调度模块请求下一批次待处理数据,并按照节点内的CPU和GPU处理能力进行动态任务调度,完成基于两级调度的CPU与GPU协同计算的动态调度;
所述的两条节点级数据存储队列在当前处理队列和数据缓存队列间进行角色轮换,当节点调度模块发现本节点中的数据缓存队列为空且网络空闲时,则向全局调度模块请求下一批次待处理数据,具体为:
在节点内设置两条节点级数据存储队列;
在节点调度模块向全局调度模块第一次请求数据时,得到的数据随机存放在一个队列中,此时这个队列的角色变为当前处理队列,另一个队列角色变为数据缓存队列;当节点调度模块发现当前处理队列中有数据,本节点的网络空闲且数据缓存队列为空时,说明当前节点进入数据处理状态,此时可以并发的进行网络传输,开始请求数据并存入缓存队列;
当前处理队列中的数据变为空后(说明其中数据已被本节点中的CPU和GPU处理完毕),两种队列的角色立刻对调,保证CPU和GPU连续不断得到数据进行处理,此时数据缓存队列为空,节点调度模块立刻向全局调度模块请求下一批数据,填充数据缓存队列,如果全局调度模块返回空数据集则说明全部数据已经分发完成,当前处理队列的数据全部处理完成后,当前计算任务即可退出。
所述的按照节点内的CPU和GPU处理能力进行动态任务调度,具体为:
在本节点的CPU从当前处理队列中获取数据开始处理时,选择一部分数据并根据本节点的CPU和GPU处理能力权值按比例分发到CPU和GPU进行处理;
当GPU空闲时继续迁移数据到GPU进行处理,对CPU的调度同理,优选地,在队列上进行加锁处理,避免两个处理器获得重复的数据,直至当前处理队列中的数据为空,实现了节点上的数据在CPU和GPU间动态调度,保证了一个节点的CPU和GPU的充分并发执行和负载均衡。
第二方面,本发明提供一种基于两级调度的CPU与GPU协同计算的动态调度系统,包括:
系统级的资源实时监视模块;所述资源实时监视模块实时监视每个节点中的CPU和GPU的相关参数;所述的相关参数包括CPU的型号、主频、核心数、平均空闲率等参数,以及GPU的型号、流处理器数量等参数;
全局调度模块;所述全局调度模块接收资源实时监视模块发送的信息,并预估系统中各个节点的处理能力,根据各节点中的节点调度模块的请求分批次按照预估的各节点的处理能力进行动态分发数据至各个节点;
设于各个节点中的节点调度模块;当节点调度模块发现本节点中用于放置处理数据的数据队列为空时,则向全局调度模块请求下一批次待处理数据,并按照节点内的CPU和GPU处理能力进行动态任务调度,完成基于两级调度的CPU与GPU协同计算的动态调度。
进一步地,所述基于两级调度的CPU与GPU协同计算的动态调度系统还包括:设于各个节点中的两条节点级数据存储队列;该两条节点级数据存储队列在当前处理队列和数据缓存队列间进行角色轮换。
进一步地,两条节点级数据存储队列在当前处理队列和数据缓存队列间进行角色轮换;当节点调度模块发现本节点中的缓存队列为空且网络空闲时,则向全局调度模块请求下一批次待处理数据,具体为:
在节点内设置两条节点级数据存储队列;
在节点调度模块向全局调度模块第一次请求数据时,得到的数据随机存放在一个队列中,此时这个队列的角色变为当前处理队列,另一个队列角色变为数据缓存队列;当节点调度模块发现当前处理队列中有数据,本节点的网络空闲且数据缓存队列为空时,说明当前节点进入数据处理状态,开始请求数据并存入缓存队列;
当前处理队列中的数据变为空后,两种队列的角色立刻对调,此时数据缓存队列为空,节点级调度模块立刻向全局调度模块请求下一批数据,填充数据缓存队列,如果全局调度模块返回空数据集则说明全部数据已经分发完成,当前处理队列的数据全部处理完成后,当前计算任务即可退出。
进一步地,所述全局调度模块预估系统中各个节点的处理能力,具体为:
全局调度模块在调度任务前,先将任务在各节点的CPU和GPU上执行,处理设定段长度的数据;比较CPU和GPU所消耗的时间,得出各节点中CPU和GPU的处理能力比值;
再根据接收到的信息计算出各个节点计算能力的权值,作为动态调度的依据。
进一步地,所述根据各节点中的节点调度模块的请求分批次按照预估的各节点的处理能力进行动态分发数据至各个节点,具体为:
(2.1)全局调度模块将当前计算任务的所有数据进行细粒度拆分;
(2.2)在各个节点中的节点调度模块请求数据时,按照各个节点的计算能力的权值按比例分发数据,权值越高的节点分得的数据越多,且每次只分发1MB至10MB左右的数据,等待先完成计算的节点再次进行请求。
进一步地,所述的按照节点内的CPU和GPU处理能力进行动态任务调度,具体为:
在本节点的CPU从当前处理队列中获取数据开始处理时,选择一部分数据并根据本节点的CPU和GPU处理能力权值按比例分发到CPU和GPU进行处理;
当GPU空闲时继续迁移数据到GPU进行处理,对CPU的调度同理,直至当前处理队列中的数据为空。
与现有技术相比,本发明的有益效果:
(1)本发明通过全局调度模块和计算能力量化方法,让CPU与GPU处理能力强的节点获得更的计算数据,处理更多的任务,使得系统更加负载均衡。
(2)本发明通过全局调度模块和动态数据调度方法,可对先处理完成的节点进行数据再分发,使得系统的计算节点实现能者多劳,各个节点计算任务趋近于同时完成,保证了系统整体的并发性,缩短了系统级的任务处理时间。
(3)本发明通过各个节点的两种数据存储队列,让各个节点在进行数据处理的同时能够继续进行数据传输,实现了节点级的流水线处理,保证了数据处理和数据传输不会相互等待,实现了数据处理的连续性,提高了单个节点的吞吐量。
(4)本发明通过节点调度模块,实现数据在CPU和GPU之间的动态调度,使得处理能力强的处理器获得更多的待处理数据,提高了节点级的并发度,提高了单个节点的处理能力。
(5)本发明通过纯软件实现,不需要额外安装第三方软件,且适用于Linux和Windows平台。
附图说明
图1是本发明一种实施例的动态调度方法的软件框架图;
图2是本发明一种实施例的全局调度模块数据分发示意图;
图3是本发明一种实施例的两种类型数据存储队列角色轮换意图;
图4是本发明一种实施例的节点级调度模块数据调度示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了解决现有技术中采取对各种类型硬件的计算能力或者是任务在各类处理器上的运行时间进行预测,然后进行一次性任务分配,而造成的预测可能不够准确,会造成各个计算节点的结束时间不一致,造成有些节点有长尾现象,其他节点可能在最后阶段空闲,没有充分发挥集群的计算能力,任务完成时间没有达到最短的问题,本发明提出了一种基于两级调度的CPU与GPU协同计算的动态调度方法,其主要发明构思为:
每个计算节点根据预估的计算能力获得首批计算数据,然后在节点内部的CPU和GPU间动态分配计算数据,完成一批数据处理的CPU或者GPU会立刻从队列中继续获取待处理数据,保证节点内各个处理器核心的充分运转。处理完成整条队列数据的节点会立刻向全局调度模块获取数据,以保证数据在全系统内动态分配。本发明考虑到了系统资源的异构性,让性能弱的节点分担较少的任务,性能强的节点处理更多的任务,能够提高CPU/GPU异构混合并行系统的整体并发度,减少任务完成时间。
下面结合附图对本发明的应用原理作详细的描述。
实施例1
如图1所示是本发明的动态调度方法的软件框架图,图1中的全局调度模块可部署在任意节点并且采取主备冗余保证可靠性;节点调度模块工作在每个节点;全局调度模块负责根据各个节点的计算能力在系统内分发数据块。每个节点有两个数据存储队列,分别是当前处理队列和数据缓存队列;所述当前处理队列中存放的是当前CPU和GPU正在处理的数据块;所述数据缓存队列中存放的是网络传输到本地的待处理数据块。
如图2所示是全局调度模块数据分发的示意图。图2中全局调度模块首先根据各个节点的处理器(包括CPU和GPU)型号等参数确定各个节点的计算能力权值。其中,节点1的显卡有1280个流处理单元,显卡核心频率为1600MHz;节点2的显卡有768个流处理单元,显卡核心频率为1400MHz;节点3的显卡有384个流处理单元,显卡核心频率为1300MHz;节点4的显卡与节点3的显卡相同。使用流处理单元数与显卡核心频率的乘积作为计算能力权值,得到4个节点的比值为4:2:1:1。另外,使用测试任务得到4个节点中的CPU的处理能力与GPU处理能力的比值分别为0.5:1,0.5:1,1:1,0.5:1,所述使用测试任务得到4个节点中的CPU的处理能力与GPU处理能力的比值的计算过程为现有技术,本发明中不做过多的赘述,最终得到每个节点的综合计算能力比值为12:6:4:3。因此,每次节点调度模块向全局调度模块请求数据时,全局调度模块单次下发的数据量的比值就为12:6:4:3。
如图3所示是两种类型数据存储队列角色轮换示意图。图3中左侧是节点调度模块正在从当前处理队列中调度数据块给本节点中的CPU和GPU进行处理,节点中的数据缓存队列为空。图3中间是节点调度模块发现本节点中的数据缓存队列为空,并且本节点中的网络带宽处于空闲状态,则开始向全局调度模块请求数据,存入数据缓存队列。图3右侧是当前处理队列中的数据处理完毕,则数据缓存队列的角色立刻转变为当前处理队列,开始向本节点中的CPU和GPU输送数据进行处理。同时,节点调度模块准备进行下一轮的网络传输。
如图4所示是节点调度模块数据调度示意图。图4中的计算节点上的CPU与GPU的计算能力比值为0.5:1。因此图4中左侧是当第一次调度时,节点调度模块调度1个数据块到CPU上,调度2个数据块到GPU上。图4中间表示GPU处理完两个数据块后,节点调度模块再次调度2个数据块到GPU上。图4右侧表示紧接着CPU处理完1个数据块后,节点调度模块再次调度1个数据块到CPU上。重复前述的步骤直到当前处理队列为空。
通过上述实施例可知:本发明通过全局调度模块,让CPU与GPU处理能力强的节点获得更的计算数据,使得系统能够实现更加负载均衡;并通过全局调度模块,对先处理完成的节点进行数据再分发,使各个节点计算任务趋近于同时完成,大大缩短了系统级的任务处理时间;通过节点级的两种数据存储队列,让各个节点在进行数据处理的同时能够继续进行数据传输,提高了单个节点的吞吐量;通过节点调度模块,实现数据在CPU和GPU之间的动态调度,从而实现了处理能力强的处理器获得更多的待处理数据,提高了节点级的并发度。
此外,本发明不需要额外的第三方软件支撑,兼容性强,支持跨平台,所有程序支持LINUX/WINDOWS平台。
实施例2
基于与实施例1相同的发明构思,本发明实施例中提供了一种基于两级调度的CPU与GPU协同计算的动态调度系统,包括:
系统级的资源实时监视模块;所述资源实时监视模块实时监视每个节点中的CPU和GPU的相关参数;所述的相关参数包括CPU的型号、主频、核心数、平均空闲率等参数,以及GPU的型号、流处理器数量等参数;
全局调度模块;所述全局调度模块接收资源实时监视模块发送的信息,并预估系统中各个节点的处理能力,根据各节点中的节点调度模块的请求分批次按照预估的各节点的处理能力进行动态分发数据至各个节点;
设于各个节点中的两条节点级数据存储队列;该两条节点级数据存储队列在当前处理队列和数据缓存队列间进行角色轮换;在本发明的其他实施例中,可以不设置两条节点级数据存储队列,直接设置一条数据存储队列即可,只是这种方式的数据处理效率低于本实施例中的数据处理效率;
设于各个节点中的节点调度模块;当节点调度模块发现本节点中的缓存队列为空且网络空闲时,则向全局调度模块请求下一批次待处理数据,并按照节点内的CPU和GPU处理能力进行动态任务调度,完成基于两级调度的CPU与GPU协同计算的动态调度。
在本实施例的优选实施方式中,所述的两条节点级数据存储队列在当前处理队列和数据缓存队列间进行角色轮换;当节点调度模块发现本节点中的缓存队列为空且网络空闲时,则向全局调度模块请求下一批次待处理数据,具体为:
在节点内设置两条节点级数据存储队列;
在节点调度模块向全局调度模块第一次请求数据时,得到的数据随机存放在一个队列中,此时这个队列的角色变为当前处理队列,另一个队列角色变为数据缓存队列;当节点调度模块发现当前处理队列中有数据,本节点的网络空闲且数据缓存队列为空时,说明当前节点进入数据处理状态,开始请求数据并存入缓存队列;
当前处理队列中的数据变为空后,两种队列的角色立刻对调,此时数据缓存队列为空,节点级调度模块立刻向全局调度模块请求下一批数据,填充数据缓存队列,如果全局调度模块返回空数据集则说明全部数据已经分发完成,当前处理队列的数据全部处理完成后,当前计算任务即可退出。
进一步地,所述全局调度模块预估系统中各个节点的处理能力,具体为:
全局调度模块在调度任务前,先将任务在各节点的CPU和GPU上执行,处理设定段长度的数据;比较CPU和GPU所消耗的时间,得出各节点中CPU和GPU的处理能力比值;
再根据接收到的信息计算出各个节点计算能力的权值,作为动态调度的依据。
在本实施例的优选实施方式中,所述全局调度模块根据各节点中的节点调度模块的请求分批次按照预估的各节点的处理能力进行动态分发数据至各个节点,具体为:
(2.1)全局调度模块将当前计算任务的所有数据进行细粒度拆分;
(2.2)在各个节点中的节点调度模块请求数据时,按照各个节点的计算能力的权值按比例分发数据,权值越高的节点分得的数据越多,且每次只分发1MB至10MB左右的数据,等待先完成计算的节点再次进行请求。
在本实施例的优选实施方式中,所述节点调度模块按照节点内的CPU和GPU处理能力进行动态任务调度,具体为:
在本节点的CPU从当前处理队列中获取数据开始处理时,选择一部分数据并根据本节点的CPU和GPU处理能力权值按比例分发到CPU和GPU进行处理;
当GPU空闲时继续迁移数据到GPU进行处理,对CPU的调度同理,直至当前处理队列中的数据为空。
综上所述:
本发明公开了一种基于两级调度的CPU与GPU协同计算的动态调度方法及系统,包括:预估系统中各个节点的处理能力;全局调度模块根据各节点中的节点调度模块的请求分批次按照预估的各节点的处理能力进行动态分发数据至各个节点;各个节点中的节点调度模块发现用于放置处理数据的数据队列为空时,则向全局调度模块请求下一批次待处理数据,并按照节点内的CPU和GPU处理能力进行动态任务调度。本发明考虑到了系统资源的异构性,让性能弱的节点分担较少的任务,性能强的节点处理更多的任务,能够提高CPU/GPU异构混合并行系统的整体并发度,减少任务完成时间。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (10)
1.一种基于两级调度的CPU与GPU协同计算的动态调度方法,其特征在于,包括以下步骤:
(1)预估系统中各个节点的处理能力;
(2)全局调度模块根据各节点中的节点调度模块的请求分批次按照预估的各节点的处理能力进行动态分发数据至各个节点;
(3)节点中的节点调度模块发现用于放置处理数据的数据队列为空时,则向全局调度模块请求下一批次待处理数据,并按照节点内的CPU和GPU处理能力进行动态任务调度,完成基于两级调度的CPU与GPU协同计算的动态调度。
2.根据权利要求1所述的一种基于两级调度的CPU与GPU协同计算的动态调度方法,其特征在于:所述步骤(1)包括以下子步骤:
(1.1)实时监视每个节点的中的CPU和GPU的型号和空闲状态以及其他相关参数信息,并将前述信息汇总到全局调度模块;
(1.2)全局调度模块根据接收到的信息对各节点进行CPU和GPU处理能力总和进行预估。
3.根据权利要求2所述的一种基于两级调度的CPU与GPU协同计算的动态调度方法,其特征在于:所述步骤(1.2)具体为:
(1.2.1)全局调度模块在调度任务前,先将任务在各节点的CPU和GPU上执行,处理设定段长度的数据;比较CPU和GPU所消耗的时间,得出各节点中CPU和GPU的处理能力比值;
(1.2.2)根据接收到的信息计算出各个节点计算能力的权值,作为动态调度的依据。
4.根据权利要求1所述的一种基于两级调度的CPU与GPU协同计算的动态调度方法,其特征在于:所述步骤(2)具体为:
(2.1)全局调度模块将当前计算任务的所有数据进行细粒度拆分;
(2.2)在各个节点中的节点调度模块请求数据时,按照各个节点的计算能力的权值按比例分发数据,权值越高的节点分得的数据越多,且每次只分1MB~10MB的数据,等待先完成计算的节点再次进行请求。
5.根据权利要求1所述的一种基于两级调度的CPU与GPU协同计算的动态调度方法,其特征在于:所述步骤(3)具体为:各个节点中均设置两条节点级数据存储队列,两条节点级数据存储队列在当前处理队列和数据缓存队列间进行角色轮换,当节点调度模块发现本节点中的数据缓存队列为空且网络空闲时,则向全局调度模块请求下一批次待处理数据,并按照节点内的CPU和GPU处理能力进行动态任务调度,完成基于两级调度的CPU与GPU协同计算的动态调度;
所述的两条节点级数据存储队列在当前处理队列和数据缓存队列间进行角色轮换,当节点调度模块发现本节点中的数据缓存队列为空且网络空闲时,则向全局调度模块请求下一批次待处理数据,具体为:
在节点内设置两条节点级数据存储队列;
在节点调度模块向全局调度模块第一次请求数据时,得到的数据随机存放在一个队列中,此时这个队列的角色变为当前处理队列,另一个队列角色变为数据缓存队列;当节点调度模块发现当前处理队列中有数据,本节点的网络空闲且数据缓存队列为空时,说明当前节点进入数据处理状态,开始请求数据并存入缓存队列;
当前处理队列中的数据变为空后,两种队列的角色立刻对调,此时数据缓存队列为空,节点调度模块立刻向全局调度模块请求下一批数据,填充数据缓存队列,如果全局调度模块返回空数据集则说明全部数据已经分发完成,当前处理队列的数据全部处理完成后,当前计算任务即可退出。
6.根据权利要求1所述的一种基于两级调度的CPU与GPU协同计算的动态调度方法,其特征在于:所述步骤(3)中的按照节点内的CPU和GPU处理能力进行动态任务调度,具体为:
当本节点的当前处理队列有数据时,节点调度模块立刻选择一部分数据并根据本节点的CPU和GPU处理能力权值按比例分发到CPU和GPU进行处理;
当GPU空闲时继续迁移数据到GPU进行处理,对CPU的调度同理,直至当前处理队列中的数据为空。
7.一种基于两级调度的CPU与GPU协同计算的动态调度系统,其特征在于,包括:
系统级的资源实时监视模块;所述资源实时监视模块实时监视每个节点中的CPU和GPU的相关参数;
全局调度模块;所述全局调度模块接收资源实时监视模块发送的信息,并预估系统中各个节点的处理能力,根据各节点中的节点调度模块的请求分批次按照预估的各节点的处理能力进行动态分发数据至各个节点;
设于各个节点中的节点调度模块;当节点调度模块发现本节点中用于放置处理数据的数据队列为空时,则向全局调度模块请求下一批次待处理数据,并按照节点内的CPU和GPU处理能力进行动态任务调度,完成基于两级调度的CPU与GPU协同计算的动态调度。
8.根据权利要求7所述的一种基于两级调度的CPU与GPU协同计算的动态调度系统,其特征在于:还包括:设于各个节点中的两条节点级数据存储队列;该两条节点级数据存储队列在当前处理队列和数据缓存队列间进行角色轮换。
9.根据权利要求8所述的一种基于两级调度的CPU与GPU协同计算的动态调度系统,其特征在于:两条节点级数据存储队列在当前处理队列和数据缓存队列间进行角色轮换;当节点调度模块发现本节点中的缓存队列为空且网络空闲时,则向全局调度模块请求下一批次待处理数据,具体为:
在节点内设置两条节点级数据存储队列;
在节点调度模块向全局调度模块第一次请求数据时,得到的数据随机存放在一个队列中,此时这个队列的角色变为当前处理队列,另一个队列角色变为数据缓存队列;当节点调度模块发现当前处理队列中有数据,本节点的网络空闲且数据缓存队列为空时,说明当前节点进入数据处理状态,开始请求数据并存入缓存队列;
当前处理队列中的数据变为空后,两种队列的角色立刻对调,此时数据缓存队列为空,节点级调度模块立刻向全局调度模块请求下一批数据,填充数据缓存队列,如果全局调度模块返回空数据集则说明全部数据已经分发完成,当前处理队列的数据全部处理完成后,当前计算任务即可退出。
10.根据权利要求7所述的一种基于两级调度的CPU与GPU协同计算的动态调度系统,其特征在于:所述全局调度模块预估系统中各个节点的处理能力,具体为:
全局调度模块在调度任务前,先将任务在各节点的CPU和GPU上执行,处理设定段长度的数据;比较CPU和GPU所消耗的时间,得出各节点中CPU和GPU的处理能力比值;
再根据接收到的信息计算出各个节点计算能力的权值,作为动态调度的依据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810861203.8A CN109254846B (zh) | 2018-08-01 | 2018-08-01 | 基于两级调度的cpu与gpu协同计算的动态调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810861203.8A CN109254846B (zh) | 2018-08-01 | 2018-08-01 | 基于两级调度的cpu与gpu协同计算的动态调度方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109254846A true CN109254846A (zh) | 2019-01-22 |
CN109254846B CN109254846B (zh) | 2022-06-03 |
Family
ID=65049254
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810861203.8A Active CN109254846B (zh) | 2018-08-01 | 2018-08-01 | 基于两级调度的cpu与gpu协同计算的动态调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109254846B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960576A (zh) * | 2019-03-29 | 2019-07-02 | 北京工业大学 | 一种面向cpu-gpu异构的低能耗任务调度策略 |
CN110134533A (zh) * | 2019-05-14 | 2019-08-16 | 重庆天蓬网络有限公司 | 一种可批量调度数据的系统及方法 |
CN112596902A (zh) * | 2020-12-25 | 2021-04-02 | 中科星通(廊坊)信息技术有限公司 | 基于cpu-gpu协同计算的任务调度方法及装置 |
CN113032152A (zh) * | 2021-04-02 | 2021-06-25 | 北京百度网讯科技有限公司 | 用于深度学习框架的调度方法、调度装置、电子设备、存储介质和程序产品 |
CN117271142A (zh) * | 2023-11-22 | 2023-12-22 | 福建福清核电有限公司 | 用于分析概率安全分析模型的负载均衡方法和任务调度器 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706741A (zh) * | 2009-12-11 | 2010-05-12 | 中国人民解放军国防科学技术大学 | 一种基于负载平衡的cpu和gpu两级动态任务划分方法 |
CN104317658A (zh) * | 2014-10-17 | 2015-01-28 | 华中科技大学 | 一种基于MapReduce的负载自适应任务调度方法 |
CN104778080A (zh) * | 2014-01-14 | 2015-07-15 | 中兴通讯股份有限公司 | 基于协处理器的作业调度处理方法及装置 |
US20160055612A1 (en) * | 2014-08-25 | 2016-02-25 | Intel Corporation | Adaptive scheduling for task assignment among heterogeneous processor cores |
CN105468439A (zh) * | 2015-11-19 | 2016-04-06 | 华东师范大学 | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法 |
CN105677486A (zh) * | 2016-01-08 | 2016-06-15 | 上海交通大学 | 数据并行处理方法及系统 |
-
2018
- 2018-08-01 CN CN201810861203.8A patent/CN109254846B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101706741A (zh) * | 2009-12-11 | 2010-05-12 | 中国人民解放军国防科学技术大学 | 一种基于负载平衡的cpu和gpu两级动态任务划分方法 |
CN104778080A (zh) * | 2014-01-14 | 2015-07-15 | 中兴通讯股份有限公司 | 基于协处理器的作业调度处理方法及装置 |
US20160055612A1 (en) * | 2014-08-25 | 2016-02-25 | Intel Corporation | Adaptive scheduling for task assignment among heterogeneous processor cores |
CN104317658A (zh) * | 2014-10-17 | 2015-01-28 | 华中科技大学 | 一种基于MapReduce的负载自适应任务调度方法 |
CN105468439A (zh) * | 2015-11-19 | 2016-04-06 | 华东师范大学 | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法 |
CN105677486A (zh) * | 2016-01-08 | 2016-06-15 | 上海交通大学 | 数据并行处理方法及系统 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960576A (zh) * | 2019-03-29 | 2019-07-02 | 北京工业大学 | 一种面向cpu-gpu异构的低能耗任务调度策略 |
CN109960576B (zh) * | 2019-03-29 | 2021-04-16 | 北京工业大学 | 一种面向cpu-gpu异构的低能耗任务调度策略 |
CN110134533A (zh) * | 2019-05-14 | 2019-08-16 | 重庆天蓬网络有限公司 | 一种可批量调度数据的系统及方法 |
CN110134533B (zh) * | 2019-05-14 | 2020-04-28 | 重庆天蓬网络有限公司 | 一种可批量调度数据的系统及方法 |
CN112596902A (zh) * | 2020-12-25 | 2021-04-02 | 中科星通(廊坊)信息技术有限公司 | 基于cpu-gpu协同计算的任务调度方法及装置 |
CN113032152A (zh) * | 2021-04-02 | 2021-06-25 | 北京百度网讯科技有限公司 | 用于深度学习框架的调度方法、调度装置、电子设备、存储介质和程序产品 |
CN117271142A (zh) * | 2023-11-22 | 2023-12-22 | 福建福清核电有限公司 | 用于分析概率安全分析模型的负载均衡方法和任务调度器 |
CN117271142B (zh) * | 2023-11-22 | 2024-03-01 | 福建福清核电有限公司 | 用于分析概率安全分析模型的负载均衡方法和任务调度器 |
Also Published As
Publication number | Publication date |
---|---|
CN109254846B (zh) | 2022-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109254846A (zh) | 基于两级调度的cpu与gpu协同计算的动态调度方法及系统 | |
CN103605567B (zh) | 面向实时性需求变化的云计算任务调度方法 | |
US8812639B2 (en) | Job managing device, job managing method and job managing program | |
CN104734989B (zh) | 基于令牌桶的数据传输流量调度方法及其系统 | |
CN106534318B (zh) | 一种基于流量亲和性的OpenStack云平台资源动态调度系统和方法 | |
CN106502792A (zh) | 一种面向不同类型负载的多租户资源优化调度方法 | |
CN103927225B (zh) | 一种多核心架构的互联网信息处理优化方法 | |
CN104375897B (zh) | 基于最小相对负载不均衡度的云计算资源调度方法 | |
US20120124591A1 (en) | scheduler and resource manager for coprocessor-based heterogeneous clusters | |
CN105007337A (zh) | 集群系统负载均衡的方法和系统 | |
CN105718364A (zh) | 一种云计算平台中计算资源能力动态评估方法 | |
CN106325976B (zh) | 一种渲染任务调度处理方法及服务器 | |
CN103699433B (zh) | 一种于Hadoop平台中动态调整任务数目的方法及系统 | |
CN103401939A (zh) | 一种采用混合调度策略的负载均衡方法 | |
EP2176773A2 (en) | Data packet processing method for a multi core processor | |
CN109861850A (zh) | 一种基于sla的无状态云工作流负载均衡调度的方法 | |
CN110659278A (zh) | 基于cpu-gpu异构架构的图数据分布式处理系统 | |
CN105955807A (zh) | 一种任务处理系统及方法 | |
CN108563495A (zh) | 数据中心综合管理系统的云资源队列分级调度系统和方法 | |
CN115454649A (zh) | 面向空间操控仿真模型计算的动态任务调度系统 | |
CN116048721A (zh) | 一种gpu集群的任务分配方法、装置、电子设备和介质 | |
CN113190342B (zh) | 用于云-边协同网络的多应用细粒度卸载的方法与系统架构 | |
CN109976873A (zh) | 容器化分布式计算框架的调度方案获取方法及调度方法 | |
Lou et al. | Energy-efficient joint task assignment and migration in data centers: A deep reinforcement learning approach | |
Mehta et al. | A modified delay strategy for dynamic load balancing in cluster and grid environment |
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 |