CN111221640B - 一种gpu-cpu协同节能方法 - Google Patents

一种gpu-cpu协同节能方法 Download PDF

Info

Publication number
CN111221640B
CN111221640B CN202010023853.2A CN202010023853A CN111221640B CN 111221640 B CN111221640 B CN 111221640B CN 202010023853 A CN202010023853 A CN 202010023853A CN 111221640 B CN111221640 B CN 111221640B
Authority
CN
China
Prior art keywords
performance
gpu
programs
program
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.)
Active
Application number
CN202010023853.2A
Other languages
English (en)
Other versions
CN111221640A (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.)
Qiannan Normal University for Nationalities
Original Assignee
Qiannan Normal University for Nationalities
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 Qiannan Normal University for Nationalities filed Critical Qiannan Normal University for Nationalities
Priority to CN202010023853.2A priority Critical patent/CN111221640B/zh
Publication of CN111221640A publication Critical patent/CN111221640A/zh
Application granted granted Critical
Publication of CN111221640B publication Critical patent/CN111221640B/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/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
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Devices For Executing Special Programs (AREA)
  • Power Sources (AREA)

Abstract

本发明公开了一种GPU‑CPU协同节能方法。包括下述步骤:a.获取能耗及性能数据:利用CPU功耗、性能模型,GPU功耗、性能模型分别获取各程序的性能、功耗数据;b.判定程序数量:程序数量为1时:通过判断综合判断时间和性能,以决定将该程序分配到恰当的PU上进行处理;程序数量大于1时:判断所有程序在GPU上的总执行时间是否小于在CPU上执行单个程序的最小时间,如小于,将所有程序分配到GPU上执行;如不小于,按步骤c的整数规划进行分配处理;c.整数规划:构建以性能和PU数量为约束条件、以能耗最小为优化目标函数的PCGA分配模型,得到程序在对应PU上的执行序列。本发明能够在减少能耗的情况下获得了较多的性能提升,达到了追求性能和追求能耗之间的平衡。

Description

一种GPU-CPU协同节能方法
技术领域
本发明涉及异构环境高性能计算机技术领域,特别是一种GPU-CPU协同节能方法。
背景技术
为了兼顾执行多种任务,多级缓存和复杂的控制逻辑被用于通用处理器CPU中以进行逻辑判断、分支预测、中断处理。为了获得更高的并行性,大量的并行执行单元被集成到GPU中。在持续地提高处理器性能的情况下,多核技术被用于CPU中,而与生俱来的多核处理器GPU则被应用于通用计算中。目前,在通用计算领域,CPU和GPU成为两类重要的多核处理器。如何合理地利用CPU和GPU的多核处理资源成为当下研究的重点,大量文献也对它们的优劣进行了对比和探讨。然而,计算机架构师、程序员和研究人员对计算性能的追求是无止境的,目前研究已从CPU与GPU孰优孰劣的争论中转向了利用异构体系结构中的CPU andGPU的计算资源协同提高处理性能。其中,计算资源协同是指智能地结合两者的特征以获得更高的计算能力,通过避免和减少CPU和GPU的空闲时间将每一个程序合理地分配到异构体系结构中的CPU或GPU上以获得优于单个处理资源的性能。大多数学者将这种CPU和GPU计算资源的协同处理称为异构计算(Heterogeneous Computing,HC);由HC组成的系统称为异构计算系统(Heterogeneous Computing System,HCS)。在HC中,为了描述方便而将CPU和GPU统称为处理单元(Processing Unit,PU)。HC已经引起了大家的重视,例如在TOP500和Green500中,大部分超级计算机都具有CPU和GPU。
目前,对于HC的研究主要集中在两个方面:一个是侧重于提高系统的性能,另一个则是侧重于它们的能耗问题。
在提高性能研究方面:
Augonnet,Cédric等人提出了一种运行时的统一执行模型——StarPU;针对单一任务在不同PUs下的分配问题,StarPU有五种调度策略可供选择用于分配任务以提供更好的性能。这五种策略分别是:支持优先级的贪婪策略,不支持优先级的贪婪策略,基于WorkStealing的贪婪策略,处理速度随机加权和异构最早完成时间策略。
与Augonnet,Cédric等人一样,Chi-Keung Luk,Sunpyo Hong,Hyesoon Kim针对单一程序在CPU和GPU上的分配问题提出了用于在HCS中映射计算量的Qilin框架。它提供了一个编写并行程序的API并且在训练阶段为每个PU创建性能模型,利用该性能模型为不同的输入计算优化的工作负载分配;然后进行动态编译以实例化所分配负载并将实例化后的程序在对应的PU上运行。
Belviranli,Mehmet E.,Laxmi N.Bhuyan,Rajiv Gupta提出了一种用于HCS上的循环迭代的动态负载平衡技术。他们的方法分两个阶段,在第一阶段中,通过对PU分配不同大小的任务进行实验用于估计PU的相对性能。在第二阶段中,使用自调度算法并依据第一阶段获得的相对性能值为每个PU分配负载。该算法动态调整块大小以及寻找正确的块大小以减少利用率不足和负载非均衡,从而产生最短的执行时间。
Grewe,Dominik,Michael FP O’Boyle基于编译器分析程序的结构提出了利用机器学习的方式对一个OpenCL程序预测并分配优化的处理资源;通过编译器Clang获得程序特征然后通过PCA筛选特征并将筛选后特征输入到由SVM组成两阶段层次分类的中以获得最终的调度结果。
MuriloBoratto,Pedro Alonso,Carla Ramiro,MarcosBarreto在CPU和GPU异构系统上使用静态调度来划分矩阵计算的工作负载以解决地貌属性表示的问题。
Bernabé,Gregorio,Javier Cuenca,Domingo Giménez针对加速三维快速小波变换提出了一种负载分配方法。该方法首先得到CPU和GPU的性能,然后依据它们的性能优劣按比例将工作负载分配给它们。
Jiménez,Víctor J等人基于性能历史数据提出了一种对多程序的性能调度方法。他们对比了First-free,First-Come-First-Served等方法,并通过实验得出了其提出的多程序的性能调度方法具有较高的性能。
在能耗问题研究方面:
Li Junke,Guo Bing等人提出了一种利用BP神经网络调节DVFS的GPU节能方法。
Paul,Indrani等人依靠DVFS技术对CPU和GPU的频率和电压进行协调用于实现CPU-GPU系统的能耗管理。
但上述的研究工作主要集中在DVFS技术上,而未考虑在异构系统上任务调度对功耗的影响。
Liu,Wenjie等人基于瀑布模型提出了一种提高大规模异构集群(包含几个CPU-GPU节点)能效的技术。这种技术对每个节点可能存在的忙碌,空闲和睡眠三种能耗状态进行变换。例如,在一个特定时间点的负载减少了,处于睡眠状态的节点就会被关闭而在另一个时间点负载增加了,处于睡眠状态的节点就会被唤醒。除了在利用三种状态进行节能外,还利用了在可用节点上进行任务调度用于提高性能以及调整CPU的电压以节约能耗。
Machovec,Dylan等人首先利用Khemka,Bhavesh等人提出的时间上的单调递减以及表达任务紧急性和重要性的效用函数表达系统的性能,结合对计算矩阵和平均功耗矩阵的时间估计等信息上建立了单位能耗效能的启发式方法对程序进行调度。他们设计、分析和对比了四个效用感知的启发式方法,三个基于FCFS方法以及一个随机方法。同时,他们也提出了一个用来限制每个计算资源的最大能耗消耗的能耗过滤方法。
Oxley,Mark A等人研究了在异构集群系统环境下,感知多个相互独立任务的能耗并对资源进行静态分配问题。其定义了能耗鲁棒性以及结束时间的鲁棒性并通过概率密度函数对程序执行的时间进行建模。利用上述的信息,其设计并分析了几种能耗约束和性能约束下的能耗感知资源分配的方法。
而以上的方法均是在集群环境中进行。
Liu,Qiang,Wayne Luk提出了对高性能的Linpack程序在CPU,GPU,FPGA中分配的方法。该方法通过预测获得单个程序的性能参数以及通过预先运行的方式获得每个处理资源的参数,然后利用线性规划分配每个处理资源的负载以达到节能的目的。在获得每个PU的分配到的负载比例后,手动改写目标PU的代码。
Ma,Kai基于负载的特性提出了一种将单个程序负载分配到CPU和GPU中用以负载均衡和减少空闲时间的HCS能耗管理框架。该方法分别在CPU和GPU上调整频率和电压以减少能耗。
Barik,Rajkishore等人提出了一种对单个程序在CPU和GPU上负载划分的方法,在此基础上执行能耗感知调度方法用于减少能耗。其利用多项式逼近的方法获得程序的功耗;通过R.Kaleem,R.Barik,T.Shpeisman,B.Lewis,C.Hu,and K.Pingali提出的分析方法获得了程序的特征及运行时间的长短(例如,计算密集型或访存密集型,运行时间长或短)等信息对程序进行调度并通过对负载率调节以达到节能的目的。与此同时,Ma,Kai在CPU-GPU架构下提出了一种分配单程序负载的整体能耗管理框架。该框架有两层;第一层为动态分配层,基于程序的特征将负载分配到CPU和GPU上。第二层为调频层,对处理器的频率进行调整以进行节能。文中分别对四种动态分配方案(简单的启发式与固定步长,改进的启发式自适应步长,和两个折半查找的算法)进行实验对比并分析了它们的优劣。
Totoni,Ehsan,MertDikmen,MaríaJesúsGarzarán提出了将单个程序分配到CPU和GPU中的方法以达到提高能效的目的。其研究了不同映射策略的节能效果并且展示了在CPU和GPU上对程序的合理分配确实能够提高能效。
Chandramohan,Kiran,Michael FP O'Boyle研究了利用不同的标准(如性能,功率和能量)将程序分配到异构系统中,并基于分析结果提出了一种最佳分配负载的方法。
Wang,Guibin,and XiaoguangRen在CPU-GPU组成的异构系统上提出了对单一程序进行低功耗分配负载的方法。该方法使用线性方法预测各个处理器的执行时间并在给定时间的约束下协调处理器之间的负载分配以及对每个处理器进行频率调整以减少能耗消耗。
在Jiménez,Víctor J等人研究的基础上,Choi,Hong Jun等人详细列出并指出了交替分配程序的调度(Alternate-assignment scheduling,AA),空闲优先调度(First-Free scheduling,FF)以及性能历史调度(Performance-History Scheduling,PH)方法的不足,并在增加了剩余时间表后提出了预测执行时间调度(estimated-execution-timescheduling,EET)方式。由于考虑到了后续的任务的时间,实验表明EET调度方式在性能上较AA,FF以及PH方式要好。EET调度方式主要针对性能的提高,而由于在性能上的提高使得EET方式能够节约一定的能耗。
Hamano,Tomoaki,Toshio Endo,and Satoshi Matsuoka针对多程序在异构系统上的分配提出了一种动态调度的节能方法;该方法首先计算加速比并试探着将具有最大加速比的程序放在对应处理器上执行,然后计算能耗延迟积(Energy delay product,EDP)并选择具有最小EDP值的程序放在对应的处理器上执行,重复上述过程直到所有程序被分配完毕。但是其假定功耗在程序运行中都为定值。
Mark Silberstein and Naoya Maruyama提出了一种在HCS下对多个相互依赖任务进行优化能效的方法。这种方法将每个任务在CPU和GPU上的能耗都考虑进去,然后利用有向无环图构造了一个以消耗最小能耗为目标的调度方法。其认为系统中的CPU和GPU处于空闲状态下都可以关闭而没有开销。
Jang,Jae Young等人提出了单个程序在CPU和GPU环境下的负载和功耗优化的方法并分析了多程序在HCS上自适应负载功率感知的分配方案。随后,其提出了一种为单程序确定最优或次优的工作负载和功耗分配的运行时算法,并为同时运行的多个程序确定最优的电压/频率设置。虽然其提出了多个程序分配方案,但该分配方案较为简单,并专注于在CPU和GPU上选择最佳的电压/频率。
由上述可知,为了达到减少HC功耗消耗的目的,大量学者提出了各种各样的方法、模型进行解决。通过对上述研究分析归纳,即可将上述解决的问题分为:单一程序在处理资源上的分配和多程序在处理资源上的分配。前者指的是将一个程序视为若干个负载以能耗最小的方式分配到各个处理资源上进行处理(Single program allocation,SPA);后者指的是将一组程序中的各个程序视为负载在性能的约束下以能耗最小的方式分配到处理资源上处理(Multi program allocation,MPA)。通常,SPA只针对少数特定的程序,在实际中需要改动程序以适应各个处理器的处理模式且要花费一定的精力以保证结果的正确性。而MPA适应性较广,且仅考虑所需达到的目标无需改动程序。尽管MPA的方式优势明显,但目前的研究工作仍存在着一些不足,如:需假设各PU在运行程序时功耗是恒定的(MarkSilberstein and Naoya Maruyama等人的研究)、在程序调度前需要先运行程序以获得参数(Jang,Jae Young等人的研究)、需要手动改写目标程序代码(Liu,Qiang,and Wayne Luk等人的研究)、在以性能为优化目的的方式中获得了能耗的节约(Hamano,Tomoaki,ToshioEndo,and Satoshi Matsuoka等人的研究);而且最为重要的是未能从全局资源的角度上节约能耗。因此,目前HC领域缺乏一种在性能约束下以能耗优化为目的的调度方法。
发明内容
本发明的目的在于,提供一种GPU-CPU协同节能方法。本发明能够将程序合理调度并分配到每个PU上去执行,系统地考虑了能量(能耗)和性能,在减少能耗的情况下获得了较多的性能提升,达到了追求性能和追求能耗之间的平衡。
本发明的技术方案:一种GPU-CPU协同节能方法,包括下述步骤:
a.获取能耗及性能数据
利用CPU功耗模型、CPU性能模型,GPU功耗模型、GPU性能模型分别获取各个程序的性能数据和功耗数据;
b.判定程序的数量
当程序数量为1时:
通过判断综合判断时间和性能,以决定将该程序分配到恰当的PU上进行处理;
当程序数量大于1时:
判断所有程序在GPU上的总执行时间是否小于在CPU上执行单个程序的最小时间,如果小于,将所有程序分配到GPU上执行;如果不小于,按步骤c的整数规划进行分配处理;
c.整数规划
构建以性能和PU数量为约束条件、以能耗最小为优化目标函数的PCGA分配模型,得到程序在对应PU上的执行序列。
前述的GPU-CPU协同节能方法所述的步骤c中,所述的PCGA分配模型如下:
其中,m表示系统CPU和GPU的数量和;
n表示系统中的待处理程序的数量;
Eij表示第j个程序在第i个PU上运行所消耗的能耗(0<=j<=n;0<=i<=m);
Tij表示第j个程序在第i个PU上运行所消耗的时间(0<=j<=m;0<=i<=n);
Q表示性能调节参数;
设i代表使用各个处理器的序号;j代表运行程序的编号,则指派第i个处理器去完成第j个任务有如下表示:
前述的GPU-CPU协同节能方法中,所述的Q的取值为:0.45~0.7。
前述的GPU-CPU协同节能方法中,所述的Q的取值为:0.5。
有益效果
与现有技术相比,本发明基于MPA进行研究,不关注HC中所具有的处理资源,而仅关注HC中的程序,通过获取程序在各个PU上的功耗,然后将能耗优化问题形式化为在性能约束下的0-1背包问题,最终得到了一个低开销、可移植性好的HC节能调度方法和分配模型。该方法和分配模型,能够将程序合理调度并分配到每个PU上去执行,以减少程序运行时的能耗,同时方法中又设置了性能约束条件,进而系统地考虑了能量(能耗)和性能,在减少能耗的情况下获得了较多的性能提升,达到了追求性能和追求能耗之间的平衡。
本发明的分配模型(Programs-CPU-GPU-Allocation,PCGA)中,通过参数控制程序在不同处理资源上的运行时间,具体地通过性能调节参数Q分配程序运行在处理器上的时间,该方法不仅控制简单,而且避免了“以占用时间相等的方式分别分配程序在CPU和GPU的处理资源上”的不适合绝大部分场景的情况,使程序运行时间的分配更加符合“随机性”的真实环境,进而提高了程序分配的准确性。
发明人通过大量实验得出,当性能调节参数Q的取值处于0.45~0.7时,本发明在性能约束下能够提供最佳的节能效果。此外,由于考虑到“现实中GPU作为协处理器适合处理计算密集型程序且具有很好的性能”的特点,性能调节参数Q的最优取值为0.5,以此来侧重使用GPU处理更多的程序,通过该方法,能够进一步确保系统性能。
综上,本发明能够将程序合理调度并分配到每个PU上去执行,系统地考虑了能量(能耗)和性能,在减少能耗的情况下获得了较多的性能提升,达到了追求性能和追求能耗之间的平衡。
为了能够充分说明本发明的性能,发明人进行了如下实验:
实验的硬件和软件环境如表1所示:
表1实验的硬件和软件环境
异构系统的硬件环境采用CPU(i5-7500)和GPU(四块NVIDIA GeForce GTX 1060显卡)模式;系统内存8GB;GTX 1060的架构是Pascal,显存6GB,拥有10个StreamingMultiprocessors(SM);每个SM包含128个CUDA核,共计1280个CUDA核;单卡提供4.4TFLOPS浮点运算能力。软件实验环境为windows 10,VS2015以及CUDA9.2。
为了验证本发明的有效性,在实验中为每个程序设计了两个版本:一个版本是为其中一个PU(CPU)设计,一个是为另一个PU(GPU)设计。为了对调度策略进行验证,本发明选取了在一些相同的程序的环境和在一些不同的程序环境下进行实验以验证本发明方法的有效性和可行性。本实验所选择的程序为:BlackScholes,fastWalshTransform,matrixMul,scalarProd,transposeCoalesced,transposeNaive,vectorAdd;它们的输入规模分别为12M到18M,32M到64M,200K到800K,64M到256M,500K到2M,500K到2M以及22M到64M。实验中,选择典型的调度方法进行比较。这些方法分别是Only-CPU,Only-GPU,AA(Alternate-Assignment),EET(Estimated-Execution-Time)和Optimal(Energy-Optimal)。AA表示以循环方式使用CPU和GPU,并且该方法不考虑性能和能耗消耗的状态。EET是通过考虑输入程序的性能信息选择能够快速执行完程序的PU。Optimal是通过考虑输入程序的能耗信息选择更节能的PU执行程序。在实验中,由于AA调度方式的性能及功耗受待执行程序的执行顺序较大,为此,本实验采用多次执行求平均值的方法获取。待执行程序的执行顺序对EET方法的性能及功耗也有一定的影响但并不显著,因此本实验中对EET的功耗值和性能值的获得采用单次测量的方法。为了公平地对比,本实验也在仅CPU中执行程序和在仅GPU中进行执行程序以对比能耗和性能;其中,仅CPU执行策略的能耗包含GPU空闲状态的能耗;同样,仅GPU执行策略的能耗包含CPU空闲状态的能耗。
由于执行序列对一些调度方法的性能及功耗有一定的影响以及为了更好地展示各种调度方法的性能及能耗方面的差异,本实验选取了两组不同的实验进行验证。第一组程序是避免待执行程序的执行顺序对性能及能耗的影响,本实验选取不同数量的同一个程序来消除这种影响。在本实验中,分别选取了4,6和7个vecadd程序进行验证对比。第二组程序是为了更好地展示本发明具有普适性,本实验选取不同数量的多个程序进行验证。在本实验中,选取的第二组程序的数量和第一组程序的数量相同;其中4个程序的名称分别为BlackScholes,matrixMul,scalarProd,transposeCoalesced;6个程序的名称分别为BlackScholes,matrixMul,scalarProd,transposeCoalesced,transposeNaive,vectorAdd;7个程序的名称分别为BlackScholes,matrixMul,scalarProd,transposeCoalesced,transposeNaive,vectorAdd,fastWalshTransform。
图4~7分别显示了同一程序的能耗消耗、同一程序的执行时间、不同程序的能耗消耗以及不同程序的执行时间。在这些图中,标有(a)代表此实验包含了4个程序;标有(b)代表此实验包含了6个程序和标有(c)代表此实验包含了的7个程序。如图4~7所示,由于GPU提供了更强大的计算能力,所以仅CPU调度比仅GPU调度消耗了更多的能量;这种现象也同样发生CPU调度和GPU调度的性能上,如图5和图7所示。虽然仅GPU的调度方案在性能和节能上的表现优于仅CPU方法,但对于其它调度方案仅GPU的策略不具有上述压倒性的优势。
AA调度方案将程序交替分配到CPU和GPU中,其性能和能量在很大程度上取决于输入程序的顺序。由于AA不考虑待执行程序的信息,导致其与仅GPU方法相比未能获得更好的性能和更佳的节能效果。由于它交替使用CPU和GPU,在实验中其性能优于仅CPU方法并且还比仅CPU的具有更好的节能效果。与AA调度方案相反,EET,Optimal和本章提出的方案考虑了程序的能耗和性能信息,并且可以根据各自的调度目的合理地将程序分配给每个PU。在执行相同程序的实验中,图4给出了每个调度策略的能量消耗,图5展示了这些调度方法的性能。在图4中,可以看到EET和Optimal方案的能耗分别在4个程序,6个程序和7个程序实验下与仅GPU调度的能量消耗几乎相同。这是因为GPU在执行vecadd程序时比CPU消耗更少的能量和取得更高的性能。对于EET策略在执行4,6和7个程序时寻求的最小时间,因此为了达到这个目的将将选择所有程序在GPU上执行,因此EET策略的能量消耗与仅有GPU方案的能量消耗几乎相同。由于Optimal方法在执行4,6和7个程序时追求以能耗最小的方式完成程序的执行,为了达到这个目标将选择所的待执行程序在GPU上执行的,因此最优策略的能耗消耗与仅GPU方案的能量消耗相同。对于本发明方法,在图4中,其能耗消耗高于仅GPU,EET和Optimal方法的能耗消耗。这是因为本发明具有时间约束,并且在该时间约束下寻求最小能量消耗。与本发明相比,EET,Optimal和仅GPU调度方案在4个程序的实验,6个程序的实验和7个程序的实验下分别节省了10.44%,11.31%,9.25%的能量分别。由于EET和Optimal策略将所有的待执行程序分配给GPU,这些方案的时间在图5中也等于仅GPU方法的时间。本发明比EET,Optimal和仅GPU方法在4个程序的实验,6个程序的实验和7个程序的实验分别提高了17.6%,16.64%和16.11%。上述数据表明,与EET,Optimal和Only GPU方案相比,本发明消耗更多的能量来获得更好的性能提升。但从实验结果中可以看出这样的做法是值得的。
在现实中,仅仅执行相同的程序很少。因此,为了更加接近实际的环境,本实验同样也进行三个实验用于比较,分别包括4个不同类型的程序,6个不同类型的程序和7个不同类型的程序。在图6(a)中,可以看到本发明方法比Optimal策略多消耗了4.47%的能量,比仅GPU方案和EET方案分别节约了33.15%和27.09%的能耗。在图7(a)中,本发明方法与仅GPU方案和Optimal策略相比性能分别了提高了29.09%和32.87%,并且比EET方案消耗的时间多24.29%。在图6(b)中,本发明方法比Optimal策略多消耗了31.79%的能耗;比EET和仅GPU的方案节约11.75%和22.45%的能耗。在图7(b)中,本发明方法与仅有GPU方案和Optimal策略相比分别提高45.93%和40.87%的性能;比EET方案多消耗7.31%的时间。在图6(c)中,本发明方法比仅GPU方法和EET方案分别节约20.55%和6.08%的能耗;比Optimal策略多消耗10.04%的能耗。在图7(c)中,本发明方法与仅GPU方法,Optimal和EET方案相比分别提高了45.12%,37.96%和7.58%的性能。这是由于不同的方法具有不同的目的,导致了程序分配到不同的PU进而影响了整组程序的性能和能耗。EET方案的目的是为了获得整个待调度程序的最小执行时间;因此它将程序调度在有最小执行时间的相应PU上执行。Optimal策略的目标是在执行调度程序期间获得最低能耗;它使用能耗信息以最小能量消耗的方式调度程序。本发明方法系统地考虑能量和性能,然后使性能和能耗更加均衡。平均来说,本发明方法在能耗上比EET策略相节省了14.97%,比Optimal方案在性能提高了37.23%。通过以上的比较可以看到,本发明方法消耗了较少的能耗以获得更多的性能提升,并且能够在追求性能和追求能耗之间达到平衡。
图8展示了PCGA和EET方法在执行程序时,程序分别在CPU和GPU上执行时间上所占的比例;图9展示了PCGA和Optimal方法在在执行程序时,程序分别在CPU和GPU所消耗的能耗所占的比例。水平轴表示所使用的实验用例以及调度方法。例如,7Diff_PCGA表示实验有7个不同的程序使用PCGA调度,7Same_EET是实验有7个相同的程序使用EET调度策略和6Same_Opt是实验有6个相同的程序使用Optimal方案。垂直轴在图8中表示各个PU执行时间所占的比例;在图9中表示各个PU能耗消耗所占的比例。柱状的下部表示CPU的执行时间所占的比例(图8)和能耗所占的比例(图9);柱状的上部表示GPU的执行时间所占的比例(图8)和能耗所占的比例(图9)。在图8中,PCGA和EET方法在执行不同的程序时时间比率的差异较小,但在执行相同的程序是差别明显。这种现象表明,EET方法在各个PU之间非均衡地分配负载;同样的现象也出现在图9中使用Optimal策略所得到的能耗消耗,同样,Optimal策略也存在着非均衡地利用各个PU。通过上述的实验验证了PCGA方法(本发明方法)相对于EET和Optimal调度有一定的优势。
附图说明
图1是本发明的框架示意图;
图2是本发明方法在不同Q值下的能耗示意图;
图3是本发明的程序节能调度的伪代码;
图4是实验中各调度方法的能量消耗;
图5是实验中各调度方法的性能;
图6是模拟现实环境下各调度方法的能量消耗;
图7是模拟现实环境下各调度方法的性能;
图8是PCGA和EET方法在CPU和GPU上执行时间的比率;
图9是PCGA和Optiaml方法在CPU和GPU上消耗能耗的比率。
具体实施方式
下面结合附图和实施例对本发明作进一步的说明,但并不作为对本发明限制的依据。
实施例。一种GPU-CPU协同节能方法,如图1所示,包括下述步骤:
a.获取能耗及性能数据
利用CPU功耗模型、CPU性能模型,GPU功耗模型、GPU性能模型分别获取各个程序的性能数据和功耗数据,为调度策略提供调度依据;由于CPU功耗模型和CPU性能模型、GPU性能模型和GPU功耗模型目前已经有成熟的应用,在此限于篇幅,不再赘述;由于所有模型均可在编译阶段完成,因此上述性能和功耗数据在编译结束后即可获得,从而使得这些数据在程序调度之前都是可用的。
b.判定程序的数量
当程序数量为1时:
通过判断综合判断时间和性能,以决定将该程序分配到恰当的PU上进行处理;
当程序数量大于1时:
判断所有程序在GPU上的总执行时间是否小于在CPU上执行单个程序的最小时间,如果小于,将所有程序分配到GPU上执行;如果不小于,按步骤c的整数规划进行分配处理;
在HCS环境中,所要处理的程序数量往往是随机的,因此在程序数量为1时,本发明通过判断综合判断时间和性能以决定将它分配到恰当的PU上进行处理;而当程序数量多于1时,判断所有程序在GPU上的总执行时间是否小于在CPU上执行单个程序的最小时间:如果小于,将其分配到GPU上执行,否则将利用步骤c的整数规划进行分配。
c.整数规划
构建以性能和PU数量为约束条件、以能耗最小为优化目标函数的PCGA分配模型,得到程序在对应PU上的执行序列;
在对多个程序进行处理资源的分配时,需要将性能和功耗进行折中,以避免获得的节能效果是以牺牲性能为代价的。为此,在以能耗最小为目标函数的情况下需要将性能作为约束条件。在大多数情况下,将各个程序分配在每个PU上执行后其结束时间有差别,因此在约束条件中应将加入这种差别。求解以性能和PU数量为约束条件,以能耗最小为优化目标的函数,即可得到对应PU的执行序列。
前述的步骤c中,所述的PCGA分配模型如下:
其中,m表示系统CPU和GPU的数量和;
n表示系统中的待处理程序的数量;
Eij表示第j个程序在第i个PU上运行所消耗的能耗(0<=j<=n;0<=i<=m);
Tij表示第j个程序在第i个PU上运行所消耗的时间(0<=j<=m;0<=i<=n);
Q表示性能调节参数;
设i代表使用各个处理器的序号;j代表运行程序的编号,则指派第i个处理器去完成第j个任务有如下表示:
如果将系统中的能量看作是异构并行系统中的资源,则对系统中的能耗的管理和分配可视为对资源的配置和分配。同样的,性能也被视为系统中的资源。对于系统资源的分配,通常是以目标需求为依据的。因此,在运行多程序的异构系统环境下,可以通过对不同资源的配置以降低系统的能耗。对CPU、GPU组成的异构体系结构的节约能耗问题进行建模,并将此优化模型命名为PCGA(Programs-CPU-GPU-Allocation)模型。PCGA模型实现了异构系统在处理多程序时系统资源的合理分配,通过判断多个程序如何分配到CPU和GPU中使得完成这组程序在性能的约束下更加节能。PCGA模型以整数规划为基础,通过加入对多个程序的资源分配约束,最终形式化为一个0-1背包问题。
具体地,PCGA模型的构建如下:
1.符号定义
M表示系统CPU和GPU的数量和;
N表示系统中的待处理程序的数量;
Eij表示第j个程序在第i个PU上运行所消耗的能耗(0<=j<=N;0<=i<=M);
Tij表示第j个程序在第i个PU上运行所消耗的时间(0<=j<=N;0<=i<=M);
设i代表使用各个处理器的序号;j代表运行程序的编号,则指派第i个处理器去完成第j个任务有如下表示:
2.目标函数
选择一种合适的组合,使得最后所花费的能耗总和最小。根据上述变量定义,可以得到公式5.1表示的目标函数,即总能耗消耗。
3.约束条件
根据问题要求,每项工作有且仅有一种处理器去完成,于是得到公式5.2所示的约束。
在对程序进行分配处理器时,应考虑到性能。不能为了节约能耗而无限制地牺牲性能,为此需要对目标函数进行性能上的约束。由于程序运行时间的随机性,将它们以占用时间相等的方式分别分配在CPU和GPU的处理资源上不适合绝大部分场景。为了更好地适应真实环境,允许非均衡地分配运行在CPU上的时间和GPU上的时间。在PCGA模型中,通过参数控制程序在不同处理资源上的运行时间。为了达到这一目的,使用性能调节参数Q用于分配程序运行在处理器上的时间。在现实中,GPU作为协处理器适合处理计算密集型程序且具有很好的性能,为此侧重使用GPU用来处理更多的程序。考虑到时间限制以及上述的因素,得到了如公式5.3所示的时间约束。
综合考虑到公式5.2和公式5.3,于是目标函数最终可以形式化如公式5.4的形式:
前述的Q的取值为:0.45~0.7。
较优地,前述的Q的取值为:0.5。
公式5.3中的Q值是从实验中获得的,用于在性能约束下能耗最小化。为了获得恰当的Q值,通过实验对比的方法进行获取。在各组实验中,Q取不同值得到的能耗消耗趋势与图2相同,为此,列出不同Q值下的能耗变化示意图,如图2所示;图中,纵坐标表示调度方法根据不同的Q值所消耗的能耗;横坐标表示不同的Q值。如图2所示,当Q取值为0.45时,调度方法在性能约束下可以提供最佳的节能效果;当取值为0.45到0.7时也可以产生相当的效果。由于侧重使用GPU处理更多的程序,因此,程序调度方案中为Q设置了0.5的值。
图3描述了本发明所提出调度方案的伪代码。它首先获得各个程序在不同PU上的性能和功耗数值,然后利用上述信息在性能约束下分配这些程序到PU上以达到节能的目的。调度方案的输入为一组含有个数为P的程序组;其输出为每个PU的待执行序列。一旦开始,算法首先获得P个程序在各个PU上的预测执行时间及预测执行能耗;在获得时间和功耗后,判断P是否等于1;如果等于1,仅仅通过判断程序在各个PU上功耗的大小以及程序在各个PU上执行时间的多少即可将其送到指定的PU队列中,如第3到第8行所示;如果不等于1,判断在P个程序在GPU中运行的总时间是否小于单个程序在CPU中运行的最小时间;如果上述成立,则将直接将P个程序送至GPU待执行队列中,如第11行到第13行所示;如果不成立,则使用整数规划问题进行解决,如第15行到第16行所示。在算法中,整数规划用Zero_One_Knapasck()函数表示并对公式5.4进行了实现。算法输出为各个PU的待执行的程序序列。在图3中,第4行中的参数Q与公式5.3中的Q值相同。第11到13行中,只考虑了性能因素而未将能耗因素考虑进去是因为在GPU相对于CPU能够获得更好性能的情况下,优先选择GPU执行。

Claims (3)

1.一种GPU-CPU协同节能方法,其特征在于:包括下述步骤:
a.获取能耗及性能数据
利用CPU功耗模型、CPU性能模型,GPU功耗模型、GPU性能模型分别获取各个程序的性能数据和功耗数据;
b.判定程序的数量
当程序数量为1时:
通过判断综合判断时间和性能,以决定将该程序分配到恰当的PU上进行处理;
当程序数量大于1时:
判断所有程序在GPU上的总执行时间是否小于在CPU上执行单个程序的最小时间,如果小于,将所有程序分配到GPU上执行;如果不小于,按步骤c的整数规划进行分配处理;
c.整数规划
构建以性能和PU数量为约束条件、以能耗最小为优化目标函数的PCGA分配模型,得到程序在对应PU上的执行序列;
步骤c中,所述的PCGA分配模型如下:
其中,m表示系统CPU和GPU的数量和;
n表示系统中的待处理程序的数量;
E ij 表示第j个程序在第i个PU上运行所消耗的能耗(0<=j<=n; 0<=i<=m);
T ij 表示第j个程序在第i个PU上运行所消耗的时间(0<=j<=m; 0<=i<=n);
Q表示性能调节参数;
i代表使用各个处理器的序号;j代表运行程序的编号,则指派第i个处理器去完成第j个任务有如下表示:
2.根据权利要求1所述的GPU-CPU协同节能方法,其特征在于:所述的Q的取值为:0.45~0.7。
3.根据权利要求2所述的GPU-CPU协同节能方法,其特征在于:所述的Q的取值为:0.5。
CN202010023853.2A 2020-01-09 2020-01-09 一种gpu-cpu协同节能方法 Active CN111221640B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010023853.2A CN111221640B (zh) 2020-01-09 2020-01-09 一种gpu-cpu协同节能方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010023853.2A CN111221640B (zh) 2020-01-09 2020-01-09 一种gpu-cpu协同节能方法

Publications (2)

Publication Number Publication Date
CN111221640A CN111221640A (zh) 2020-06-02
CN111221640B true CN111221640B (zh) 2023-10-17

Family

ID=70831408

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010023853.2A Active CN111221640B (zh) 2020-01-09 2020-01-09 一种gpu-cpu协同节能方法

Country Status (1)

Country Link
CN (1) CN111221640B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115860055B (zh) * 2022-11-23 2024-01-02 北京百度网讯科技有限公司 性能确定方法、性能优化方法、装置、电子设备以及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130011714A (ko) * 2011-07-22 2013-01-30 에스케이플래닛 주식회사 화면 가상화 기반 어플리케이션 구동 시스템 및 방법
CN103475469A (zh) * 2013-09-10 2013-12-25 中国科学院数据与通信保护研究教育中心 一种结合cpu和gpu实现sm2算法的方法及装置
KR101656706B1 (ko) * 2015-04-02 2016-09-22 두산중공업 주식회사 고성능 컴퓨팅 환경에서의 작업 분배 시스템 및 방법
CN107861606A (zh) * 2017-11-21 2018-03-30 北京工业大学 一种通过协调dvfs和任务映射的异构多核功率封顶方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130339978A1 (en) * 2012-06-13 2013-12-19 Advanced Micro Devices, Inc. Load balancing for heterogeneous systems
KR101927233B1 (ko) * 2015-03-16 2018-12-12 한국전자통신연구원 이기종 멀티-코어 시스템의 gpu 전력 측정 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130011714A (ko) * 2011-07-22 2013-01-30 에스케이플래닛 주식회사 화면 가상화 기반 어플리케이션 구동 시스템 및 방법
CN103475469A (zh) * 2013-09-10 2013-12-25 中国科学院数据与通信保护研究教育中心 一种结合cpu和gpu实现sm2算法的方法及装置
KR101656706B1 (ko) * 2015-04-02 2016-09-22 두산중공업 주식회사 고성능 컴퓨팅 환경에서의 작업 분배 시스템 및 방법
CN107861606A (zh) * 2017-11-21 2018-03-30 北京工业大学 一种通过协调dvfs和任务映射的异构多核功率封顶方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
《GPU-Memory Coordinated Energy Saving Approach Based on Extreme Learning Machine》;Junke Li;《2015 IEEE 17th International Conference on High Performance Computing and Communications, 2015 IEEE 7th International Symposium on Cyberspace Safety and Security, and 2015 IEEE 12th International Conference on Embedded Software and Systems》;20151130;全文 *
《Hybrid Embarrassingly Parallel algorithm for heterogeneous CPU/GPU clusters》;Bo Yang;《2012 7th International Conference on Computing and Convergence Technology (ICCCT)》;20130613;全文 *
一种基于GPU的并行算法功耗评估方法;王卓薇;程良伦;赵武清;;计算机科学(第11期);全文 *
一种基于并行度分析模型的GPU功耗优化技术;林一松;杨学军;唐滔;王桂彬;徐新海;;计算机学报(第04期);全文 *
一种基于并行度分析模型的GPU功耗优化技术;林一松等;《计算机学报》;20110415(第04期);全文 *

Also Published As

Publication number Publication date
CN111221640A (zh) 2020-06-02

Similar Documents

Publication Publication Date Title
Chen et al. Accelerating mapreduce on a coupled cpu-gpu architecture
Hormati et al. Flextream: Adaptive compilation of streaming applications for heterogeneous architectures
Lu et al. Optimizing depthwise separable convolution operations on gpus
Kang et al. Lalarand: Flexible layer-by-layer cpu/gpu scheduling for real-time dnn tasks
Pietri et al. Energy-aware workflow scheduling using frequency scaling
CN111240461B (zh) 一种基于任务调度的异构计算系统低功耗方法
Raju et al. A survey on techniques for cooperative CPU-GPU computing
Li et al. Energy-aware scheduling for frame-based tasks on heterogeneous multiprocessor platforms
Aji et al. Automatic command queue scheduling for task-parallel workloads in opencl
Alonso et al. DVFS-control techniques for dense linear algebra operations on multi-core processors
Wu et al. Using hybrid MPI and OpenMP programming to optimize communications in parallel loop self-scheduling schemes for multicore PC clusters
Spasic et al. Energy-efficient mapping of real-time applications on heterogeneous MPSoCs using task replication
Mascitti et al. An adaptive, utilization-based approach to schedule real-time tasks for ARM big. LITTLE architectures
CN111221640B (zh) 一种gpu-cpu协同节能方法
Fan et al. An energy-efficient dynamic scheduling method of deadline-constrained workflows in a cloud environment
Gharajeh et al. Heuristic-based task-to-thread mapping in multi-core processors
CN114217930A (zh) 一种基于混合任务调度的加速器系统资源优化管理方法
Huang et al. Energy optimization for deadline-constrained parallel applications on multi-ecu embedded systems
Li et al. A static task scheduling framework for independent tasks accelerated using a shared graphics processing unit
CN114860417B (zh) 多核神经网络处理器及用于该处理器多任务分配调度方法
Andrade et al. Efficient execution of microscopy image analysis on CPU, GPU, and MIC equipped cluster systems
Dagli et al. Multi-accelerator neural network inference in diversely heterogeneous embedded systems
Wang et al. Communication-aware task partition and voltage scaling for energy minimization on heterogeneous parallel systems
CN111240818B (zh) 一种多相同gpu异构系统环境下的任务调度节能方法
Chow et al. Energy efficient task graph execution using compute unit masking in GPUs

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