本发明专利技术公开了一种基于OpenCL的异构协同并行计算中设备间动态任务调度方法,包括如下过程:首先取指定计算内核的总工作量的一部分作为初始块大小,然后在指定计算内核首次的计算执行过程中根据参与协同并行计算的各设备的理论峰值得到首次计算时各个计算设备的任务划分比例,然后在指定计算内核的执行过程中根据参与协同并行计算的各计算设备反馈的计算速度动态调整下一个块的大小以及下一次计算时各个计算设备的任务划分比例。本身发明专利技术实现了反馈式动态任务划分的效果,同时,通过该方法能够提高多设备协同并行计算整体性能。本发明专利技术完成了上述功能的设计细节、实现算法和编码工作,提升了并行计算中多设备的资源利用率。
A dynamic task scheduling method between devices in heterogeneous collaborative parallel computing based on OpenCL
【技术实现步骤摘要】
一种基于OpenCL的异构协同并行计算中设备间动态任务调度方法
本专利技术属于计算机应用
,具体涉及一种基于OpenCL的异构协同并行计算中设备间动态任务调度方法。
技术介绍
随着并行编程语言的兴起,如OpenCL和CUDA,由主机(CPU)和GPU为主的加速设备组成的异构计算平台现如今已经成为主流计算架构。对于计算密集型的应用,这样的平台提供了更高的性能。在CPU与多种加速设备构成的异构平台上,OpenCL发挥它的可移植性和跨平台特征,使其备受欢迎。但是该编程模型没有高效且成熟的任务调度框架。为了能充分利用异构系统的资源,设备之间的任务调度变得尤为重要。在多设备协同并行计算中采用静态任务调度策略,选取准确的任务划分比例,不仅能有效实现各计算设备间的负载均衡,而且没有运行时调度开销。然而,最佳任务划分比例的获取依赖于费时耗力的离线训练,而且一旦应用程序、问题规模、参与协同并行计算的设备类型和设备数量、异构众核系统的软硬件配置等发生了变化,还得重新进行离线训练。对于静态任务调度来说,较差的任务划分比例会导致设备间出现严重的负载不均衡,从而造成多设备协同并行计算整体性能显著降低。
技术实现思路
为解决现有技术中存在的问题,本专利技术的目的在于提供一种基于OpenCL的异构协同并行计算中设备间动态任务调度方法,通过该方法能够提高多设备协同并行计算整体性能。本专利技术采用如下技术方案:一种基于OpenCL的异构协同并行计算中设备间动态任务调度方法,包括如下过程:首先取指定计算内核的总工作量的一部分作为初始块大小并执行,然后在指定计算内核首次的计算执行过程中根据参与协同并行计算的各设备的理论峰值得到首次计算时各个计算设备的任务划分比例,然后在指定计算内核的执行过程中根据参与协同并行计算的各计算设备反馈的计算速度动态调整下一个块的大小以及下一次计算时各个计算设备的任务划分比例。所述基于OpenCL的异构协同并行计算中设备间动态任务调度方法,具体包括如下步骤:S1,取指定计算内核的总工作量的一部分作为第一个块,使用计算设备来协同执行第一个块;S2,判断是否存在剩余工作量,若否,则说明指定计算内核已执行完毕;若是,使用计算设备来协同执行第二个块;S3,重复S2,直到剩余工作量为0。所述S1包括如下步骤:S1.1,根据初始任务划分比例Ri给计算设备Di分配工作量Wcurr_i,其中,Wcurr_i=Wcurr×Ri且Wcurr=W/n,1≤i≤p,p为计算设备总数,n为预设的参数,W为指定计算内核的总工作量;S1.2,在计算设备Di中执行分配给它的工作量Wcurr_i;S1.3,当计算设备Di完成了分配给它的工作量Wcurr_i之后,收集计算设备Di的当前执行时间Tcurr_i,并计算计算设备Di的当前执行速度Vcurr_i;S1.4,当所有计算设备完成各自的工作后,计算计算设备Di的相对执行速度RVi,其中相对执行速度RVi被用作新的任务划分比例,按如下方式更新任务划分比例:Ri=RVi,1≤i≤p;S1.5,计算当前协同并行执行速度Vcurr,其中Vcurr=Wcurr/Tcurr,Tcurr=max(Tcurr_1,Tcurr_2,...,Tcurr_p);S1.6,更新已完成的总工作量Wf和剩余工作量Wr,其中Wf=Wr+Wcurr,Wr=W-Wf。所述初始任务划分比例Ri通过手动设置,或者根据参与协同并行计算的各计算设备的理论峰值的比例关系,计算出初始任务划分比例Ri。第二个块大小为2×W/n,S2包括如下步骤:S2.1,根据更新后的任务划分比例将第二个块的工作量分配给参与协同并行计算的各计算设备;S2.2,在各计算设备中执行分配给各自的工作量;S2.3,当各计算设备执行完各自的工作量后,收集各计算设备的执行时间,计算各计算设备的相对执行速度,并以得到的相对执行速度来更新任务划分比例;S2.4,计算当前协同并行执行速度;S2.5,根据S2.4得到的当前协同并行执行速度调整下个块的大小,决定下一步需要完成的工作量;通过比较上一个块的当前协同并行执行速度和当前块的当前协同并行执行速度,以及比较上一个块的大小和当前块的大小,以决定下一个块的大小相比于当前块大小是该倍增、倍减还是保持不变;S2.6,更新已完成的总工作量和剩余工作量,如果剩余工作量为0,则计算任务完成,若剩余工作量不为0,则进行S3。在进行S3时:在每一步迭代中,若计算设备Di是一个加速器,则在计算设备Di中执行当前块之前按任务划分比例从主机端上传当前块的一部分数据到计算设备Di,当计算设备Di结束当前块的执行后按任务划分比例从计算设备Di中下载当前块的一部分处理后的数据到主机端;在当前块处理完毕之后,根据协同并行执行速度和工作量的动态变化调整下一个块的大小,下一个块的最大大小不应超过剩余工作量。在进行S3时:在每一步迭代中计算下一个块的大小与当前块剩余工作量之间的差值,如果这个差值小于或等于0.5倍的当前块剩余工作量,那么以当前块剩余工作量作为下一个块的大小;否则下一个块的大小保持不变。本专利技术具有如下有益效果:本专利技术基于OpenCL的异构协同并行计算中设备间动态任务调度方法,首先取指定计算内核的总工作量的一部分作为初始块大小并根据参与协同并行计算的各计算设备的理论峰值得到首次计算时各个计算设备的任务划分比例,然后在指定计算内核的执行过程中根据参与协同并行计算的各设备反馈的计算速度动态调整下一个块的大小。从而实现反馈式动态任务划分的效果,同时,通过该方法能够提高多设备协同并行计算整体性能。进一步的,考虑到较小的块可能会导致加速器的计算能力得不到充分利用,因此在进行S3时,在每一步迭代中计算下一个块的大小与当前块剩余工作量之间的差值,如果这个差值小于或等于0.5倍的当前块剩余工作量,那么以当前块剩余工作量作为下一个块的大小;否则下一个块的大小保持不变。附图说明图1本专利技术基于OpenCL的异构协同并行计算中设备间动态任务调度方法流程图。图2是本专利技术实施例的具体流程。具体实施方式下面结合附图和实施例来对本专利技术做进一步的说明。设计拓展后的OpenCL编程框架,编程人员可使用OpenCL编写一个能由主从式异构系统中任意类型和任意多个计算设备来协同并行执行的并行应用程序。在程序编译和链接之后,就需要将函数打包为名叫内核的数据结构,也就是创建内核。运行时系统主要负责划分计算任务并合理分配到多个计算设备,然后在每个计算设备上执行设备特定的kernel来完成分配给它的子计算任务。据上可知,在主从式异构多设备系统中可使用CPU和多个加速器来并发、协同地执行数据级并行应用,但最关键的问题是如何在各计算设备间合理、高效地进行任务调度。本专利技术提出的基于OpenCL的异构协同并行计算中设备间动态任务调度方法将有效的本文档来自技高网...
【技术保护点】
1.一种基于OpenCL的异构协同并行计算中设备间动态任务调度方法,其特征在于,包括如下过程:首先取指定计算内核的总工作量的一部分作为初始块大小并执行,然后在指定计算内核首次的计算执行过程中根据参与协同并行计算的各设备的理论峰值得到首次计算时各个计算设备的任务划分比例,然后在指定计算内核的执行过程中根据参与协同并行计算的各计算设备反馈的计算速度动态调整下一个块的大小以及下一次计算时各个计算设备的任务划分比例。/n
【技术特征摘要】
1.一种基于OpenCL的异构协同并行计算中设备间动态任务调度方法,其特征在于,包括如下过程:首先取指定计算内核的总工作量的一部分作为初始块大小并执行,然后在指定计算内核首次的计算执行过程中根据参与协同并行计算的各设备的理论峰值得到首次计算时各个计算设备的任务划分比例,然后在指定计算内核的执行过程中根据参与协同并行计算的各计算设备反馈的计算速度动态调整下一个块的大小以及下一次计算时各个计算设备的任务划分比例。
2.根据权利要求1所述的一种基于OpenCL的异构协同并行计算中设备间动态任务调度方法,其特征在于,包括如下步骤:
S1,取指定计算内核的总工作量的一部分作为第一个块,使用计算设备来协同执行第一个块;
S2,判断是否存在剩余工作量,若否,则说明指定计算内核已执行完毕;若是,使用计算设备来协同执行第二个块;
S3,重复S2,使用计算设备来协同执行下一个块,直到剩余工作量为0。
3.根据权利要求2所述的一种基于OpenCL的异构协同并行计算中设备间动态任务调度方法,其特征在于,S1包括如下步骤:
S1.1,根据初始任务划分比例Ri给计算设备Di分配工作量Wcurr_i,其中,Wcurr_i=Wcurr×Ri且Wcurr=W/n,1≤i≤p,p为计算设备总数,n为预设的参数,W为指定计算内核的总工作量;
S1.2,在计算设备Di中执行分配给它的工作量Wcurr_i;
S1.3,当计算设备Di完成了分配给它的工作量Wcurr_i之后,收集计算设备Di的当前执行时间Tcurr_i,并计算计算设备Di的当前执行速度Vcurr_i;
S1.4,当所有计算设备完成各自的工作后,计算计算设备Di的相对执行速度RVi,其中相对执行速度RVi被用作新的任务划分比例,按如下方式更新任务划分比例:Ri=RVi,1≤i≤p;
S1.5,计算当前协同并行执行速度Vcurr,其中Vcurr=Wcurr/Tcurr,Tcurr=max(Tcurr_1,Tcurr_2,...,Tcurr_p);
S1.6,更新已完成的总工作量Wf和剩余工作量Wr,其中Wf=Wr+Wcurr,Wr=W-Wf。
4.根据权利要求...
【专利技术属性】
技术研发人员:朱正东,李少辉,李小轩,韩靖雯,王鹏博,李珍,
申请(专利权)人:西安交通大学,
类型:发明
国别省市:陕西;61
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。