异构调度方法技术

技术编号:21183764 阅读:30 留言:0更新日期:2019-05-22 14:45
本发明专利技术涉及异构计算领域,具体涉及一种并行异构计算调度技术。在本发明专利技术实施例中,通过以工作组work‑group为划分粒度,将同一任务的N维索引空间NDRange中的任务数据分配到不同的异构计算设备中进行计算。由此,可以使得同一任务的计算数据在多个异构计算设备中并行运行,提高任务执行效率。

Heterogeneous scheduling method

The invention relates to the field of heterogeneous computing, in particular to a parallel heterogeneous computing scheduling technology. In an embodiment of the present invention, task data in the N-dimensional indexing space NDRange of the same task is allocated to different heterogeneous computing devices for computation by partitioning granularity into work group work group. As a result, the computing data of the same task can run in parallel in many heterogeneous computing devices, and the efficiency of task execution can be improved.

【技术实现步骤摘要】
异构调度方法
本专利技术涉及异构计算领域,具体的,涉及一种异构计算中的调度技术。
技术介绍
异构计算(Heterogeneouscomputing),主要是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式。如图1,在一个异构计算系统中,常见的异构计算设备(也称为异构设备)类别包括CPU、GPU、DSP等,当前典型的异构系统如集成了中央处理器(CentralProcessingUnit,CPU)和图形处理器(GraphicsProcessingUnit,GPU)的通用计算机,或集成CPU、GPU和数字信号处理器(DigitalSignalProcessor,DSP)芯片的手机系统级芯片(SystemonChip,SoC)。由于异构计算设备通常都有独自的指令集及编程模型,在进行异构计算时,必须提供面向异构设备的编程语言和编程框架,用以把计算任务表达成设备程序,并提供面向异构设备的资源调度技术,用以配置、调度这些异构资源。现有的异构计算框架,例如开放计算语言(OpenComputingLanguage,OpenCL)、统一计算设备架构(ComputeUnifiedDeviceArchitecture,CUDA)、C++加速大规模并行(C++AcceleratedMassiveParallelism,C++AMP)等,均为单程序多数据并行编程模型(SingleProgramMultipleData,SPMD)。SPMD包括了一个称之为N维范围(NDRange)的N维索引空间用以组织数据。如图2,NDRange通常包括六个维度,包括最多3维的工作组(work-group),每个work-group又包括最多3维的工作节点(work-item)。每一个work-group中的work-item处于一个共享域,可以共享或者交换数据,各work-group之间完全独立运行,不存在相互间数据依赖关系。在执行任务时,为该任务创建一个内核(Kernel)程序,内核程序指定一个NDRange,将NDRange的work-group依次发送给一个异构计算设备的指令执行单元,work-group中的每一个work-item都会被分配到指令执行单元中的一个单独的指令执行通道处理,指令执行单元依次从Kernel程序中顺序获取指令流,从而完成单程序多数据的执行模型,完成并行处理数据的目的。然而,对于同一个计算任务而言,由于Kernel程序仅执行在一个异构计算设备上,且同一个Kernel程序不能同时跨设备运行。因此,虽然多个任务之间能够并行执行,但是对于单个计算任务而言,不能实现异构并行运行,计算资源的有效利用率不高。
技术实现思路
本文描述了一种异构计算设备的调度方法,装置及系统,以实现异构设备在单个任务中的并行数据计算,提高计算资源的利用率。一方面,本申请实施例提供了一种异构调度方法,方法包括指示异构设备分别创建命令队列,所述命令队列包含所述命令队列对应的异构设备要处理的任务数据的数据索引。将同一N维索引空间NDRange中的不同工作组work-group分配到异构设备中不同设备中的命令队列中。由此,将同一任务的NDRange数据以工作组为粒度,并行的分配给不同的异构计算设备进行数据计算,从而实现了任务的并行计算。在一种实现方式中,将至少一个工作组work-group分配到所述至少两个异构设备中的第一异构设备的命令队列中,将至少一个工作组work-group分配到所述至少两个异构设备中的第二异构设备的命令队列中,其中,所述工作组均为同一N维索引空间NDRange中的工作组,分配到第一异构设备的命令队列中的工作组的数量和分配到第二异构设备的命令队列中的工作组的数量均小于所述工作组所在的NDRange中工作组的总数,所述N维索引空间为一个任务的任务数据所对应的N维索引空间。在一种实现方式中,当所述第一异构设备的负载状态低于第一阈值时,将至少一个工作组work-group分配到所述第一异构设备的命令队列中;当所述第二异构设备的负载状态低于第一阈值时,将至少一个工作组work-group分配到所述第二异构设备的命令队列中。由此,将工作组分配到负载较低的异构设备的命令队列中,可以提高系统整体的并行效率。在一种实现方式中,分配到第一异构设备的命令队列中的工作组的数量和分配到第二异构设备的命令队列中的工作组的数量相同,且分配到第一异构设备的命令队列中的工作组的数量或分配到第二异构设备的命令队列中的工作组的数量能够被所述N为索引空间中的工作组的总数整除。在一种实现方式中,先估计所述第一异构设备和所述第二异构设备执行所述工作组的时间,并根据所述执行时间,分配工作组到所述第一异构设备和所述第二异构设备的命令队列中,以使得所述第一异构设备执行完所述分配的工作组的时间和所述第一异构设备执行完所述分配的工作组的时间的差值最小。由此,可以使得执行同一任务数据的多个异构设备能够在尽量接近的时间中完成,从而提高任务的处理效率。在一种实现方式中,将至少一个工作组work-group分配第一异构设备或者第二异构设备的命令队列时,通过发送用于指示所述分配到异构设备的至少一个工作组的全局坐标和偏移量到所述异构设备,从而指示异构设备运行所述工作组的数据。其中,所述全局坐标用于标识所述至少一个工作组中最后一个工作组在所述N维索引空间中的位置,所述偏移量用于标识所述至少一个工作组中第一个工作组在所述N维索引空间中的位置。在一种实现方式中,所述将至少一个工作组work-group分配到所述至少两个异构设备中的第一异构设备或第二异构设备的命令队列中时,具体如下:创建第一虚拟设备,并创建所述第一虚拟设备的命令队列,以使得宿主程序将任务的任务数据分配给所述第一虚拟设备,所述宿主程序用于调度所述多个异构设备执行任务;获取宿主程序分配给所述第一虚拟设备的一个任务的任务数据对应的N维索引空间,将所述N维索引空间中的至少一个工作组work-group分配到所述第一异构设备或所述第二异构设备的命令队列中。通过使用虚拟设备作为中间设备,可以在不改变原有异构计算平台架构的情况下,实现本专利技术实施例所描述的并行计算方法。在一种实现方式中,前述方法可以通过应用程序编程接口钩子APIHook获取宿主程序的指令,并调度可安装客户端驱动程序ICD实现。另一方面,本专利技术实施例提供了一种异构调度装置,该装置具有实现上述方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。在一种实现方式中,该装置包括命令队列创建模块,用于为至少两个异构设备分别创建命令队列,所述命令队列包含所述命令队列对应的异构设备要处理的任务数据的数据索引;数据分配模块,用于将至少一个工作组work-group分配到所述至少两个异构设备中的第一异构设备的命令队列中,将至少一个工作组work-group分配到所述至少两个异构设备中的第二异构设备的命令队列中,其中,所述工作组均为同一N维索引空间NDRange中的工作组,分配到第一异构设备的命令队列中的工作组的数量和分配到第二异构设备的命令队列中的工作组的数量均小于所述工作组所在的NDRange中工作组的总数,所述N维本文档来自技高网
...

【技术保护点】
1.一种异构调度方法,其特征在于,所述方法包括:指示至少两个异构设备分别创建命令队列,所述命令队列包含所述命令队列对应的异构设备要处理的任务数据的数据索引;将至少一个工作组work‑group分配到所述至少两个异构设备中的第一异构设备的命令队列中,将至少一个工作组work‑group分配到所述至少两个异构设备中的第二异构设备的命令队列中,其中,所述工作组均为同一N维索引空间NDRange中的工作组,分配到第一异构设备的命令队列中的工作组的数量和分配到第二异构设备的命令队列中的工作组的数量均小于所述工作组所在的NDRange中工作组的总数,所述N维索引空间为一个任务的任务数据所对应的N维索引空间。

【技术特征摘要】
1.一种异构调度方法,其特征在于,所述方法包括:指示至少两个异构设备分别创建命令队列,所述命令队列包含所述命令队列对应的异构设备要处理的任务数据的数据索引;将至少一个工作组work-group分配到所述至少两个异构设备中的第一异构设备的命令队列中,将至少一个工作组work-group分配到所述至少两个异构设备中的第二异构设备的命令队列中,其中,所述工作组均为同一N维索引空间NDRange中的工作组,分配到第一异构设备的命令队列中的工作组的数量和分配到第二异构设备的命令队列中的工作组的数量均小于所述工作组所在的NDRange中工作组的总数,所述N维索引空间为一个任务的任务数据所对应的N维索引空间。2.根据权利要求1所述方法,其特征在于,所述方法还包括:获取所述异构设备的负载状态;将至少一个工作组work-group分配到所述至少两个异构设备中的第一异构设备的命令队列中,具体包括:当所述第一异构设备的负载状态低于第一阈值时,将至少一个工作组work-group分配到所述第一异构设备的命令队列中;将至少一个工作组work-group分配到所述至少两个异构设备中的第二异构设备的命令队列中,具体包括:当所述第二异构设备的负载状态低于第一阈值时,将至少一个工作组work-group分配到所述第二异构设备的命令队列中。3.根据权利要求1或2所述方法,其特征在于,分配到第一异构设备的命令队列中的工作组的数量和分配到第二异构设备的命令队列中的工作组的数量相同,且分配到第一异构设备的命令队列中的工作组的数量或分配到第二异构设备的命令队列中的工作组的数量能够被所述N为索引空间中的工作组的总数整除。4.根据权利要求1或2所述方法,其特征在于,所述将至少一个工作组work-group分配到所述至少两个异构设备中的第一异构设备的命令队列中,将至少一个工作组work-group分配到所述至少两个异构设备中的第二异构设备的命令队列中具体包括:估计所述第一异构设备和所述第二异构设备执行所述工作组的时间;根据所述执行时间,分配工作组到所述第一异构设备和所述第二异构设备的命令队列中,以使得所述第一异构设备执行完所述分配的工作组的时间和所述第一异构设备执行完所述分配的工作组的时间的差值最小。5.根据权利要求1-4所述方法,其特征在于,将至少一个工作组work-group分配到一个所述至少两个异构设备中的第一异构设备的命令队列中具体包括:发送用于指示所述分配到第一异构设备的至少一个工作组的全局坐标和偏移量到所述第一异构设备;将至少一个工作组work-group分配到一个所述至少两个异构设备中的第二异构设备的命令队列中具体包括:发送用于指示所述分配到第二异构设备的至少一个工作组的全局坐标和偏移量到所述第二异构设备;其中,所述全局坐标用于标识所述至少一个工作组中最后一个工作组在所述N维索引空间中的位置,所述偏移量用于标识所述至少一个工作组中第一个工作组在所述N维索引空间中的位置。6.根据权利要求1-5所述方法,其特征在于,所述将至少一个工作组work-group分配到所述至少两个异构设备中的第一异构设备或第二异构设备的命令队列中具体包括:创建第一虚拟设备,并创建所述第一虚拟设备的命令队列,以使得宿主程序将任务的任务数据分配给所述第一虚拟设备,所述宿主程序用于调度所述多个异构设备执行任务;获取宿主程序分配给所述第一虚拟设备的一个任务的任务数据对应的N维索引空间,将所述N维索引空间中的至少一个工作组work-group分配到所述第一异构设备或所述第二异构设备的命令队列中。7.根据权利要求6所述方法,其特征在于,所述方法通过应用程序编程接口钩子APIHook获取宿主程序的指令,并调度可安装客户端驱动程序ICD实现。8.一种异构调度装置,其特征在于,所述装置包括:命令队列创建模块,用于为至少两个异构设备分别创建命令队列,所述命令队列包含所述命令队列对应的异构设备要处理的任务数据的数据索引;数据分配模块,用于将至少一个工作组work-group分配到所述至少两个异构设备中的第一异构设备的命令队列中,将至少一个工作组work-group分配到所述至少两个异构设备中的第二异构设备的命令队列中,其中,所述工作组均为同一N维索引空间NDRange中的工作组,分配到第一异构设备的命令队列中的工作组的数量和分配到第二异构设备的命令队列中的工...

【专利技术属性】
技术研发人员:许春嵘喻钢王振江
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1