CN110502334A - 基于混合内存架构的带宽感知任务窃取方法、系统及芯片 - Google Patents

基于混合内存架构的带宽感知任务窃取方法、系统及芯片 Download PDF

Info

Publication number
CN110502334A
CN110502334A CN201810471957.2A CN201810471957A CN110502334A CN 110502334 A CN110502334 A CN 110502334A CN 201810471957 A CN201810471957 A CN 201810471957A CN 110502334 A CN110502334 A CN 110502334A
Authority
CN
China
Prior art keywords
task
memory
node
subtask
cpu
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.)
Pending
Application number
CN201810471957.2A
Other languages
English (en)
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.)
Shanghai Jiaotong University
Original Assignee
Shanghai 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 Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN201810471957.2A priority Critical patent/CN110502334A/zh
Publication of CN110502334A publication Critical patent/CN110502334A/zh
Pending legal-status Critical Current

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/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
    • 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明提供一种基于混合内存架构的带宽感知任务窃取方法、系统及芯片,所述系统包括:内存分配模块,根据各个内存节点的带宽大小成比例的将程序数据分配到各个内存节点上;带宽感知的平衡访存模块,获得数据页的热度信息,估算出每个内存节点的访存信息并根据所述热度信息和所述访存信息将过载节点上的数据页迁移到相应的欠载节点上;多层次任务窃取模块,为每一个子任务确定最优的CPU,当任一子任务的CPU完成分配给它的任务后,从任务池中进行多层任务窃取。本发明可以在相同异构多核架构中获取更低的能耗,在无需升级硬件设备与不增加能耗的提前下,极大化并行计算性能,可以间接为潜在的混合内存架构的多核芯片提供调度技术的支持。

Description

基于混合内存架构的带宽感知任务窃取方法、系统及芯片
技术领域
本发明涉及芯片技术领域,特别是涉及运行时系统技术领域,具体为一种基于混合内存架构的带宽感知任务窃取方法、系统及芯片。
背景技术
运行时系统(Runtime system),是程序运行模型中的控制部分。运行时系统是在程序执行的生命周期里工作。每一种编程语言都会设计其自身的运行模型,而大多数编程语言都实现了一定形式的运行时系统,主要功能是在程序运行时,实现该语言所要求的控制功能,满足语言所具备的特性。其中,最著名的例子是MIT Cilk运行时系统,它是一个并行编程模型,它的运行时系统主要用于实现程序运行的并行化特性。我们还需要一个运行时系统来处理编译后的代码。
为了满足日益增长的高性能计算的需求,硬件制造厂商一直在致力于在单个计算机上集成更多的核,多核处理器现在已经在学术界和工业界成为了主流处理器。与此同时,在传统的DDR内存之外,基于新的3D堆叠技术生产的高带宽内存HBM也被提出用于提高内存访问性能。然而,由于新的内存技术的相关缺点,HBM不能大量集合在新的计算机上,面对这种情况,混合内存结构成为了高性能计算机的选择。在混合内存架构下,每个CPU分别拥有自己的DDR内存节点和HBM内存节点,DDR节点和HBM节点拥有相似的访问延迟,但HBM节点比DDR节点拥有更大的内存带宽。
对于多核处理器而言,均衡多个核的负载是十分必要的,这样计算机才能获得更佳的性能。又因为让程序员来进行手动负载均衡是效率低下且效果不佳的,拥有动态负载均衡的运行时系统被大家广泛所研究。而运行时系统可以按照调度策略分为任务窃取work-stealing和任务共享work-sharing两种。
在任务共享策略中,所有的核共享一个中央任务池。为了保证计算任务的正确执行,所有的核在获取任务时都要对中央任务池进行加锁。而对于任务窃取策略而言,每个核都有自己单独的任务池,每次都从自己的的任务池中添加或者删除任务,直到其任务队列为空时,其才选择从其他核的任务池中尝试偷取任务,此时才需要一次加锁操作。正是因为任务窃取策略有较少的锁冲突,在多核架构下,其拥有较好的性能表现。
尽管任务窃取策略在传统的单一内存(DDR)的多核架构下有不错的性能,但是在新的混合内存架构下,该策略却有非常差的访存特性。由于混合内存架构拥有两种内存,不同的内存有不同的带宽,传统的任务窃取策略无法感知异构的内存特点。在这样的情况,传统的的任务窃取策略首先不能利用好已有的高带宽,其次,任意的任务分配和任务窃取导致了大量的远程内存访问,而大量的远程访问导致了性能的进一步下降。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于混合内存架构的带宽感知任务窃取方法、系统及芯片,用于解决现有技术中异构多核架构中动态任务窃取内存访问量大的问题。
为实现上述目的及他相关目的,本发明在一方面提供一种基于混合内存架构的带宽感知任务窃取运行时调度系统,所述带宽感知任务窃取运行时调度系统包括:内存分配模块,根据各个内存节点的带宽大小成比例的将程序数据分配到各个内存节点上;带宽感知的平衡访存模块,获得数据页的热度信息,估算出每个内存节点的访存信息并根据所述热度信息和所述访存信息将过载节点上的数据页迁移到相应的欠载节点上;多层次任务窃取模块,为每一个子任务确定最优的CPU,当任一子任务的CPU完成分配给它的任务后,从任务池中进行多层任务窃取。
于本发明的一实施例中,将所述程序数据中相邻数据分配到同一个内存节点上。
于本发明的一实施例中,所述带宽感知的平衡访存模块包括:热度识别排序单元,用于识别不同数据页的热度信息并根据热度的大小对所述热度信息进行排序;存数估算单元,用于根据所有数据页的热度信息和位置信息,估算出所有内存节点的访存信息;迁移单元,根据所述热度信息的排序和所述访存信息将过载节点上的数据页迁移到相应的欠载节点上。
于本发明的一实施例中,所述多层次任务窃取模块包括:子任务划分单元,用于根据所述程序数据划分形成执行所述程序数据的多个子任务;存数分析单元,用于对各所述子任务进行数据分析获取各所述子任务相应的本地访存数和远程访存数;最优确定单元,用于根据各所述子任务相应的本地访存数和远程访存数确定各子任务对应的最优的CPU;任务窃取单元,用于在任一子任务的CPU完成分配给它的任务后,从任务池中进行多层任务窃取。
于本发明的一实施例中,所述从任务池中进行多层任务窃取包括:在所述子任务的CPU的一个核完成分配给它的任务后,任务窃取优先级排序为:从该核的任务池中进行任务窃取,其次从该CPU的本地性任务池中窃取,然后再从该CPU的任务池中窃取,最后再从其他CPU的远程性任务池和本地性任务池中窃取。
本发明在另一方面还提供一种基于混合内存架构的带宽感知任务窃取方法,所述基于混合内存架构的带宽感知任务窃取方法包括:根据各个内存节点的带宽大小成比例的将程序数据分配到各个内存节点上;获得数据页的热度信息,估算出每个内存节点的访存信息并根据所述热度信息和所述访存信息将过载节点上的数据页迁移到相应的欠载节点上;为每一个子任务确定最优的CPU,当任一子任务的CPU完成分配给它的任务后,从任务池中进行多层任务窃取。
于本发明的一实施例中,所述获得数据页的热度信息,估算出每个内存节点的访存信息并根据所述热度信息和所述访存信息将过载节点上的数据页迁移到相应的欠载节点上包括:识别不同数据页的热度信息并根据热度的大小对所述热度信息进行排序;根据所有数据页的热度信息和位置信息,估算出所有内存节点的访存信息;根据所述热度信息的排序和所述访存信息将过载节点上的数据页迁移到相应的欠载节点上。
于本发明的一实施例中,所述为每一个子任务确定最优的CPU,当任一子任务的CPU完成分配给它的任务后,从任务池中进行多层任务窃取包括:根据所述程序数据划分形成执行所述程序数据的多个子任务;对各所述子任务进行数据分析获取各所述子任务相应的本地访存数和远程访存数;根据各所述子任务相应的本地访存数和远程访存数确定各子任务对应的最优的CPU;在任一子任务的CPU完成分配给它的任务后,从任务池中进行多层任务窃取。
于本发明的一实施例中,所述从任务池中进行多层任务窃取包括:在所述子任务的CPU的一个核完成分配给它的任务后,任务窃取优先级排序为:从该核的任务池中进行任务窃取,其次从该CPU的本地性任务池中窃取,然后再从该CPU的任务池中窃取,最后再从其他CPU的远程性任务池和本地性任务池中窃取。
本发明还提供一种芯片,所述芯片为异构多核硬件结构,所述芯片的处理器运行时执行如上所述的基于混合内存架构的带宽感知任务窃取方法。
如上所述,本发明的一种基于混合内存架构的带宽感知任务窃取方法、系统及芯片,具有以下有益效果:
1、本发明可以在相同异构多核架构中获取更低的能耗,在无需升级硬件设备与不增加能耗的提前下,极大化并行计算性能。
2、本发明的成果可以间接为潜在的混合内存架构的多核芯片提供调度技术的支持。
3、本发明的成果可以使构建具有商业意义的、基于混合内存架构的多核芯片的动态任务调度系统,面向用户提供程序动态任务调度服务。
附图说明
图1显示为本发明的一种基于混合内存架构的带宽感知任务窃取方法的流程示意图。
图2显示为本发明的一种基于混合内存架构的带宽感知任务窃取方法中平衡访存的流程示意图。
图3显示为本发明的一种基于混合内存架构的带宽感知任务窃取方法中多层任务窃取的流程示意图。
图4显示为本发明的一种基于混合内存架构的带宽感知任务窃取运行时调度系统的原理框图。
图5显示为本发明的一种基于混合内存架构的带宽感知任务窃取运行时调度系统中带宽感知的平衡访存模块的原理框图。
图6显示为本发明的一种基于混合内存架构的带宽感知任务窃取运行时调度系统中多层次任务窃取模块的原理框图。
图7显示为本发明的一种基于混合内存架构的带宽感知任务窃取运行时调度系统对应的异构多核硬件的芯片结构示意图。
图8显示为本发明的基于混合内存架构的带宽感知任务窃取方法、系统及芯片的实施过程示意图。
元件标号说明
100 基于混合内存架构的带宽感知任务窃取运行时调度系统
110 内存分配模块
120 带宽感知的平衡访存模块
121 热度识别排序单元
122 存数估算单元
123 迁移单元
130 多层次任务窃取模块
131 子任务划分单元
132 存数分析单元
133 最优确定单元
134 任务窃取单元
200 用户程序模块
300 源对源编译器模块
S110~S130 步骤
S121~S123 步骤
S131~S134 步骤
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
本实施例的目的在于提供一种基于混合内存架构的带宽感知任务窃取方法、系统及芯片,用于解决现有技术中异构多核架构中动态任务窃取内存访问量大的问题。以下将详细阐述本发明的一种基于混合内存架构的带宽感知任务窃取方法、系统及芯片的原理及实施方式,使本领域技术人员不需要创造性劳动即可理解本发明的一种基于混合内存架构的带宽感知任务窃取方法、系统及芯片。
具体地,本实施例旨在设计、实现一个高性能、低能耗、基于混合内存架构的带宽感知任务窃取方法、系统及芯片,便于应用开发人员可以在无需修改源码的前提下,就可以在混合内存架构下获得更好的性能。
以下对本实施例的基于混合内存架构的带宽感知任务窃取方法、系统及芯片进行详细说明。
如图1所示,本实施例提供一种基于混合内存架构的带宽感知任务窃取方法,所述控制方法包括:
步骤S110,根据各个内存节点的带宽大小成比例的将程序数据分配到各个内存节点上;
步骤S120,获得数据页的热度信息,估算出每个内存节点的访存信息并根据所述热度信息和所述访存信息将过载节点上的数据页迁移到相应的欠载节点上;
步骤S130,为每一个子任务确定最优的CPU,当任一子任务的CPU完成分配给它的任务后,从任务池中进行多层任务窃取。
以下对本实施例中基于混合内存架构的带宽感知任务窃取方法的步骤S110至步骤S130进行详细说明。
步骤S110,根据各个内存节点的带宽大小成比例的将程序数据分配到各个内存节点上。
于步骤S110中,进行程序的数据分配。由于在混合内存架构下,每个CPU都有两个属于自己的内存节点,不同的内存节点之间带宽是不同的,为了达到一个较优的初始分配结果,于步骤S110中,按照内存节点的带宽大小成比例的将数据分配到各个内存节点上。
步骤S110利用编译模块的支持,指定所有数据的分配节点ID,以此利用到所有的内存节点。例如,若一个内存节点的带宽是另一个内存节点的两倍,则分配在该内存节点上的数据也是另一个内存节点上数据的两倍.
其中,于本实施例中,将所述程序数据中相邻数据分配到同一个内存节点上,即相邻的数据被存储在同一个内存节点上,以较好的数据本地性和从数据预取中获得更大的性能收益。
步骤S120,获得数据页的热度信息,估算出每个内存节点的访存信息并根据所述热度信息和所述访存信息将过载节点上的数据页迁移到相应的欠载节点上。
具体地,于本实施例中,如图2所示,所述获得数据页的热度信息,估算出每个内存节点的访存信息并根据所述热度信息和所述访存信息将过载节点上的数据页迁移到相应的欠载节点上包括:
步骤S121,识别不同数据页的热度信息并根据热度的大小对所述热度信息进行排序;
步骤S122,根据所有数据页的热度信息和位置信息,估算出所有内存节点的访存信息;
步骤S123,根据所述热度信息的排序和所述访存信息将过载节点上的数据页迁移到相应的欠载节点上。
于本实施例中,步骤S120负责各个内存节点的访存平衡。由于一个程序的不同数据有不同的热度,在步骤S110中按照带宽大小进行数据分配还是会造成相当的访存不均衡。为了解决实际运行中的访存不均衡,通过步骤S121识别不同数据页的热度,并将这些数据页进行排序,通过步骤S122获得每个内存节点的本地访存数和远程访存数,根据获得数据页的热度信息,估算出每个内存节点的访存信息,步骤S123中设计一个平衡算法,算法如下表1所示,通过步骤S123将过载节点上的数据页迁移到相应的欠载节点上,达到一个较优的访存情况,最终情况下,每个节点的访存数与其带宽的大小成相应比例,即带宽越大其访存数相应越大。
表1
步骤S130,为每一个子任务确定最优的CPU,当任一子任务的CPU完成分配给它的任务后,从任务池中进行多层任务窃取。
具体地,于本实施例中,如图3所示,所述为每一个子任务确定最优的CPU,当任一子任务的CPU完成分配给它的任务后,从任务池中进行多层任务窃取包括:
步骤S131,根据所述程序数据划分形成执行所述程序数据的多个子任务;
步骤S132,对各所述子任务进行数据分析获取各所述子任务相应的本地访存数和远程访存数;
步骤S133,根据各所述子任务相应的本地访存数和远程访存数确定各子任务对应的最优的CPU;
步骤S134,在任一子任务的CPU完成分配给它的任务后,从任务池中进行多层任务窃取。其中,所述从任务池中进行多层任务窃取包括:在所述子任务的CPU的一个核完成分配给它的任务后,任务窃取优先级排序为:从该核的任务池中进行任务窃取,其次从该CPU的本地性任务池中窃取,然后再从该CPU的任务池中窃取,最后再从其他CPU的远程性任务池和本地性任务池中窃取。
通过步骤S131首先将整个程序划分为合适大小的子任务,然后通过步骤S132对每个子任务进行在线分析然后得到相应的本地访存数和远程访存数,然后通过步骤S133根据这些访存数据确定每个子任务拥有最好本地性的CPU。在确定好每个子任务最优本地性的CPU之后,通过步骤S134进行多级的任务窃取机制,在此机制下,当一个CPU内的一个核完成了相应的自己的任务后,首先从自己的任务池中进行任务窃取,其次从该CPU本地性任务池中窃取,然后再从该CPU任务池中窃取,最后再从其他CPU的远程性任务池和本地性任务池中窃取,已解决最后的轻微的负载不均衡。
为实现上述基于混合内存架构的带宽感知任务窃取方法,本实施例提供一种基于混合内存架构的带宽感知任务窃取运行时调度系统100,如图4所示,所述基于混合内存架构的带宽感知任务窃取运行时调度系统100包括:内存分配模块110,带宽感知的平衡访存模块120和多层次任务窃取模块130。
如图4所示,本实施例中基于混合内存架构的带宽感知任务窃取运行时调度系统100分别与用户程序模块200和源对源编译器模块300相连,用户程序模块200运行于用户API层、源对源编译器模块300运行于编译层和带宽感知任务窃取运行时调度系统运行于运行时系统层。
其中,用户程序模块200主要由用户源代码所组成,用户通过编写C语言源代码,并按照规范对程序进行并行化,便可在异构多核架构上运行,用户通过调用相应的API实现相应的源代码,便可以在新的混合内存架构下进行运行。
所述源对源编译器模块300负责编译用户源代码。首先将用户源代码中调用API接口的代码段翻译成C语言程序,并将程序执行入口代码段、运行时系统控制代码段等添加至用户源代码中,再编译成生成可执行程序。
具体地,所述源对源编译器模块300首先负责编译用户源代码,将用户源代码中调用的相应接口翻译为C语言程序,进而编译成可执行程序;其次负责调整相应的C语言接口,使程序能够直接使用到新的高带宽内存,也使得在之后的运行时调度模块中能够控制内存的分配,更好的提升程序性能。具体而言,新的高带宽内存HBM需要新的API进行调用,而传统的API不能直接申请高带宽内存节点的内存空间。若需要编程人员手动的指定相关的内存分配,则是非常耗费精力且效果不佳的。所以本发明通过相应的带宽感知的源对源编译器模块300,根据混合内存的相应特点对旧的API进行一个替换,一方面省去了用户调整代码的麻烦,另一方面获得了更优的访问性能。
本实施例中的基于混合内存架构的带宽感知任务窃取运行时调度系统100运行于运行时系统层,运行时系统层是主要的软件系统,于本实施例中,在用户可执行程序运行时,运行时系统通过基于混合内存架构的带宽感知任务窃取运行时调度系统100实时地进行异构核间的负载均衡工作。基于混合内存架构的带宽感知任务窃取运行时调度系统100是主要的软件系统,在用户可执行程序运行时,基于混合内存架构的带宽感知任务窃取运行时调度系统100通过各个子模块之间的协同合作实时地进行多核之间的负载均衡工作。
以下对本实施例中的内存分配模块110,带宽感知的平衡访存模块120和多层次任务窃取模块130进行详细说明。
于本实施例中,所述内存分配模块110根据各个内存节点的带宽大小成比例的将程序数据分配到各个内存节点上。
所述内存分配模块110进行程序的数据分配。由于在混合内存架构下,每个CPU都有两个属于自己的内存节点,不同的内存节点之间带宽是不同的,为了达到一个较优的初始分配结果,所述内存分配模块110按照内存节点的带宽大小成比例的将数据分配到各个内存节点上。
所述内存分配模块110利用所述源对源编译器模块300的支持,指定所有数据的分配节点ID,以此利用到所有的内存节点。例如,若一个内存节点的带宽是另一个内存节点的两倍,则分配在该内存节点上的数据也是另一个内存节点上数据的两倍.
其中,于本实施例中,所述内存分配模块110将所述程序数据中相邻数据分配到同一个内存节点上,即相邻的数据被存储在同一个内存节点上,以较好的数据本地性和从数据预取中获得更大的性能收益。
于本实施例中,所述带宽感知的平衡访存模块120获得数据页的热度信息,估算出每个内存节点的访存信息并根据所述热度信息和所述访存信息将过载节点上的数据页迁移到相应的欠载节点上。
具体地,如图5所示,于本实施例中,所述带宽感知的平衡访存模块120包括:热度识别排序单元121,用于识别不同数据页的热度信息并根据热度的大小对所述热度信息进行排序;存数估算单元122,用于根据所有数据页的热度信息和位置信息,估算出所有内存节点的访存信息;迁移单元123,根据所述热度信息的排序和所述访存信息将过载节点上的数据页迁移到相应的欠载节点上。
于本实施例中,所述多层次任务窃取模块130为每一个子任务确定最优的CPU,当任一子任务的CPU完成分配给它的任务后,从任务池中进行多层任务窃取。
于本实施例中,所述带宽感知的平衡访存模块120负责各个内存节点的访存平衡。由于一个程序的不同数据有不同的热度,在所述内存分配模块110中按照带宽大小进行数据分配还是会造成相当的访存不均衡。为了解决实际运行中的访存不均衡,通过热度识别排序单元121识别不同数据页的热度,并将这些数据页进行排序,通过存数估算单元122获得每个内存节点的本地访存数和远程访存数,根据获得数据页的热度信息,估算出每个内存节点的访存信息,所述迁移单元123中设计一个平衡算法,算法如上表1所示,通过所述迁移单元123将过载节点上的数据页迁移到相应的欠载节点上,达到一个较优的访存情况,最终情况下,每个节点的访存数与其带宽的大小成相应比例,即带宽越大其访存数相应越大。
具体地,如图6所示,于本实施例中,所述多层次任务窃取模块130包括:子任务划分单元131,用于根据所述程序数据划分形成执行所述程序数据的多个子任务;存数分析单元132,用于对各所述子任务进行数据分析获取各所述子任务相应的本地访存数和远程访存数;最优确定单元133,用于根据各所述子任务相应的本地访存数和远程访存数确定各子任务对应的最优的CPU;任务窃取单元134,用于在任一子任务的CPU完成分配给它的任务后,从任务池中进行多层任务窃取。
其中,于本实施例中,所述从任务池中进行多层任务窃取包括:在所述子任务的CPU的一个核完成分配给它的任务后,任务窃取优先级排序为:从该核的任务池中进行任务窃取,其次从该CPU的本地性任务池中窃取,然后再从该CPU的任务池中窃取,最后再从其他CPU的远程性任务池和本地性任务池中窃取。
通过子任务划分单元131首先将整个程序划分为合适大小的子任务,然后通过存数分析单元132对每个子任务进行在线分析然后得到相应的本地访存数和远程访存数,然后通过最优确定单元133根据这些访存数据确定每个子任务拥有最好本地性的CPU。在确定好每个子任务最优本地性的CPU之后,通过任务窃取单元134进行多级的任务窃取机制,在此机制下,当一个CPU内的一个核完成了相应的自己的任务后,首先从自己的任务池中进行任务窃取,其次从该CPU本地性任务池中窃取,然后再从该CPU任务池中窃取,最后再从其他CPU的远程性任务池和本地性任务池中窃取,已解决最后的轻微的负载不均衡。
此外,如图7所示,本实施例还提供一种芯片,所述芯片为异构多核硬件结构,所述芯片的处理器运行时执行如上所述的基于混合内存架构的带宽感知任务窃取方法。上述已经对所述基于混合内存架构的带宽感知任务窃取方法进行了详细说明,在此不再赘述。
所述芯片是一个基于混合内存的NUMA多核架构,如图7所示,是一个多核双CPU的KNL芯片示意图。图7中“Socket”代表CPU,每个CPU内有多个核,每个核具有独立的L1Cache,在同一个CPU内的部分核有一个共享的Shared L2Cache,CPU间通过一个高速互连链路相连。
DDR节点:如图7所示,每个Socket有独立的DDR内存节点,远程内存数据访问需要通过高速互连链路,所产生的开销在远大于本地内存访问。
HBM节点:如图7所示,每个Socket有独立的HBM内存节点,远程内存数据访问需要通过高速互连链路,所产生的开销在远大于本地内存访问,HBM的带宽比DDR的带宽要大。
Socket:每个CPU称为Socket节点,对应一个DDR节点和一个HBM节点;在多核架构下,不同CPU之间的性能没有差异。
为使本领域技术人员进一步理解本实施例中的一种基于混合内存架构的带宽感知任务窃取方法、系统,如图8所示,以下以具体实例说明本实施例中基于混合内存架构的带宽感知任务窃取方法、系统的实施过程。
1)用户编写程序:属于用户程序模块200功能。用户通过调用传统的API函数,按照编程模型的要求编写代码。
2)新API替换:属于源对源编译器模块300功能。由于新的高带宽内存HBM需要新的API进行使用,因此在这个过程中,需要将用户所使用的的传统的内存分配API翻译成相应的新的API,以支持运行时系统中的针对混合内存架构的内存分配功能。
3)编译:属于源对源编译器模块300功能之一。
4)编译成功判断:属于源对源编译器模块300功能之一。如果编译成功,则由用户决定是否执行;如果编译失败,则返回用户错误信息,直到用户完成代码修正并再次进入编译流程。
5)内存分配:属于运行时调度系统的混合架构感知的内存分配模块110。通过从源对源编译器模块300得到的用户可执行程序。在内存分配阶段,根据各个内存节点的带宽比例,将整个程序的数据按照带宽大小,成比例的分配到各个内存节点上。
6)热数据感知及迁移:属于运行时调度系统的带宽感知的平衡访存模块120。在第一次迭代时,若不同内存节点的访问情况与其带宽的大小不匹配,带宽感知的平衡访存模块120进一步平衡所有内存节点的内存访问。为了实现最优的访问平衡,本模块在本次迭代中,将访问过载的内存节点中的数据迁移到访问欠载的内存节点。
7)任务本地性感知及分配:属于运行时调度系统的多层次任务窃取模块130。在接下来的几次迭代中,运行时调度系统对每个任务寻找有最佳访存性能的CPU,在该CPU上任务有最多的本地访存。为了减少分析任务的开销,运行时调度系统将许多任务打包成槽间子任务,针对每个槽间子任务进行整体的分析和迁移。因为每个计算机有有限的CPU,运行时调度系统只需要有限次数的尝试就可以找到所有槽间子任务的最佳CPU。通过任务本地性感知以后,在每次迭代的开始阶段,每个槽间子任务都直接被分配到相应的CPU的任务队列中。与此同时,当一个CPU完成了其所有的已分配给它的所有任务,它随机选取一个CPU尝试进行窃取任务,进而解决最后的轻微的负载不均衡。
综上所述,本发明可以在相同异构多核架构中获取更低的能耗,在无需升级硬件设备与不增加能耗的提前下,极大化并行计算性能;本发明的成果可以间接为潜在的混合内存架构的多核芯片提供调度技术的支持;本发明的成果可以使构建具有商业意义的、基于混合内存架构的多核芯片的动态任务调度系统,面向用户提供程序动态任务调度服务。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

Claims (10)

1.一种基于混合内存架构的带宽感知任务窃取运行时调度系统,其特征在于,所述带宽感知任务窃取运行时调度系统包括:
内存分配模块,根据各个内存节点的带宽大小成比例的将程序数据分配到各个内存节点上;
带宽感知的平衡访存模块,获得数据页的热度信息,估算出每个内存节点的访存信息并根据所述热度信息和所述访存信息将过载节点上的数据页迁移到相应的欠载节点上;
多层次任务窃取模块,为每一个子任务确定最优的CPU,当任一子任务的CPU完成分配给它的任务后,从任务池中进行多层任务窃取。
2.根据权利要求1所述的基于混合内存架构的带宽感知任务窃取运行时调度系统,其特征在于,将所述程序数据中相邻数据分配到同一个内存节点上。
3.根据权利要求1所述的基于混合内存架构的带宽感知任务窃取运行时调度系统,其特征在于,所述带宽感知的平衡访存模块包括:
热度识别排序单元,用于识别不同数据页的热度信息并根据热度的大小对所述热度信息进行排序;
存数估算单元,用于根据所有数据页的热度信息和位置信息,估算出所有内存节点的访存信息;
迁移单元,根据所述热度信息的排序和所述访存信息将过载节点上的数据页迁移到相应的欠载节点上。
4.根据权利要求1所述的基于混合内存架构的带宽感知任务窃取运行时调度系统,其特征在于,所述多层次任务窃取模块包括:
子任务划分单元,用于根据所述程序数据划分形成执行所述程序数据的多个子任务;
存数分析单元,用于对各所述子任务进行数据分析获取各所述子任务相应的本地访存数和远程访存数;
最优确定单元,用于根据各所述子任务相应的本地访存数和远程访存数确定各子任务对应的最优的CPU;
任务窃取单元,用于在任一子任务的CPU完成分配给它的任务后,从任务池中进行多层任务窃取。
5.根据权利要求4所述的基于混合内存架构的带宽感知任务窃取运行时调度系统,其特征在于,所述从任务池中进行多层任务窃取包括:
在所述子任务的CPU的一个核完成分配给它的任务后,任务窃取优先级排序为:从该核的任务池中进行任务窃取,其次从该CPU的本地性任务池中窃取,然后再从该CPU的任务池中窃取,最后再从其他CPU的远程性任务池和本地性任务池中窃取。
6.一种基于混合内存架构的带宽感知任务窃取方法,其特征在于,所述基于混合内存架构的带宽感知任务窃取方法包括:
根据各个内存节点的带宽大小成比例的将程序数据分配到各个内存节点上;
获得数据页的热度信息,估算出每个内存节点的访存信息并根据所述热度信息和所述访存信息将过载节点上的数据页迁移到相应的欠载节点上;
为每一个子任务确定最优的CPU,当任一子任务的CPU完成分配给它的任务后,从任务池中进行多层任务窃取。
7.根据权利要求6所述的基于混合内存架构的带宽感知任务窃取方法,其特征在于,所述获得数据页的热度信息,估算出每个内存节点的访存信息并根据所述热度信息和所述访存信息将过载节点上的数据页迁移到相应的欠载节点上包括:
识别不同数据页的热度信息并根据热度的大小对所述热度信息进行排序;
根据所有数据页的热度信息和位置信息,估算出所有内存节点的访存信息;
根据所述热度信息的排序和所述访存信息将过载节点上的数据页迁移到相应的欠载节点上。
8.根据权利要求6所述的基于混合内存架构的带宽感知任务窃取方法,其特征在于,所述为每一个子任务确定最优的CPU,当任一子任务的CPU完成分配给它的任务后,从任务池中进行多层任务窃取包括:
根据所述程序数据划分形成执行所述程序数据的多个子任务;
对各所述子任务进行数据分析获取各所述子任务相应的本地访存数和远程访存数;
根据各所述子任务相应的本地访存数和远程访存数确定各子任务对应的最优的CPU;
在任一子任务的CPU完成分配给它的任务后,从任务池中进行多层任务窃取。
9.根据权利要求8所述的基于混合内存架构的带宽感知任务窃取方法,其特征在于,所述从任务池中进行多层任务窃取包括:
在所述子任务的CPU的一个核完成分配给它的任务后,任务窃取优先级排序为:从该核的任务池中进行任务窃取,其次从该CPU的本地性任务池中窃取,然后再从该CPU的任务池中窃取,最后再从其他CPU的远程性任务池和本地性任务池中窃取。
10.一种芯片,所述芯片为异构多核硬件结构,其特征在于,所述芯片的处理器运行时执行如权利要求6至权利要求9任一权利要求所述的基于混合内存架构的带宽感知任务窃取方法。
CN201810471957.2A 2018-05-17 2018-05-17 基于混合内存架构的带宽感知任务窃取方法、系统及芯片 Pending CN110502334A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810471957.2A CN110502334A (zh) 2018-05-17 2018-05-17 基于混合内存架构的带宽感知任务窃取方法、系统及芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810471957.2A CN110502334A (zh) 2018-05-17 2018-05-17 基于混合内存架构的带宽感知任务窃取方法、系统及芯片

Publications (1)

Publication Number Publication Date
CN110502334A true CN110502334A (zh) 2019-11-26

Family

ID=68583911

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810471957.2A Pending CN110502334A (zh) 2018-05-17 2018-05-17 基于混合内存架构的带宽感知任务窃取方法、系统及芯片

Country Status (1)

Country Link
CN (1) CN110502334A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111208948A (zh) * 2020-01-13 2020-05-29 华东师范大学 一种基于混合式存储的请求分发方法
CN111367639A (zh) * 2020-03-06 2020-07-03 中国科学技术大学 面向异构突发数据缓存的基于结构感知的i/o调度方法
WO2023051359A1 (zh) * 2021-09-30 2023-04-06 华为技术有限公司 控制内存带宽的方法、装置、处理器及计算设备
CN116339944A (zh) * 2023-03-14 2023-06-27 海光信息技术股份有限公司 任务处理方法、芯片、多芯片模块、电子设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103942109A (zh) * 2014-05-04 2014-07-23 江苏物联网研究发展中心 基于多核dsp的自适应任务调度方法
CN104239520A (zh) * 2014-09-17 2014-12-24 西安交通大学 一种基于历史信息的hdfs数据块放置策略
CN104657198A (zh) * 2015-01-24 2015-05-27 深圳职业技术学院 Numa架构系统在虚拟机环境中的访存优化方法及系统
CN107168654A (zh) * 2017-05-26 2017-09-15 华中科技大学 一种基于数据对象热度的异构内存分配方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103942109A (zh) * 2014-05-04 2014-07-23 江苏物联网研究发展中心 基于多核dsp的自适应任务调度方法
CN104239520A (zh) * 2014-09-17 2014-12-24 西安交通大学 一种基于历史信息的hdfs数据块放置策略
CN104657198A (zh) * 2015-01-24 2015-05-27 深圳职业技术学院 Numa架构系统在虚拟机环境中的访存优化方法及系统
CN107168654A (zh) * 2017-05-26 2017-09-15 华中科技大学 一种基于数据对象热度的异构内存分配方法及系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CHIACHEN CHOU,AAMER JALEEL,MOINUDDIN QURESHI: "BATMAN: Techniques for Maximizing System Bandwidth of Memory Systems with Stacked-DRAM", 《ACM》 *
刘建矿,于炯,英昌甜,鲁亮: "基于内存云架构的带宽负载均衡算法", 《计算机工程与设计》 *
陈全: "面向复杂并行架构的高性能低功耗任务调度的研究", 《中国博士学位论文全文数据库 信息科技辑》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111208948A (zh) * 2020-01-13 2020-05-29 华东师范大学 一种基于混合式存储的请求分发方法
CN111367639A (zh) * 2020-03-06 2020-07-03 中国科学技术大学 面向异构突发数据缓存的基于结构感知的i/o调度方法
WO2023051359A1 (zh) * 2021-09-30 2023-04-06 华为技术有限公司 控制内存带宽的方法、装置、处理器及计算设备
CN116339944A (zh) * 2023-03-14 2023-06-27 海光信息技术股份有限公司 任务处理方法、芯片、多芯片模块、电子设备和存储介质
CN116339944B (zh) * 2023-03-14 2024-05-17 海光信息技术股份有限公司 任务处理方法、芯片、多芯片模块、电子设备和存储介质

Similar Documents

Publication Publication Date Title
CN110619595B (zh) 一种基于多fpga加速器互联的图计算优化方法
CN110502334A (zh) 基于混合内存架构的带宽感知任务窃取方法、系统及芯片
Leis et al. Morsel-driven parallelism: a NUMA-aware query evaluation framework for the many-core age
US7647590B2 (en) Parallel computing system using coordinator and master nodes for load balancing and distributing work
US8707314B2 (en) Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations
KR102253582B1 (ko) Dram 기반 프로세싱 장치를 위한 확장 아키텍처
CN105159762B (zh) 基于贪心策略的启发式云计算任务调度方法
CN106598731B (zh) 基于异构多核架构的运行时系统及其控制方法
CN103729246B (zh) 一种任务调度方法和装置
CN105700959B (zh) 一种面向多核平台的多线程划分及静态均衡调度方法
Cierniak et al. Compile-time scheduling algorithms for a heterogeneous network of workstations
CN107329828A (zh) 一种面向cpu/gpu异构集群的数据流编程方法和系统
CN103885751A (zh) 将区别属性的存储器分配给共享数据对象的系统和方法
CN102902512A (zh) 一种基于多线程编程及消息队列的多线程并行处理方法
CN103279445A (zh) 运算任务的计算方法及超算系统
Aji et al. Automatic command queue scheduling for task-parallel workloads in opencl
Iserte et al. An study of the effect of process malleability in the energy efficiency on GPU-based clusters
Beaumont et al. Symmetric block-cyclic distribution: Fewer communications leads to faster dense cholesky factorization
CN110023904A (zh) 双模式本地数据存储
CN106293736B (zh) 用于粗粒度多核计算系统的两级编程装置及其计算方法
CN106971369A (zh) 一种基于gpu的地形可视域分析的数据调度与分发方法
CN105988856A (zh) 解释器访存优化方法及装置
Beri et al. A scheduling and runtime framework for a cluster of heterogeneous machines with multiple accelerators
López-Albelda et al. FlexSched: Efficient scheduling techniques for concurrent kernel execution on GPUs
CN106648866B (zh) 一种基于kvm平台满足任务时限要求的资源调度方法

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20191126

RJ01 Rejection of invention patent application after publication