针对gpu程序的源码级数据传输能耗估算方法

文档序号:6571619阅读:395来源:国知局
专利名称:针对gpu程序的源码级数据传输能耗估算方法
技术领域
本发明提供了一种针对GPU众核程序运行状态进行源码级传输能耗的估算方法,具体内容针对特定GPU+CPU的异构体系平台下使用NVIDIA CUDA架构编写的程序,通过在源码级别的分析建模,进行数据传输操作的功耗的测量和能耗估算方法,属于面向新型计算机体系结构的程序设计方法领域。
背景技术
高性能计算(High Performance Computing,简称HPC)在现代科学研究、工业生产中发挥着越来越重要的作用。HPC利用高性能设备,通过多核、众核、集群、网格等多种并行计算的途径,获得超高的计算速度,完成超大规模的计算任务。HPC在带来越来越高的计算性能的同时,其能耗也急剧增长。能耗问题越来越为计算机研究人员所重视。目前,针对高性能计算的能耗控制方法,通常实施在硬件电路和机器指令层面。然而,这两个层面的建模方法,对于普通程序员,都过于底层,不适合用于指导应用程序开发过程中的功耗估计与低功耗设计。高性能计算通常需要在处理器、存储器、主机之间进行频繁的数据交换和网络通讯。因此,从程序员编程视角,程序的能耗主要包括两部分一是计算能耗,主要耗费于处理器执行计算任务;二是数据传输能耗,指耗费于在不同(或相同)存储器之间转移数据上的电能。通常,计算能耗取决于算法的复杂程度等,比较复杂。传输能耗主要取决于数据传输的方法,相对计算能耗,建模方法比较明确,结果稳定。特别是在HPC领域,不同处理器、主机之间的数据搬运异常频繁,形式多样,准确预测传输能耗以指导程序调优,具有现实意义。

发明内容
本发明的目的是针对CPU+GPU模式的异构计算模型,提供一种基于程序状态的数据传输能耗测量、分析和建模方法,能够建立从程序状态到能耗的映射关系,为程序代码级的数据传输能耗估算和优化提供参考。为了准确说明本发明,本文采用如下术语及含义。GPU Graphics Processing Unit,图形处理单元。GPU最初是为图形图像处理中涉及到的大规模数据处理而设计的专用处理器。之后,GPU被推广到了做通用计算,并且在一些并行度比较高的计算任务中能够发挥非常好的效果。CUDA =NVIDIA公司推出的GPU通用计算处理架构。PCIe =PCIe是联通计算机内部各硬件之间的一种主要通信通路。GPU接在计算机主板插槽上,通过PCIe,和计算机的其他芯片直接互联。功率和功耗功率是指单位时间内消耗的电量。下面为了叙述方便,功率特指电功率表的读数,等于整个计算机系统的总功率。用一个类似的概念--功耗,来代表程序运行在某一状态时,单位时间内的电能消耗。
能耗指一段程序的执行时间内的电能消耗。带宽单位时间内可传输的数据量的大小,通常用于衡量数据传输的性能。原语指具有比较完整功能的一组程序语句。本文中的原语将改变程序的执行状态。程序状态指程序的运行状态。当程序仅创建一个线程时,程序状态即该线程状态。它通常对应于一个稳定的功耗值。页锁定内存和可分页内存页锁定内存(Pinned Memory)是指不会参与分页交换的内存,永远驻留在物理内存中。而相对地,可分页内存(Pageable Memory)是指会参与分页交换到硬盘上去的内存。CPU+GPU异构计算模式如图I所示,CPU+GPU异构计算模式是GPU辅助CPU进行
计算的模式,通过把一部分计算任务交给GPU承担,可以提高计算速度。数据可以在主存和GPU显存(Device Memory)之间进行交换。图I为I个CPU和2个GPU的结构。采用的测量方法为多测试程序对整机的功耗进行测量,从而分解出不同原语的功耗及其累计关系。本发明提供的技术方案如下一种针对GPU程序的源码级数据传输能耗估算方法,其特征是,包括如下步骤I)基础参数测量计算针对具体的CPU+GPU异构体系平台单机系统,进行系列基本测量,标定程序状态相关的基本参数;其中,需要测量的基本状态包括空闲状态、CUDA库运行状态、MPI消息等待状态、数据传输状态;2)针对具体程序估算数据传输能耗根据所述参数的标定值对具体程序中数据传输能耗部分进行估算和预测。所述的源码级数据传输能耗估算方法,其特征是,步骤I)中,由于不同的GPU程序可能使用不同的传输模式和传输粒度组合,为了能够尽可能精确地估算传输能耗,先通过实验测量出平台本身在不同传输模式和传输粒度组合下的基本带宽和功耗数据。所述的源码级数据传输能耗估算方法,其特征是,根据步骤I)得到的基本带宽和功耗数据,分析具体GPU程序的源码,根据数据传输模式和数据量,估算程序的消耗于数据传输方面的总能耗。所述的源码级数据传输能耗估算方法,其特征是,线程执行不同原语后,处于多种状态的复合状态,其功耗可以近似分解为多个基本状态功耗的线性累加,简称为简单可加性,根据这种简单可加性,通过计算,完成基础数据的测量和程序能耗的估算。所述的源码级数据传输能耗估算方法,其特征是,线程状态下的传输功耗的基本测量方法如下分别测量计算机在空闲状态下的功SP1和每个原语执行后的功耗Ρχ,Ρχ的取值为 Pi> p2> Pcuda 或 Pteans,Pcuda=P「Pi,Pteans^-Pi Pteans 就是测得的传输功耗;其中,P1为CUDA库装载执行之后的功耗读数;P2为数据传输之后的功耗读数;POTA为装载CUDA库原语执行后导致的功耗值增量;PTKANS为CUDA中的数据传输原语执行后导致的功耗值增量。所述的源码级数据传输能耗估算方法,其特征是,采用连续多遍传输的办法,使传输总时间达到10秒以上,从而获得η个功耗读数,重复各种数据传输模式,在不同数据传输粒度下,记录其功耗和带宽,计算平均带宽和平均功耗如下
权利要求
1.一种针对GPU程序的源码级数据传输能耗估算方法,其特征是,包括如下步骤 1)基础参数测量计算针对具体的CPU+GPU异构体系平台单机系统,进行系列基本测量,标定程序状态相关的基本参数;其中,需要测量的基本状态包括空闲状态、CUDA库运行状态、MPI消息等待状态、数据传输状态; 2)针对具体程序估算数据传输能耗根据所述参数的标定值对具体程序中数据传输能耗部分进行估算和预测。
2.如权利要求I所述的源码级数据传输能耗估算方法,其特征是,步骤I)中,由于不同的GPU程序可能使用不同的传输模式和传输粒度组合,为了能够尽可能精确地估算传输能耗,先通过实验测量出平台本身在不同传输模式和传输粒度组合下的基本带宽和功耗数据。
3.如权利要求2所述的源码级数据传输能耗估算方法,其特征是,根据步骤I)得到的基本带宽和功耗数据,分析具体GPU程序的源码,根据数据传输模式和数据量,估算程序的消耗于数据传输方面的总能耗。
4.如权利要求I所述的源码级数据传输能耗估算方法,其特征是,线程执行不同原语后,处于多种状态的复合状态,其功耗可以近似分解为多个基本状态功耗的线性累加,简称为简单可加性,根据这种简单可加性,通过计算,完成基础数据的测量和程序能耗的估算。
5.如权利要求I所述的源码级数据传输能耗估算方法,其特征是,线程状态下的传输功耗的基本测量方法如下分别测量计算机在空闲状态下的功耗&和每个原语执行后的功耗Px,Px的取值为Pp P2、Pota或P Trans,Pcuda-Pi-Pi,Ptrans-F^-Pi,Pteans 就是测得的传输功耗; 其中,P1为CUDA库装载执行之后的功耗读数;P2为数据传输之后的功耗读数;PCWA为装载CUDA库原语执行后导致的功耗值增量;PTKANS为CUDA中的数据传输原语执行后导致的功耗值增量。
6.如权利要求I所述的源码级数据传输能耗估算方法,其特征是,采用连续多遍传输的办法,使传输总时间达到10秒以上,从而获得η个功耗读数,重复各种数据传输模式,在不同数据传输粒度下,记录其功耗和带宽,计算平均带宽和平均功耗如下
7.如权利要求6所述的源码级数据传输能耗估算方法,其特征是,用如下公式估算数据传输能耗
8.如权利要求I所述的源码级数据传输能耗估算方法,其特征是,包括以下步骤 1)将源程序映射为原语序列,提取出传输数据的原语; 2)确定程序的数据量; 3)列举程序中的各种数据传输模式; 4)从程序表达的算法推断各种数据传输模式对应的数据传输粒度; 5)测量计算出平均带宽和平均功耗;6)计算数据传输能耗数据传输能耗。平均带宽
全文摘要
本发明公布了一种针对GPU程序的源码级数据传输能耗估算方法,包括如下步骤基础参数测量计算针对具体的CPU+GPU异构体系平台单机系统,进行系列基本测量,标定程序状态相关的基本参数;其中,需要测量的基本状态包括空闲状态、CUDA库运行状态、MPI消息等待状态、数据传输状态;针对具体程序估算数据传输能耗根据所述参数的标定值对具体程序中数据传输能耗部分进行估算和预测。通过本发明所述的能耗估算方法,能够建立从源程序经由程序状态到能耗的映射关系,可以定性地预测传输能耗,为程序代码级的数据传输能耗估算和优化提供参考。
文档编号G06F19/00GK102880785SQ20121027164
公开日2013年1月16日 申请日期2012年8月1日 优先权日2012年8月1日
发明者张常有, 黄锟, 崔翔, 陈一峯, 张爽 申请人:北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1