CN113886057B - 异构众核上基于剖析技术以及数据流信息的动态资源调度方法 - Google Patents

异构众核上基于剖析技术以及数据流信息的动态资源调度方法 Download PDF

Info

Publication number
CN113886057B
CN113886057B CN202010620529.9A CN202010620529A CN113886057B CN 113886057 B CN113886057 B CN 113886057B CN 202010620529 A CN202010620529 A CN 202010620529A CN 113886057 B CN113886057 B CN 113886057B
Authority
CN
China
Prior art keywords
gpu
task
tasks
data
gpus
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
CN202010620529.9A
Other languages
English (en)
Other versions
CN113886057A (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.)
Southwest University of Science and Technology
Original Assignee
Southwest University of Science and Technology
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 Southwest University of Science and Technology filed Critical Southwest University of Science and Technology
Priority to CN202010620529.9A priority Critical patent/CN113886057B/zh
Publication of CN113886057A publication Critical patent/CN113886057A/zh
Application granted granted Critical
Publication of CN113886057B publication Critical patent/CN113886057B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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/505Allocation 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 load
    • 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/5083Techniques for rebalancing the load in a distributed system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种异构众核上基于剖析技术以及数据流信息的动态资源调度方法,涉及异构众核***领域。该方法包括:程序剖析,确定可并行循环体的执行次数;确定循环体的数据流图;设定阈值,计算所需GPU数量;根据依赖划分GPU任务大小;根据任务的数据流将任务分配到不同的GPU运行;检查平台是否负载均衡。本发明的主要目的在于针对异构平台上需编程人员设置GPU个数以及对任务进行手动划分的现状,提出了一种基于程序剖析时信息以及程序数据流信息的资源调度方法,利用剖析所得循环语句的执行次数及其数据依赖,设定阈值决定设定GPU的个数,增大存在数据依赖任务划分的线程粒度,同时利用数据流信息将任务分配到各GPU上运行,主动检测并结合work‑stealing算法解决平台负载均衡问题,从而实现了一种自动设置GPU数量、提高GPU计算资源利用率和主动检测并实现负载均衡的动态资源调度方法。

Description

异构众核上基于剖析技术以及数据流信息的动态资源调度 方法
技术领域
本发明主要涉及异构众核***领域,特别是异构众核模拟器MGPUSim上基于剖析技术以及数据流信息的动态资源调度方法。
背景技术
众核处理器结构是对片上可扩展能力达到数千个核、计算能力达到万亿次级的微处理芯片体系结构发展道路的探索。其计算资源密度更高,片上通信开销显著降低,能够实现芯片结构和性能高度的可扩展性,很好地应对纳米工艺代芯片设计的功耗、线延迟和设计复杂性问题。
图形处理单元(GPU)在集成度、计算密集型问题的处理能力等方面已远远超过了通用处理器,特别是随着 GPU 在可编程能力、并行处理能力和应用范围方面得到不断提升和扩展,GPU 已成为当前计算机***中具备高性能处理能力的部件。此外,随着数据并行工作负载的迅速普及和规模的增大,要求GPU的计算能力相应增加,随着单GPU平台难以满足这些性能需要,多GPU平台开始主导高性能计算领域。
MGPUSim是一个高度可配置的、高性能的、可并行的多GPU模拟器,并引入了Locality API和渐进页面分割迁移(PASI)两个新的设计,Locality API允许编程者控制数据和计算的位置,同时避免复杂的编程以及对单个GPU而编写的内核的修改从而提高性能,PASI是这一种多GPU内存管理***,该机制并不迁移整个页面,它能够基于硬件逐步改进数据的位置,此外,在MGPUSim上,用户可自由选择统一的多GPU模型或离散的多GPU模型,以及配置GPU个数。
程序行为剖析技术是一种根据程序运行时信息,动态分析程序运行时特征的方法,对于了解分析程序运行时行为特征,选择和决定硬件体系结构有着极其重要的作用。对于特定的应用,只有在充分了解了应用自身的特征后,才能选择或者设计出具有针对性的硬件***结构,最大限度地加速计算。
在一个程序中, 若事件 (或动作) B发生前, 事件 (或动作) A必须发生, 则称B依赖于A, 这种关系称为依赖关系.依赖关系分为控制依赖关系和数据依赖关系, 控制依赖关系导致程序流的变化,数据依赖关系由读/写同一数据引起,其中影响程序并行化的主要因素为数据依赖关系。
目前异构***的资源调度方法主要分为动态任务调度和静态任务调度,静态调度是在执行负载之前根据预计的运行时间设置好任务的分配比例。预计时间是基于处理器的执行性能、编译时间参数和离线训练时间的理论分析得到的,该方法无须任务同步, 通信开销小, 但是不便于灵活应用到各种计算任务, 负载不均问题可能仍然严重。动态调度是在任务执行的过程中根据CPU和GPU的性能动态地确定负载的分配比例。动态调度的开销虽然比静态调度大, 但是预测更精准。
Work-stealing算法是并行计算中的一个有效的负载均衡算法,其基本思想是:能够根据各个处理器计算节点执行任务的快慢,来决定某些执行任务较快的机器去那些执行慢的机器上去窃取任务。
目前的异构平台的资源调度方案中需要编程人员手动进行GPU数量的分配,任务分配部分也需编程人员对其进行手工划分,但GPU适合类型高度统一且相互无依赖的数据计算任务,因此仅能分配此类数据给GPU运行,这将会造成异构核心资源利用率低下的问题。此外,现有动态调度方案,多数通过检测到空闲GPU时从CPU中获取工作分配给GPU以实现负载平衡,会造成通信延迟等问题。
发明内容
本发明的主要目的在于针对异构平台上需编程人员设置GPU个数以及对任务进行手动划分的现状,提出了一种基于程序剖析时信息以及程序数据流信息的资源调度方法,将剖析得到循环语句的执行次数及其数据依赖,通过设定阈值决定设定GPU的个数;对存在数据依赖的任务,通过增大任务划分的线程粒度,将该部分利用数据流信息将任务分配到各GPU上运行;主动检测平台负载均衡状况,并结合work-stealing算法解决平台负载不均衡,从而实现了一种自动设置GPU数量、提高GPU计算资源利用率和主动检测并实现负载均衡的动态资源调度方法。
为了实现上述目的,本发明从程序执行时的数据流顺序入手,利用剖析得到程序的依赖关系,得到循环迭代体的数量,设定相关阈值计算所需GPU资源,利用数据流顺序对分配到GPU中的任务进行进一步划分,其具体步骤如下:
步骤一:程序剖析,确定可并行循环体的执行次数。
步骤二:确定循环体的数据流图。
步骤三:设定阈值,计算所需GPU数量。
步骤四:根据依赖划分GPU任务大小。
步骤五:根据任务的数据流将任务分配到不同的GPU运行。
步骤六:检查平台负载均衡。
在上述方案中,步骤一通过程序剖析技术获得程序运行时信息,收集循环迭代次数。
在上述方案中,步骤二确定循环间的指令间的数据依赖关系。
在上述方案中,步骤三确定单个GPU计算单元个数,设定阈值,得到循环数对单个GPU计算单元个数的比值,并将循环数对单个GPU计算单元个数取余,将取余所得数与阈值比较,得到最终所需GPU总数。
在上述方案中,步骤四通过剖析所得循环间的依赖关系,确定划分线程粒度的大小,对因数据依赖而无法划分到GPU的部分增加划分的任务线程粒度大小,将其涉及的相关数据流部分分配到GPU上运行。
在上述方案中,步骤五根据步骤二所得数据流图及控制流图,将分配到GPU的任务分为不同的任务节点,并设置任务调度器和数据缓存,数据缓存中保存每一个任务节点的结果,任务调度器控制每个任务节点在GPU上运行的先后顺序以及其工作单元的分配。
在上述方案中,步骤六通过检查任务调度器中是否存在未分配任务,若任务调度器中为空并且CPU存在未完成线程,此时采用work-stealing算法将CPU的一些任务分配到GPU上运行,以达到负载均衡。
在本发明的有益效果如下:
(1)本发明将因数据依赖而不能划分到GPU上运行的部分循环结构,通过增大任务线程粒度,将数据依赖封闭在任务内部的方法,提高了异构***的计算资源利用率。
(2)本发明在MGPUSim内部新设置了任务调度器和数据缓存,对分配到GPU中的任务进行更细一步划分,提高任务的并行度和计算效率。
(3)本发明采用了work-stealing算法实现异构平台的负载均衡,实现主动式核间任务传输以减轻通信延迟。
附图说明
图1是本发明实施例的程序数据流与任务划分示例;
图2是本发明实施例的任务调度器调度流程示例;
图3是本发明实施例检查平台负载均衡的流程图。
具体实施方式
本发明基于MGPUSim异构平台,对此平台增加资源调度方法,从而说明本发明的发明目的、优点和关键技术特征。
MGPUSim是一个高度可配置的异构平台,用户可自由选择统一的多GPU模型或离散的多GPU模型,以及配置GPU个数,但用户自主配置GPU个数会造成GPU资源浪费,以及对存在数据依赖的任务无法手动分配到GPU上运行,因此可能存在GPU资源利用率低以及资源不均衡的情况,因此在异构模拟器MGPUSim上基于剖析技术以及数据流信息的资源调度方法步骤如下:
步骤一:程序剖析,确定可并行循环体的执行次数。
利用离线剖析技术,选择出程序中的循环结构并统计其循环迭代总数,然后对该循环结构进行插桩操作,以便后续操作和分析。
步骤二:确定循环体的数据流图。
利用LLVM编译框架提供的数据流分析、别名分析、IF转换技术等支持,消除迭代体内部各个基本块之间的控制依赖,将其转换为数据依赖,构建迭代体内部指令间的数据流图。图1(a) 所示即为当前依据指令间数据依赖关系所生成的局部数据流图。
步骤三:设定阈值,计算所需GPU数量。
确定单个GPU计算单元个数,设定阈值为其值的一半,并将循环数对单个GPU计算单元个数取余,将取余所得数值与阈值比较,若小于阈值则最终所需GPU总数为循环迭代总数与单个GPU计算单元个数的比值,否则最终所需GPU总数为该比值+1。
步骤四:根据依赖划分GPU任务大小。
由步骤二得到的数据流图进行分析,得到两条数据流走向,如图1(b)所示,由A1、B1、B3、D1和D3组成第一条依赖回路;由A2、B2、C1、C2、D2和D3组成第三条依赖回路,但第一条依赖回路中包含B1,B3组成的依赖回路,其与D1同时需要A1的数据部分,因此无法对其进行划分,此时需增大划分的线程粒度,将A1、B1、B3、D1划分为一个任务。
步骤五:根据任务的数据流将任务分配到不同的GPU运行。
由步骤四得到的GPU任务,对于存在属于依赖而无法划分的任务,将其进行进一步划分成不同的任务节点,通过设置任务调度器和数据缓存,数据缓存中保存每一个任务节点的结果,任务调度器控制每个任务节点在GPU上运行的先后顺序以及其工作单元的分配,如图2所示,A1为第一个任务节点,B1,B3为第二个任务节点,D1,D3为第三个任务节点,任务调度器控制A1节点先运行,并将数据保存至数据缓存,通过数据缓存将所需A1产生的数据传送到B1,B3节点与D1节点,并将其分配到空闲的GPU上运行,当完成该任务时数据缓存中相应数据将被清空。
步骤六:检查平台负载均衡。
此步检查流程如图3所示,检查任务调度器中是否存在未分配任务或存在待运行任务,若任务调度器中为空且待运行任务已开始运行,此时将采用work-stealing算法将CPU的一些分支任务分配到GPU上运行,以达到负载均衡,此外若一个任务节点的结果需分配给多个任务节点,为了尽快解除阻塞任务避免负载不均衡对性能产生影响,将该任务节点的数据分配给数据重用最多的任务节点。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性的劳动既可做出各种修改或变形仍在本发明的保护范围之内。

Claims (2)

1.一种异构众核上基于剖析技术以及数据流信息的动态资源调度方法,其特征在于,所述异构众核上基于剖析技术以及数据流信息的动态资源调度方法应用于MGPUSim,包括以下步骤:
步骤一:程序剖析,确定可并行循环体的执行次数;
步骤二:确定循环体的数据流图;
步骤三:设定阈值,计算所需GPU数量;
步骤四:根据依赖划分GPU任务大小;
步骤五:根据任务的数据流将任务分配到不同的GPU运行;
步骤六:检查平台负载均衡;
所述的步骤二确定循环间的数据依赖关系;
步骤三通确定单个GPU计算单元个数,设定阈值,得到循环数对单个GPU计算单元个数的比值,并将循环数对单个GPU计算单元个数取余,将取余所得数与阈值比较,得到最终所需GPU总数;
步骤四通过剖析所得循环间的依赖关系,确定划分线程粒度的大小,对因数据依赖而无法划分到GPU的部分增加划分的任务线程粒度大小,将其涉及的相关数据流部分分配到GPU上运行;
步骤五根据步骤二所得数据流图及控制流图,将分配到GPU的任务分为不同的任务节点,并设置任务调度器和数据缓存,数据缓存中保存每一个任务节点的结果,任务调度器控制每个任务节点在GPU上运行的先后顺序以及其工作单元的分配;
步骤六通过检查任务调度器中是否存在未分配任务,若任务调度器中为空并且CPU存在未完成线程,此时采用work-stealing算法主动将CPU的一些任务分配到GPU上运行,以达到负载均衡。
2.如权利要求1所述的异构众核上基于剖析技术以及数据流信息的动态资源调度方法,其特征在于,所述步骤一通过程序剖析技术获得程序运行时信息,收集循环迭代次数。
CN202010620529.9A 2020-07-01 2020-07-01 异构众核上基于剖析技术以及数据流信息的动态资源调度方法 Active CN113886057B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010620529.9A CN113886057B (zh) 2020-07-01 2020-07-01 异构众核上基于剖析技术以及数据流信息的动态资源调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010620529.9A CN113886057B (zh) 2020-07-01 2020-07-01 异构众核上基于剖析技术以及数据流信息的动态资源调度方法

Publications (2)

Publication Number Publication Date
CN113886057A CN113886057A (zh) 2022-01-04
CN113886057B true CN113886057B (zh) 2024-06-28

Family

ID=79012592

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010620529.9A Active CN113886057B (zh) 2020-07-01 2020-07-01 异构众核上基于剖析技术以及数据流信息的动态资源调度方法

Country Status (1)

Country Link
CN (1) CN113886057B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114741207B (zh) * 2022-06-10 2022-09-30 之江实验室 一种基于多维度组合并行的gpu资源调度方法和***

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014143067A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Work stealing in heterogeneous computing systems
CN103699365B (zh) * 2014-01-07 2016-10-05 西南科技大学 一种众核处理器结构上避免无关依赖的线程划分方法
US9778961B2 (en) * 2015-09-14 2017-10-03 Qualcomm Incorporated Efficient scheduling of multi-versioned tasks
CN105677486B (zh) * 2016-01-08 2019-03-22 上海交通大学 数据并行处理方法及***
CN106874113A (zh) * 2017-01-19 2017-06-20 国电南瑞科技股份有限公司 一种cpu+多gpu异构模式静态安全分析计算方法
CN107832146A (zh) * 2017-10-27 2018-03-23 北京计算机技术及应用研究所 高可用集群***中的线程池任务处理方法
CN110187968B (zh) * 2019-05-22 2023-03-14 上海交通大学 异构计算环境下的图数据处理加速方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"计算密集型科学计算应用在多GPU平台上的并行化设计与实现";王欣夷;《中国优秀硕士学位论文全文数据库 信息科技辑》;20210815(2021年第08期);第I137-15页 *

Also Published As

Publication number Publication date
CN113886057A (zh) 2022-01-04

Similar Documents

Publication Publication Date Title
US8707314B2 (en) Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations
Sheikh et al. Energy-efficient multicore scheduling for hard real-time systems: A survey
Tang et al. Controlled kernel launch for dynamic parallelism in GPUs
Pérache et al. MPC: A unified parallel runtime for clusters of NUMA machines
US8364908B2 (en) Migrating program objects in a multi-node computer system
CN101551761A (zh) 一种异构多处理器中共享流内存的方法
US8209299B2 (en) Selectively generating program objects on remote node of a multi-node computer system
Sena et al. Autonomic malleability in iterative mpi applications
Cojean et al. Resource aggregation for task-based cholesky factorization on top of modern architectures
Wu et al. Using hybrid MPI and OpenMP programming to optimize communications in parallel loop self-scheduling schemes for multicore PC clusters
Clarke et al. Fupermod: A framework for optimal data partitioning for parallel scientific applications on dedicated heterogeneous hpc platforms
CN113886057B (zh) 异构众核上基于剖析技术以及数据流信息的动态资源调度方法
Pilla et al. Asymptotically optimal load balancing for hierarchical multi-core systems
Yang et al. A parallel loop self-scheduling on extremely heterogeneous pc clusters
Brady et al. SmartGridRPC: The new RPC model for high performance Grid computing
Cho et al. Adaptive space-shared scheduling for shared-memory parallel programs
Neelima et al. Communication and computation optimization of concurrent kernels using kernel coalesce on a GPU
Tarakji et al. The development of a scheduling system GPUSched for graphics processing units
Jeong et al. Elastic Memory: Bring Elasticity Back to {In-Memory} Big Data Analytics
Guim et al. Enabling gpu and many-core systems in heterogeneous hpc environments using memory considerations
Jadidi et al. Optimizing energy consumption in GPUS through feedback-driven CTA scheduling
Bronevetsky et al. Clomp: Accurately characterizing OpenMP application overheads
Kim et al. FusionFlow: Accelerating Data Preprocessing for Machine Learning with CPU-GPU Cooperation
Avron et al. Performance of a hardware scheduler for many-core architecture
Thomas et al. Application aware scalable architecture for GPGPU

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