CN102567079B - 基于渐进式踪迹更新的并行程序能耗模拟评估方法 - Google Patents

基于渐进式踪迹更新的并行程序能耗模拟评估方法 Download PDF

Info

Publication number
CN102567079B
CN102567079B CN201110450987.3A CN201110450987A CN102567079B CN 102567079 B CN102567079 B CN 102567079B CN 201110450987 A CN201110450987 A CN 201110450987A CN 102567079 B CN102567079 B CN 102567079B
Authority
CN
China
Prior art keywords
trace
simulation
piece
time
code
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.)
Expired - Fee Related
Application number
CN201110450987.3A
Other languages
English (en)
Other versions
CN102567079A (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.)
National University of Defense Technology
Original Assignee
National University of Defense 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 National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201110450987.3A priority Critical patent/CN102567079B/zh
Publication of CN102567079A publication Critical patent/CN102567079A/zh
Application granted granted Critical
Publication of CN102567079B publication Critical patent/CN102567079B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于渐进式踪迹更新的并行程序能耗模拟评估方法,技术方案是构建安装有目标程序TAPP、模拟运行软件SIMComp、存储性能模拟软件SIMIO、通信性能模拟软件SIMComm、能耗模拟软件SIMEngy的宿主机,SIMComp评估TAPP各个逻辑进程LP的各个计算代码块的执行时间,生成TAPP运行的踪迹文件;SIMIO基于SIMComp生成的踪迹文件,对每个LP中相应的I/O操作进行模拟,获得每个I/O代码块的执行时间,形成新的踪迹文件;SIMComm基于SIMIO生成的踪迹文件,对每个LP中相应的消息通信操作进行模拟,获得每个消息通信代码块的执行时间,形成新的踪迹文件;SIMEngy基于SIMComm生成的踪迹文件,对程序运行的能耗进行评估。采用本发明实现了对并行程序运行电能消耗的高效评估,有利于并行计算系统能耗管理、优化配置及应用优化。

Description

基于渐进式踪迹更新的并行程序能耗模拟评估方法
技术领域
本发明涉及计算机系统性能评估方法,特别是基于模拟技术对数据密集型并行计算系统上并行程序的能耗进行评估,以支持并行计算系统能耗管理、优化配置及应用优化的方法。
背景技术
当前,以数据中心应用为代表的数据密集型计算日益兴起,这是一种以数据为核心的计算模式,其特点是运行过程中需要不断获取、更新、存储和共享大量数据,并支持对这些数据进行各种操作。数据密集型计算系统通常基于大量商用服务器、存储设备和网络设备构建,耗电量巨大,因此能耗控制成为其高效运行的一个关键挑战。良好的能耗管理除了能够降低运行成本外,还是避免因能耗过载或系统过热导致的系统失效的重要手段。据估计,针对服务器集群的能耗管理使服务器每节约1度电力,上游的交流和直流电源设备、配电设备、UPS、散热设备能够节省1.07度电力,开关和转换设备等也节约了电力,因此服务器上每节约1瓦电力,总功率就能降低2.84瓦。
由于能耗控制的重要性,在数据密集型计算机系统部署或应用开发过程中,通常需要对系统各种配置下的能耗情况进行评估,以获得一定约束下最优的设计方案。例如,系统结点数目、处理器数目、处理器主频及功率、网络设备的性能与功率、存储系统的性能和功率等参数都有一定的可变范围,应用的计算、存储访问、通信等特征,都会对系统能耗产生影响。为支持能耗管理、优化配置与应用优化,需要能够对并行计算系统在各种配置情况下运行典型应用程序的能耗进行评估。
计算机系统能耗评估方法主要有实际测量、模型分析和模拟方法。实际测量在实际系统上进行能耗测试,例如文献(Ripal Nathuji,Karsten Schwan,Ankit Somani,YogendraJoshi.VPM tokens:virtual machine-aware power budgeting in datacenters.ClusterComputing,2009年12月)报道了使用电能表对进行实际测量的方法,使用实际的能耗测试来驱动系统,各种工作负载情况下的能耗数据使用Extech380801功率分析仪来测试,使用数字式电表实现能耗监控。但是实际测量只在真实系统已存在并运行的情况下进行,只能获得特定系统配置与运行状态下的电能消耗,缺乏灵活性。模型分析的方法通过对系统各个组成部分的能耗建立分析表达式,将系统及应用程序参数代入表达式中来计算系统能耗。例如文献(Z.Wang,C.McCarthy,X.Zhu,P.Ranganathan,and V.Talwar,Feedback control algorithms for power management of servers,3rd Workshop on FeedbackControl Implementation and Design in Computing Systems and Networks,2008年6月)采用模型分析的方法估计能耗,分析应用程序吞吐率、服务器利用率与服务器的功率的关系;文献(Xiaorui Wang,Ming Chen,and Xing Fu.MIMO Power Control for High-DensityServers in an Enclosure)也使用系统建模方法来分析机柜内所有服务器的能耗。模型分析的灵活性好,但是对复杂系统难以建立精确的分析模型,而且不能反映应用程序在系统上运行的动态过程。
模拟方法采用模拟软件来在现有的计算机(宿主机)上模仿目标计算机系统内部操作,并对目标系统的性能、能耗等进行分析。模拟软件一般是可配置、可复用的,可以对所模拟系统的各项参数进行配置,模拟运行真实测试程序或人工生成的工作负载,获得目标系统采用该配置方案时的性能、能耗数据。文献(U.C.Berkley.StephenDawson-Haggerty,Andrew Krioukov,David Culler.Power Optimization–a Reality Check.2009)研究发现,当前商用计算硬件的能耗功率可以通过两个主要部分建模:一个总是存在的常数功率,以及一个线性的功率—性能曲线。文献(David Meisner,Brian T.Gold,Thomas F.Wenisch.PowerNap:Eliminating Server Idle Power.ASPLOS’09,March7–11,2009,Washington,DC,USA)中提出了一种节能方法PowerNap,针对工作负载情况,在没有应用程序运行的情况下,整个系统从高性能活跃状态快速转换到一个接近零能耗的空闲状态(所有活动都被挂起直到有新的任务来),并提出负载共享冗余阵列方法,平均降低服务器能耗74%。由此可见,系统的能耗与其上应用程序执行时间密切相关,在应用程序执行时间模拟的基础上评估其能耗是可行的。目前有一些评估并行程序在并行计算机系统上性能的模拟技术,可作为能耗模拟的基础。
根据专利文献检索,以往的专利与文献中尚未见到以渐进式踪迹更新并行模拟方式实现并行计算系统上应用程序运行过程能耗评估的相关报道。最相关的专利是专利号为CN03125126.9的中国专利,该专利提出了大规模数字电路最大功耗估计方法,不涉及并行程序能耗模拟评估。另有一些关于模拟器构造方面的方法申请了专利,如专利号分别为98808090.7、200480008289.6、200480033145.6的中国专利、专利号PCT/US2004/004092的美国专利,专利号为PCT/JP361914/2003、PCT/JP376210/2002、PCT/JP360362/2002的日本专利。
发明内容
本发明要解决的技术问题是提供一种基于渐进式踪迹更新的并行程序能耗模拟评估方法,以性能模拟软件为基础,通过相应的模拟控制流程设计,以程序踪迹文件为程序操作记录和性能信息传递的桥梁,协调调度多种模拟软件对并行应用程序运行过程在并行计算系统上产生的能耗进行评估,提高功耗评估的准确性与灵活性,支持并行计算系统能耗管理、优化配置及针对应用的节能优化。
当前数据密集型并行计算系统通常采用集群并行计算机系统结构,基于多核处理器服务器和商用网络构建。本专利所要模拟的并行计算机系统(以下称为目标系统)由多台服务器结点通过网络互连构成。并行应用程序(以下统称为目标程序)在目标系统上运行时的操作归为三类:
(1)各种运算操作,这类操作统称为计算,执行相应的代码称为计算代码。
(2)磁盘文件读写操作,这类操作称为I/O操作,相应的代码称为I/O代码。
(3)消息通信操作,这类操作称为消息通信,相应的代码称为消息通信代码。
相应地,目标程序在目标系统上执行时的电能消耗来源包括以下几个部分:
(1)执行计算代码的电能消耗。
(2)执行I/O代码的电能消耗。并行计算系统中文件可能存储于本地存储上,也可能存储在远程存储设备上,本地存储访问和远程存储访问两种I/O操作所涉及的系统部件和操作过程不同,单位时间内的电能消耗也不同。
(3)执行通信代码时候的电能消耗。通信分为两类:一类是结点内部不同处理器(或处理器核,以下统称处理器)之间的通信,另一类是不同结点上的处理器之间的通信。结点内通信与结点间通信所涉及的设备和操作过程不同,单位时间内的电能消耗也不同。
需要说明的是,并行程序执行过程中,并行计算机系统上计算、通信和I/O设备并不总是处于完全利用的状态,总会有些设备在某些时段处于空闲状态,这些空闲设备仍然产生能量消耗。因此,并行程序运行期间的系统能耗由实际进行有用操作的能耗和空转能耗两部分组成。但由于当前设备中广泛采用先进的节能技术,设备在空闲状态下的功率比其在忙状态下的功率低得多,且空闲状态下的能耗基本是固定的,不会发生变化,因此本发明中只计算设备在忙状态下的电能消耗,因为忙状态下的电能消耗会因为程序运行而变化。
本发明技术方案包括以下步骤:
第一步,构建用于执行模拟过程的并行计算机系统,称为宿主机。宿主机可以是由多个结点构成的并行计算机系统,也可以是单结点多处理器并行计算机系统。宿主机上共有P个处理器(P为正整数),各个处理器间通过网络或共享内存互连,并具有共享的磁盘存储设备,从每个处理器均可访问共享磁盘存储设备。
宿主机上安装有如下软件:所模拟的目标程序TAPP;模拟运行软件SIMComp,它在宿主机上模拟执行目标程序TAPP,评估程序计算代码的执行时间,并生成踪迹文件,在其中记录程序执行过程中发生的操作及相应的时间信息;存储性能模拟软件SIMIO,它在SIMComp结束之后运行,以SIMComp生成的踪迹文件为输入,对程序I/O代码的执行时间进行模拟,并修改该踪迹文件以记录各个存储访问操作的时间;通信性能模拟软件SIMComm,它在SIMIO结束之后运行,以SIMIO修改后的踪迹文件为输入,对程序消息通信代码的通信时间进行模拟,并修改该踪迹文件以记录各个消息传递操作的时间;能耗模拟软件SIMEngy,它在SIMComm结束之后运行,以SIMComm修改后的踪迹文件为输入,对程序运行总能耗进行评估。SIMComp、SIMIO、SIMComm和SIMEngy均是并行程序,它们均以多进程方式运行,每个进程运行在宿主机的一个处理器上。为描述方便,将SIMComp、SIMIO、SIMComm和SIMEngy的进程分别称为COMP模拟进程、IO模拟进程、COMM模拟进程和ENGY模拟进程,这些模拟进程均有进程号。目标程序TAPP在目标系统上运行时,通常每个处理器上运行一个进程,将由模拟运行软件SIMComp、SIMIO、SIMComm和SIMEngy模拟的TAPP的进程称为逻辑进程(Logical Process),简记为LP,每个LP都有进程号。宿主机处理器数通常小于目标系统的处理器数,因此每个模拟进程要负责多个LP的模拟。
第二步,在宿主机上启动模拟运行软件SIMComp,在全部处理器上并行地模拟执行目标程序TAPP,评估TAPP各个LP的各个计算代码块的执行时间,并记录I/O操作和通信操作,生成TAPP运行的踪迹文件。
TAPP的每个LP执行的代码包括计算代码、存储访问代码和消息通信代码,将LP代码中一片连续的计算代码段称为一个计算代码块(Computation Code Block),一片连续的存储访问代码段称为一个I/O代码块(Input and Output Code Block),一片连续的消息通信代码段称为一个消息通信代码块(Message Code Block)。在TAPP的踪迹文件中为每个LP按虚拟时间顺序存储各个代码块结构,对所有的代码块按顺序从0开始统一编号,称为块编号,记为BLK_NO。对每个代码块均记录其类型BLK_TYPE(计算代码块为CCB、I/O代码块为IOCB、消息通信代码块为MCB)。每个计算代码块对应的踪迹中除了包含BLK_NO和BLK_TYPE外,还包含本块的执行时间BLK_DURATION。每个存储访问代码块对应的踪迹中除了包含BLK_NO和BLK_TYPE外,还包括本块中本地存储访问时间IO_LDURATION、远程存储访问IO_RDURATION、本块中的读写操作记录列表IO_LIST。IO_LIST中首先记录本块中读写语句数,然后对每条读写语句记录下列信息:该语句在本块中的序号IO_NO(从0开始)、读写位置IO_LOC(本地存储记为LOCAL,远程存储记为REMOTE)、读写类型IO_TYPE(读记为READ,写记为WRITE)、数据量大小IO_SIZE。每个消息通信代码块对应的踪迹中除了包含BLK_NO和BLK_TYPE外,还包括本块中结点内消息通信时间COMM_IDURATION、结点间消息通信时间COMM_XDURATION、本块中的消息记录列表COMM_LIST。COMM_LIST中首先记录本块中消息通信语句数,然后对每条消息通信语句记录下列信息:消息在本块中的序号MSG_NO(从0开始)、通信位置MSG_LOC(结点内通信记为INTRA_NODE,结点间通信记为INTER_NODE)、通信对象编号MSG_ENTY(参与通信的对方LP的进程号)、消息大小MSG_SIZE。
需要说明的是,目标程序TAPP的踪迹有两种形态,一种以踪迹文件的方式存储在磁盘上,另一种以内存数据结构的方式存储在内存中(称为内存踪迹结构或简称踪迹结构),两者是相互对应的。因为内存访问速度比磁盘访问速度快得多,故SIMComp软件先在内存中创建和修改踪迹结构,待退出前才将踪迹结构的内容写到磁盘上的踪迹文件中,这样可提高效率。SIMIO、SIMComm和SIMEngy对踪迹的处理方式也是基于类似的考虑。
第二步步骤如下:
2.1在宿主机上启动模拟运行软件SIMComp,共启动P个COMP模拟进程,分别编号为0到P-1。
2.2每个COMP模拟进程均读取计算性能模拟配置文件,获得计算性能配置参数。
2.3SIMComp对目标程序TAPP进行模拟执行,每个COMP模拟进程对目标程序TAPP的多个LP进行模拟,根据计算性能配置参数来评估各个计算代码块的执行时间,并在内存的踪迹结构中记录各个LP的执行踪迹信息。具体步骤:
2.3.1每个COMP模拟进程为其所模拟的每个LP在内存中创建一个新的内存踪迹结构,以记录该LP的执行踪迹信息。
2.3.2在每个COMP模拟进程中,对于其所模拟的每个LP,进行如下处理:
2.3.2.1初始化变量iblk_no=0。
2.3.2.2如果iblk_no=0,取该LP代码中的第一块;否则取该LP代码中的下一块。
2.3.2.3如果当前取的是计算代码块,则对该块中的代码进行模拟执行,并根据计算性能配置参数来评估该代码块在目标系统上的执行时间t_comp。然后,在本LP对应的内存踪迹结构中增加一个新的计算代码块,记录其块编号BLK_NO为iblk_no的值,记录其块类型BLK_TYPE为CCB,并记录其执行时间BLK_DURATION为t_comp。
2.3.2.4如果当前取的是I/O代码块,则对该块中的代码进行模拟执行。然后,在本LP对应的内存踪迹结构中增加一个新的I/O代码块,记录其块编号BLK_NO为iblk_no的值,记录其块类型BLK_TYPE为IOCB,并置其本地存储访问时间IO_LDURATION和远程存储访问IO_RDURATION为NULL(表示一种未赋值的空状态,下同);记录本块中的读写操作记录列表IO_LIST,其中包含本块中全部读写语句的操作记录,每条记录包括下列信息:该语句在本块中的序号IO_NO、读写位置IO_LOC(本地存储记为LOCAL,远程存储记为REMOTE)、读写类型IO_TYPE(读记为READ,写记为WRITE)、数据量大小IO_SIZE。
2.3.2.5如果当前取的是消息通信代码块,则对该块中的代码进行模拟执行。然后,在本LP对应的内存踪迹结构中增加一个新的消息代码块,在其中记录其块编号BLK_NO为iblk_no的值,记录其BLK_TYPE为MCB,置其结点内消息通信时间COMM_IDURATION和结点间消息通信时间COMM_XDURATION为NULL;记录本块中的消息记录列表COMM_LIST,其中包含本块中全部消息通信语句的记录,每条记录包括下列信息:消息在本块中的序号MSG_NO、通信位置MSG_LOC(结点内通信记为INTRA_NODE,结点间通信记为INTER_NODE)、通信对象编号MSG_ENTY、消息大小MSG_SIZE。
2.3.2.6如果已经到达该LP代码的末尾,则转2.4;否则,置iblk_no=iblk_no+1,转2.3.2.2。
2.4每个COMP模拟进程根据其所模拟的各个LP在内存中对应的踪迹结构,创建一个踪迹文件,编号为i的COMP模拟进程生成的踪迹文件为TRACEi(0≤i≤(P-1)),在踪迹文件中记录本COMP模拟进程所负责模拟的全部LP的执行踪迹。每个踪迹文件为各个LP记录了一个沿其虚拟时间轴分布的代码块序列结构,其开始部分是一个元数据块,其中记录了该COMP模拟进程所模拟的LP数目、编号、各个LP对应踪迹在踪迹文件中的位置,元数据块后逐个存储各个LP的踪迹信息。
2.5模拟运行软件SIMComp退出。
第二步生成了P个踪迹文件TRACE0,TRACE1,...,TRACEP-1
第三步,在宿主机上启动存储性能模拟软件SIMIO,以TRACE0,TRACE1,...,TRACEP-1为输入,对每个LP中相应的I/O操作进行模拟,获得每个I/O代码块的执行时间,并修改TRACE0,TRACE1,...,TRACEP-1,记录I/O代码块的时间。步骤是:
3.1在宿主机上启动存储性能模拟软件SIMIO,一共启动P个IO模拟进程,分别编号为0至P-1。
3.2每个IO模拟进程均读取存储性能模拟配置文件,获得存储系统配置参数,包括本地存储系统性能参数和远程存储性能参数。
3.3每个IO模拟进程读取第二步生成的一个踪迹文件,编号为i的IO模拟进程读取的踪迹文件为TRACEi(0≤i≤(P-1)),根据踪迹文件元数据块中的信息定位各个LP对应踪迹的位置,在内存中重建各个LP的踪迹结构。
3.4所有IO模拟进程并行执行,每个IO模拟进程对其负责模拟的各个LP的踪迹结构进行逐块遍历,对其中每个I/O代码块进行模拟。具体步骤:
3.4.1定位到第一个代码块。
3.4.2如果当前代码块的BLK_TYPE等于CCB或MCB,则转3.4.4。
3.4.3如果当前代码块BLK_TYPE等于IOCB,则遍历本块中的读写操作记录列表IO_LIST,基于存储系统配置参数来评估其中各条语句的执行时间,最后更新本块的执行时间。具体步骤:
3.4.3.1定位到本块第一条读写记录,置变量lio_time=0,rio_time=0;
3.4.3.2如果当前读写记录的IO_LOC等于LOCAL,则基于本地存储系统性能参数,结合IO_TYPE和IO_SIZE字段的值,模拟得到其本地存储访问时间tio_local,置lio_time=lio_time+tio_local;如果当前读写记录的IO_LOC等于REMOTE,则基于远程存储性能参数,结合IO_TYPE和IO_SIZE字段的值,模拟得到其远程存储访问时间tio_remote,置rio_time=rio_time+tio_remote。
3.4.3.3如果已到本块中最后一条读写记录则转3.4.3.4;否则,定位到本块中下一条读写记录,转3.4.3.2;
3.4.3.4在该LP对应的内存踪迹结构中更新当前代码块的本地存储访问时间IO_LDURATION的值为lio_time,更新远程存储访问IO_RDURATION的值为rio_time。
3.4.4如果已到最后一个代码块,则转3.5;否则,定位到下一个代码块,转3.4.2。
3.5每个IO模拟进程根据其所模拟的各个LP在内存中对应的踪迹结构,更新相应的踪迹文件,编号为i的IO模拟进程更新的踪迹文件为TRACEi(0≤i≤(P-1))。
3.6存储性能模拟软件SIMIO退出。
第四步,在宿主机上启动通信性能模拟软件SIMComm,以TRACE0,TRACE1,...,TRACEP-1为输入,对每个LP中相应的消息通信操作进行模拟,获得每个消息通信代码块的执行时间,并修改TRACE0,TRACE1,...,TRACEP-1,记录消息通信代码块的时间。具体步骤是:
4.1在宿主机上启动通信性能模拟软件SIMComm,一共启动P个COMM模拟进程,分别编号为0到P-1。
4.2每个COMM模拟进程均读取通信性能模拟配置文件,获得通信系统配置参数,包括结点内通信性能参数与结点间通信性能参数。
4.3每个COMM模拟进程读取第三步生成的一个踪迹文件,编号为i的COMM模拟进程读取的踪迹文件为TRACEi(0≤i≤(P-1)),根据踪迹文件元数据块中的信息定位各个LP对应踪迹的位置,在内存中重建各个LP的踪迹结构。
4.4所有COMM模拟进程并行执行,每个COMM模拟进程对其负责模拟的各个LP的踪迹结构进行逐块遍历,对其中的每个消息通信代码块进行模拟。具体步骤:
4.4.1定位到第一个代码块。
4.4.2如果当前代码块的BLK_TYPE等于CCB或IOCB,则转4.4.4。
4.4.3如果当前代码块的BLK_TYPE等于MCB,则遍历本块中的消息通信记录列表MSG_LIST,基于通信系统配置参数来模拟评估各条语句的执行时间,最后更新本块的执行时间。具体步骤:
4.4.3.1定位到本块第一条消息通信记录,置变量mintra_time=0,minter_time=0;
4.4.3.2如果当前消息通信记录的MSG_LOC等于INTRA_NODE,则基于结点内通信性能参数及MSG_ENTY和MSG_SIZE字段的值,模拟得到其通信时间tmsg_intra,置mintra_time=mintra_time+tmsg_intra;如果当前读写记录的MSG_LOC等于INTER_NODE,则基于结点间消息通信性能参数及MSG_ENTY和MSG_SIZE字段的值,模拟得到其通信时间tmsg_inter,置minter_time=minter_time+tmsg_inter。
4.4.3.3如果已到本块中最后一条消息通信记录则转4.4.3.4;否则,定位到本块中下一条消息通信记录,转4.4.3.2;
4.4.3.4在该LP对应的内存踪迹结构中更新当前代码块的结点内消息通信时间MSG_IDURATION的值为mintra_time,结点间消息通信时间MSG_XDURATION的值为minter_time。
4.4.4如果已到最后一个代码块,则转4.5;否则,定位到下一个代码块,转4.4.2。
4.5每个COMM模拟进程根据其所模拟的各个LP在内存中对应的踪迹结构,更新相应的踪迹文件,编号为i的COMM模拟进程更新的踪迹文件为TRACEi(0≤i≤(P-1))。
4.6通信性能模拟软件SIMComm退出。
第五步,在宿主机上启动能耗模拟软件SIMEngy,以TRACE0,TRACE1,...,TRACEP-1为输入,根据能耗模拟配置文件,对程序运行的能耗进行评估。具体步骤:
5.1在宿主机上启动能耗模拟软件SIMEngy,一共启动P个ENGY模拟进程,分别编号为0至P-1。
5.2每个ENGY模拟进程读取能耗模拟配置文件。该配置文件中包括:目标系统执行计算代码期间单位时间的电能消耗(记为Pcpu);执行I/O代码期间单位时间的电能消耗,分为本地存储访问单位时间的电能消耗(记为Plio),远程存储访问单位时间的电能消耗(记为Prio);执行通信代码期间单位时间的电能消耗,分为结点内通信单位时间的电能消耗(记为Pimsg)和结点间通信单位时间的电能消耗(记为Pxmsg)。
5.3每个ENGY模拟进程读取第四步生成的一个踪迹文件,编号为i的ENGY模拟进程读取的踪迹文件为TRACEi(0≤i≤(P-1)),根据踪迹文件元数据块中的信息定位各个LP对应踪迹的位置,在内存中重建各个LP的踪迹结构。
5.4所有ENGY模拟进程并行执行,每个ENGY模拟进程对其负责模拟的各个LP的踪迹结构进行逐块遍历,对每个代码块进行能耗评估。具体步骤:
5.4.1初始化变量Eq为0(q为本ENGY模拟进程的编号)。
5.4.2对本ENGY模拟进程所负责模拟的每个LP(记其进程号为i),执行如下操作:
5.4.2.1定位到第一个代码块,置变量EEi=0,i为当前被模拟LP的进程号。
5.4.2.2如果当前代码块的BLK_TYPE等于CCB,则取其BLK_DURATION字段的值到变量tcomp中,置EEi=EEi+Pcpu×tcomp;如果当前代码块的BLK_TYPE等于IOCB,则分别取其IO_LDURATION和IO_RDURATION字段的值到变量tlio和trio中,置EEi=EEi+Plio×tlio+Prio×trio;如果当前代码块的BLK_TYPE等于MCB,则分别取其MSG_IDURATION和MSG_XDURATION字段的值到变量timsg和txmsg中,置EEi=EEi+Pimsg×timsg+Pxmsg×txmsg
5.4.2.3如果尚未达到最后一个单元块,定位到下一个代码块,转5.4.2.2;否则,将EEi累加到Eq上,即置Eq=Eq+EEi,执行5.4.3。
5.4.3如果本ENGY模拟进程的编号不等于0,则将Eq发送给编号为0的ENGY模拟进程;如果本ENGY模拟进程的编号等于0,接收来自其他所有ENGY模拟进程的Eq,计算 E total = Σ 0 ≤ q ≤ ( P - 1 ) E q .
5.4.4编号为0的ENGY模拟进程输出目标程序TAPP在目标系统上的能耗评估值Etotal
5.5能耗模拟软件SIMEngy退出。
与现有技术相比,本发明有以下技术优点:
1.通过一系列模拟程序的配合,实现了并行系统上并行程序运行能耗的评估,可灵活配置与目标系统有关的参数(如计算/IO/通信系统性能参数、各类操作在单位时间内的电能消耗等),为并行系统能耗管理、优化配置和并行程序优化提供了参考。
2.精度高,基于模拟方法在模拟器上模拟运行目标程序执行过程并基于其在各个部件上的执行时间来评估各个部件的能耗,充分反映了并行应用程序在并行系统上的动态运行过程特征,可获得比现有模型分析方法精度更高的评估结果。
3.效率高,基于并行宿主机并行模拟,充分利用了并行宿主机大量处理器的计算处理能力来加快模拟过程。
4.灵活性好,以踪迹文件为程序运行记录和数据传递的桥梁,通过踪迹文件将计算、存储访问、消息通信等性能的模拟及总能耗评估划分到不同阶段分别处理,简化了模拟软件设计,还可在不同阶段灵活地选择适合的模拟技术。
综上所述,本发明基于并行计算机系统,采取“灵活的踪迹文件结构、多阶段渐进式模拟、多进程并行模拟”的方式,以实现了对并行计算机系统上并行程序运行电能消耗的高效评估,可用于支持并行计算系统能耗管理、优化配置及应用优化。
附图说明
图1是本发明面向的目标系统结构模型。
图2是本发明宿主机硬件和软件配置示意图。
图3是本发明的总流程图。
图4是本发明计算代码块对应踪迹的结构图。
图5是本发明I/O代码块对应踪迹的结构图。
图6是本发明消息通信代码块对应踪迹的结构图。
图7是本发明第二步的流程图。
图8是本发明第三步的流程图。
图9是本发明第四步的流程图。
图10是本发明第五步的流程图。
具体实施方法
图1是本发明面向的目标系统结构模型。目标系统结构是当前数据中心或超级计算中心通常采用的集群并行计算机系统结构,由多个结点通过互连网络连接而成,每个结点含多个CPU(可以是单芯片多核CPU,也可以是多芯片多核CPU)、本地存储,各个结点还通过互连网络连接远程存储设备。
图2是本发明宿主机硬件和软件配置图。宿主机是一个通用的并行计算机结构,共有P个处理器,各个处理器间通过网络或共享内存互连,并具有共享的磁盘存储,从每个处理器均可访问共享磁盘存储。该宿主机上安装模拟运行软件SIMComp、存储性能模拟软件SIMIO、通信性能模拟软件SIMComm、能耗模拟软件SIMEngy和所模拟的目标程序TAPP。
图3是本发明总流程图。主要流程:
步骤S301,构建宿主机硬件环境,安装各个模拟软件和目标程序TAPP。
步骤S302,执行模拟运行软件SIMComp,其各个COMP模拟进程并行地模拟运行目标程序,模拟目标程序TAPP各个目标进程的各个计算代码块的执行时间,并生成包含计算代码块执行时间和I/O、通信操作记录的踪迹文件TRACE0,TRACE1,...,TRACEP-1
步骤S303,执行存储性能模拟软件SIMIO,其各个IO模拟进程读取存储性能模拟配置文件和踪迹文件TRACE0,TRACE1,...,TRACEP-1,并行地对踪迹中记录的I/O代码块进行模拟,并更新踪迹文件TRACE0,TRACE1,...,TRACEP-1中的I/O代码块执行时间。
步骤S304,执行通信性能模拟软件SIMComm,其各个COMM模拟进程读取通信性能模拟配置文件和踪迹文件TRACE0,TRACE1,...,TRACEP-1,并行地对踪迹中记录的通信代码块进行模拟,并更新踪迹文件TRACE0,TRACE1,...,TRACEP-1中的通信代码块执行时间。
步骤S305,执行模拟运行软件SIMEngy,其各个ENGY模拟进程读取能耗模拟配置文件和踪迹文件TRACE0,TRACE1,...,TRACEP-1,并行地对踪迹中记录的所有代码块进行能耗评估,并由一个ENGY模拟进程汇总输出评估得到的能耗数据。
图4是本发明计算代码块对应踪迹的结构图。计算代码块对应踪迹包含BLK_NO、BLK_TYPE和BLK_DURATION三个字段,均以“字段名=值”的方式存储。图中所示例子为一个块编号等于0的计算代码块,其执行时间为0.5秒。
图5是本发明I/O代码块对应踪迹的结构图。I/O代码块对应踪迹中前一部分包含BLK_NO、BLK_TYPE、IO_LDURATION和IO_RDURATION字段,均以“字段名=值”的方式存储;后一部分包含一个IO_LIST列表,该列表首先用“IO_LIST=值”的方式存储该I/O代码块中的读写语句数,然后存储读写语句的四个信息字段名“IO_NO”、“IO_LOC”、“IO_TYPE”和“IO_SIZE”,然后逐条存储读写语句的信息。图中所示例子为一个块编号等于4的I/O代码块,其本地存储时间为0.5秒,远程存储访问时间为0。该块的IO_LIST中包含2条读写语句,一条是本地读,数据量为40000字节,另一条是本地写,数据量为10000字节。
图6是本发明消息通信代码块对应踪迹的结构图。消息通信代码块对应踪迹中前一部分包含BLK_NO、BLK_TYPE、COMM_IDURATION和COMM_XDURATION字段,均以“字段名=值”的方式存储;后一部分包含一个COMM_LIST列表,该列表首先用“COMM_LIST=值”的方式存储该消息通信代码块中的读写语句数,然后存储消息通信语句的四个信息字段名“MSG_NO”、“MSG_LOC”、“MSG_ENTY”和“MSG_SIZE”,然后逐条存储消息通信语句的信息。图中所示例子为一个块编号等于6的消息通信代码块,其结点内消息通信时间为0,结点间消息通信时间为0.0065秒。该块的COMM_LIST中包含3条结点间消息通信语句,分别是本LP与编号为12、16、18的LP的通信,消息大小分别为8000、2000和4000字节。
图7是本发明第二步的流程图。主要流程:
步骤S701,在宿主机上启动模拟运行软件SIMComp的P个COMP模拟进程,分别编号为0至P-1。
步骤S702,每个COMP模拟进程均读取计算性能模拟配置文件,获得计算性能配置参数。
步骤S703,SIMComp对目标程序TAPP进行模拟执行,每个COMP模拟进程对目标程序TAPP的多个LP进行模拟,根据计算性能配置参数来评估各个计算代码块的执行时间,并在内存踪迹结构中记录各个LP的执行踪迹。过程如下:
步骤S703.1,每个COMP模拟进程为其所模拟的各个LP在内存中创建一个新的内存踪迹结构。
步骤S703.2,在每个COMP模拟进程中,针对其所模拟的每个LP,进行如下处理:
步骤S703.2.1,初始化变量iblk_no=0。
步骤S703.2.2,如果iblk_no=0,取该LP代码中的第一块;否则取该LP代码中的下一块。
步骤S703.2.3,如果当前取的是计算代码块,则对该块中的代码进行模拟执行,并根据计算性能配置参数来评估该代码块在目标系统上的执行时间t_comp。然后,在本LP对应的内存踪迹结构中增加一个新的计算代码块,记录其块编号BLK_NO为iblk_no的值,记录其块类型BLK_TYPE为CCB,并记录其执行时间BLK_DURATION为t_comp。
步骤S703.2.4,如果当前取的是I/O代码块,则对该块中的代码进行模拟执行。然后,在本LP对应踪迹的内存踪迹结构中增加一个新的I/O代码块,记录其块编号BLK_NO为iblk_no的值,记录其块类型BLK_TYPE为IOCB,并置其本地存储访问时间IO_LDURATION和远程存储访问IO_RDURATION为NULL;记录本块中的读写操作记录列表IO_LIST,其中包含本块中全部读写语句的记录,每条记录包括语句在本块中的序号IO_NO、读写位置IO_LOC、读写类型IO_TYPE、数据量大小IO_SIZE。
步骤S703.2.5,如果当前取的是消息通信代码块,则对该块中的代码进行模拟执行。然后,在本LP对应的内存踪迹结构中增加一个新的消息代码块,在其中记录其块编号BLK_NO为iblk_no的值,记录其BLK_TYPE为MCB,置其结点内消息通信时间COMM_IDURATION和结点间消息通信时间COMM_XDURATION为NULL;记录本块中的消息记录列表COMM_LIST,其中包含本块中全部消息通信语句的记录,每条记录包括消息在本块中的序号MSG_NO、通信位置MSG_LOC、通信对象编号MSG_ENTY、消息大小MSG_SIZE。
步骤S703.2.6,如果已经到达该LP代码的末尾,则转步骤S704;否则,置iblk_no=iblk_no+1,转步骤S703.2.2。
步骤S704,每个COMP模拟进程根据其所模拟的各个LP在内存中对应的踪迹结构,创建一个踪迹文件,编号与本COMP模拟进程编号相同,在其中记录本COMP模拟进程所负责模拟的全部LP的执行信息。
步骤S705,模拟运行软件SIMComp退出。
图8是本发明第三步的流程图。主要流程:
步骤S801,在宿主机上启动存储性能模拟软件SIMIO的P个IO模拟进程,分别编号为0至P-1。
步骤S802,每个IO模拟进程均读取存储性能模拟配置文件,获得存储系统配置参数。
步骤S803,每个IO模拟进程读取图3中步骤S302生成的一个踪迹文件,编号为i的IO模拟进程读取的踪迹文件为TRACEi(0≤i≤(P-1)),根据踪迹文件元数据块中的信息定位各个LP对应踪迹的位置,在内存中重建各个LP的踪迹结构。
步骤S804,所有IO模拟进程并行执行,每个IO模拟进程对其负责模拟的各个LP的踪迹结构进行逐块遍历,对其中每个I/O代码块进行模拟。过程如下:
步骤S804.1,定位到第一个代码块。
步骤S804.2,如果当前代码块的BLK_TYPE等于CCB或MCB,则转步骤S804.4。
步骤S804.3,如果当前代码块BLK_TYPE等于IOCB,则遍历本块中的读写操作记录列表IO_LIST,基于存储系统配置参数来评估各条语句的执行时间,并更新本块的执行时间。过程是:
步骤S804.3.1,定位到本块第一条读写记录,置变量lio_time=0,rio_time=0;
步骤S804.3.2,如果当前读写记录的IO_LOC等于LOCAL,则基于本地存储系统性能参数,结合IO_TYPE和IO_SIZE字段的值,模拟得到其本地存储访问时间tio_local,置lio_time=lio_time+tio_local;如果当前读写记录的IO_LOC等于REMOTE,则基于远程存储性能参数,结合IO_TYPE和IO_SIZE字段的值,模拟得到其本地存储访问时间tio_remote,置rio_time=rio_time+tio_remote。
步骤S804.3.3,如果已到本块中最后一条读写记录则转步骤S804.3.4;否则,定位到本块中下一条读写记录,转步骤S804.3.2;
步骤S804.3.4,在该LP对应的内存踪迹结构中更新当前代码块的本地存储访问时间IO_LDURATION的值为lio_time,远程存储访问IO_RDURATION的值为rio_time。
步骤S804.4,如果已到最后一个代码块,则转步骤S805;否则,定位到下一个代码块,转步骤S804.2。
步骤S805,每个IO模拟进程根据其所模拟的各个LP在内存中对应的踪迹结构,更新相应的踪迹文件,编号为i的IO模拟进程更新的踪迹文件为TRACEi(0≤i≤(P-1))。
步骤S806,存储性能模拟软件SIMIO退出。
图9是本发明第四步的流程图。主要流程:
步骤S901,在宿主机上启动通信性能模拟软件SIMComm的P个COMM模拟进程,分别编号为0至P-1。
步骤S902,每个COMM模拟进程均读取通信性能模拟配置文件,获得通信系统配置参数。
步骤S903,每个COMM模拟进程读取图3中步骤S303生成的一个踪迹文件,编号为i的COMM模拟进程读取的踪迹文件为TRACEi(0≤i≤(P-1)),根据踪迹文件元数据块中的信息定位各个LP对应踪迹的位置,在内存中重建各个LP的踪迹结构。
步骤S904,所有COMM模拟进程并行执行,每个COMM模拟进程对其负责模拟的各个LP的踪迹结构进行逐块遍历,对其中的每个消息通信代码块进行模拟。过程如下:
步骤S904.1,定位到第一个代码块。
步骤S904.2,如果当前代码块的BLK_TYPE等于CCB或IOCB,则转步骤S904.4。
步骤S904.3,如果当前代码块的BLK_TYPE等于MCB,则遍历本块中的消息通信记录列表MSG_LIST,基于通信系统配置参数来模拟各条语句的执行时间,并更新本块的执行时间。过程是:
步骤S904.3.1,定位到本块第一条消息通信记录,置变量mintra_time=0,minter_time=0;
步骤S904.3.2,如果当前消息通信记录的MSG_LOC等于INTRA_NODE,则基于结点内通信性能参数及MSG_ENTY和MSG_SIZE字段的值,模拟得到其通信时间tmsg_intra,置mintra_time=mintra_time+tmsg_intra;如果当前读写记录的MSG_LOC等于INTER_NODE,则基于结点间消息通信性能参数及MSG_ENTY和MSG_SIZE字段的值,模拟得到其通信时间tmsg_inter,置minter_time=minter_time+tmsg_inter。
步骤S904.3.3,如果已到本块中最后一条消息通信记录则转步骤S904.3.4;否则,定位到本块中下一条消息通信记录,转步骤S904.3.2;
步骤S904.3.4,在该LP对应的内存踪迹结构中更新当前代码块的结点内消息通信时间MSG_IDURATION的值为mintra_time,结点间消息通信时间MSG_XDURATION的值为minter_time。
步骤S904.4,如果已到最后一个代码块,则转步骤S905;否则,定位到下一个代码块,转步骤S904.2。
步骤S905,每个COMM模拟进程根据其所模拟的各个LP在内存中对应的踪迹结构,更新相应的踪迹文件,编号为i的COMM模拟进程更新的踪迹文件为TRACEi(0≤i≤(P-1))。
步骤S906,通信性能模拟软件SIMComm退出。
图10是本发明第五步的流程图。主要流程:
步骤S1001,在宿主机上启动能耗模拟软件SIMEngy的P个ENGY模拟进程,分别编号为0至P-1。
步骤S1002,每个ENGY模拟进程读取能耗模拟配置文件,获得电能消耗参数Pcpu、Plio、Prio、Pimsg和Pxmsg
步骤S1003,每个ENGY模拟进程读取图3步骤S304生成的一个踪迹文件,编号为i的ENGY模拟进程读取的踪迹文件为TRACEi(0≤i≤(P-1)),根据踪迹文件元数据块中的信息定位各个LP对应踪迹的位置,在内存中重建各个LP的踪迹结构。
步骤S1004,所有ENGY模拟进程并行执行,每个ENGY模拟进程对其负责模拟的各个LP的踪迹结构进行逐块遍历,对每个代码块进行能耗评估。过程如下:
步骤S1004.1,初始化变量Eq为0(q为本模拟进程的编号)。
步骤S1004.2,对本ENGY模拟进程所负责模拟的每个LP(记其进程号为i),执行如下操作:
步骤S1004.2.1,定位到第一个代码块,置变量EEi=0,i为当前被模拟LP的进程号。
步骤S1004.2.2,如果当前代码块的BLK_TYPE等于CCB,则取其BLK_DURATION字段的值到变量tcomp中,置EEi=EEi+Pcpu×tcomp;如果当前代码块的BLK_TYPE等于IOCB,则分别取其IO_LDURATION和IO_RDURATION字段的值到变量tlio和trio中,置EEi=EEi+Plio×tlio+Prio×trio;如果当前代码块的BLK_TYPE等于MCB,则分别取其MSG_IDURATION和MSG_XDURATION字段的值到变量timsg和txmsg中,置EEi=EEi+Pimsg×timsg+Pxmsg×txmsg
步骤S1004.2.3,如果尚未达到最后一个单元块,定位到下一个代码块,转步骤S1004.2.2;否则,将EEi累加到Eq上,即置Eq=Eq+EEi,转步骤S1004.3。
步骤S1004.3,如果本ENGY模拟进程的编号不等于0,则将Eq发送给编号为0的ENGY模拟进程;如果本ENGY模拟进程的编号等于0,接收来自其他所有ENGY模拟进程的Eq,计算 E total = Σ 0 ≤ q ≤ ( P - 1 ) E q .
步骤S1004.4,编号为0的ENGY模拟进程输出目标程序TAPP在目标系统上的能耗评估值Etotal
步骤S1005,能耗模拟软件SIMEngy退出。
本发明是一种基于模拟技术来评估并行计算机系统执行并行程序时的能耗的方法,该方法采用并行计算机作为宿主机,基于良好的过程设计及一系列模拟程序的协调配合,并行地对并行程序运行的计算、磁盘文件读写、消息通信操作进行模拟并最终评估程序运行的总能耗,可灵活配置与目标系统有关的参数,为并行系统能耗管理、优化配置和并行程序优化提供参考。
图1
图2
图3
图4
图5
图6
图8
图9
图10

Claims (3)

1.一种基于渐进式踪迹更新的并行程序能耗模拟评估方法,其特征在于包括以下步骤:
第一步,构建宿主机,宿主机是执行模拟过程的由多个结点构成的并行计算机系统或单结点多处理器并行计算机系统,宿主机上共有P个处理器,P为正整数,各个处理器间通过网络或共享内存互连,并具有共享的磁盘存储设备,从每个处理器均可访问共享磁盘存储设备;宿主机上安装有如下软件:所模拟的目标程序TAPP、模拟运行软件SIMComp、存储性能模拟软件SIMIO、通信性能模拟软件SIMComm、能耗模拟软件SIMEngy,SIMComp、SIMIO、SIMComm和SIMEngy均是并行程序,它们均以多进程方式运行,每个进程运行在宿主机的一个处理器上;SIMComp、SIMIO、SIMComm和SIMEngy的进程分别称为COMP模拟进程、IO模拟进程、COMM模拟进程和ENGY模拟进程,这些模拟进程均有进程号;目标程序TAPP在目标系统上运行时,每个处理器上运行一个进程,将由SIMComp、SIMIO、SIMComm和SIMEngy模拟的TAPP的进程称为逻辑进程,简记为LP,每个LP都有进程号;
第二步,在宿主机上启动模拟运行软件SIMComp,在全部处理器上并行地模拟执行目标程序TAPP,评估TAPP各个LP的各个计算代码块的执行时间,并记录I/O操作和通信操作,生成TAPP运行的踪迹文件TRACE0,TRACE1,...,TRACEP-1,方法是:
2.1在宿主机上启动模拟运行软件SIMComp,共启动P个COMP模拟进程,分别编号为0到P-1;
2.2每个COMP模拟进程均读取计算性能模拟配置文件,获得计算性能配置参数;
2.3SIMComp对目标程序TAPP进行模拟执行,每个COMP模拟进程对目标程序TAPP的多个LP进行模拟,根据计算性能配置参数来评估各个计算代码块的执行时间,并在内存的踪迹结构中记录各个LP的执行踪迹信息,具体步骤是:
2.3.1每个COMP模拟进程为其所模拟的每个LP在内存中创建一个新的内存踪迹结构,以记录该LP的执行踪迹信息;
2.3.2在每个COMP模拟进程中,对于其所模拟的每个LP,进行如下处理:
2.3.2.1初始化变量iblk_no=0;
2.3.2.2如果iblk_no=0,取该LP代码中的第一块,否则取该LP代码中的下一块;
2.3.2.3如果当前取的是计算代码块,则对该块中的代码进行模拟执行,并根据计算性能配置参数来评估该代码块在目标系统上的执行时间t_comp;然后,在本LP对应的内存踪迹结构中增加一个新的计算代码块,记录其块编号BLK_NO为iblk_no的值,记录其块类型BLK_TYPE为CCB,并记录其执行时间BLK_DURATION为t_comp;计算代码块是指LP代码中一片连续的计算代码段;
2.3.2.4如果当前取的是I/O代码块,则对该块中的代码进行模拟执行;然后在本LP对应的内存踪迹结构中增加一个新的I/O代码块,记录其块编号BLK_NO为iblk_no的值,记录其块类型BLK_TYPE为IOCB,并置其本地存储访问时间IO_LDURATION和远程存储访问IO_RDURATION为NULL,NULL表示一种未赋值的空状态;记录本块中的读写操作记录列表IO_LIST,其中包含本块中全部读写语句的操作记录,每条记录包括下列信息:该语句在本块中的序号IO_NO、读写位置IO_LOC、读写类型IO_TYPE、数据量大小IO_SIZE;I/O代码块是指LP代码中一片连续的存储访问代码段;
2.3.2.5如果当前取的是消息通信代码块,则对该块中的代码进行模拟执行;然后,在本LP对应的内存踪迹结构中增加一个新的消息代码块,在其中记录其块编号BLK_NO为iblk_no的值,记录其BLK_TYPE为MCB,置其结点内消息通信时间COMM_IDURATION和结点间消息通信时间COMM_XDURATION为NULL;记录本块中的消息记录列表COMM_LIST,其中包含本块中全部消息通信语句的记录,每条记录包括下列信息:消息在本块中的序号MSG_NO、通信位置MSG_LOC、通信对象编号MSG_ENTY、消息大小MSG_SIZE;消息通信代码块是指LP代码中一片连续的消息通信代码段;
2.3.2.6如果已经到达该LP代码的末尾,则转2.4;否则,置iblk_no=iblk_no+1,转2.3.2.2;
2.4每个COMP模拟进程根据其所模拟的各个LP在内存中对应的踪迹结构,创建一个踪迹文件,编号为i的COMP模拟进程生成的踪迹文件为TRACEi,0≤i≤(P-1),在踪迹文件中记录本COMP模拟进程所负责模拟的全部LP的执行踪迹;每个踪迹文件为各个LP记录了一个沿其虚拟时间轴分布的代码块序列结构,其开始部分是一个元数据块,其中记录了该COMP模拟进程所模拟的LP数目、编号、各个LP对应踪迹在踪迹文件中的位置,元数据块后逐个存储各个LP的踪迹信息;
2.5模拟运行软件SIMComp退出;
第三步,在宿主机上启动存储性能模拟软件SIMIO,以TRACE0,TRACE1,...,TRACEP-1为输入,对每个LP中相应的I/O操作进行模拟,获得每个I/O代码块的执行时间,并修改TRACE0,TRACE1,...,TRACEP-1,记录I/O代码块的时间,步骤是:
3.1在宿主机上启动存储性能模拟软件SIMIO,共启动P个IO模拟进程,分别编号为0至P-1;
3.2每个IO模拟进程均读取存储性能模拟配置文件,获得存储系统配置参数,包括本地存储系统性能参数和远程存储性能参数;
3.3每个IO模拟进程读取第二步生成的一个踪迹文件,编号为i的IO模拟进程读取的踪迹文件为TRACEi,根据踪迹文件元数据块中的信息定位各个LP对应踪迹的位置,在内存中重建各个LP的踪迹结构;
3.4所有IO模拟进程并行执行,每个IO模拟进程对其负责模拟的各个LP的踪迹结构进行逐块遍历,对其中每个I/O代码块进行模拟,具体步骤:
3.4.1定位到第一个代码块;
3.4.2如果当前代码块的BLK_TYPE等于CCB或MCB,则转3.4.4;
3.4.3如果当前代码块BLK_TYPE等于IOCB,则遍历本块中的读写操作记录列表IO_LIST,基于存储系统配置参数来评估其中各条语句的执行时间,最后更新本块的执行时间,具体步骤:
3.4.3.1定位到本块第一条读写记录,置变量lio_time=0,rio_time=0;
3.4.3.2如果当前读写记录的IO_LOC等于LOCAL,则基于本地存储系统性能参数,结合IO_TYPE和IO_SIZE字段的值,模拟得到其本地存储访问时间tio_local,置lio_time=lio_time+tio_local;如果当前读写记录的IO_LOC等于REMOTE,则基于远程存储性能参数,结合IO_TYPE和IO_SIZE字段的值,模拟得到其远程存储访问时间tio_remote,置rio_time=rio_time+tio_remote;
3.4.3.3如果已到本块中最后一条读写记录则转3.4.3.4;否则,定位到本块中下一条读写记录,转3.4.3.2;
3.4.3.4在该LP对应的内存踪迹结构中更新当前代码块的本地存储访问时间IO_LDURATION的值为lio_time,更新远程存储访问IO_RDURATION的值为rio_time;
3.4.4如果已到最后一个代码块,则转3.5;否则,定位到下一个代码块,转3.4.2;
3.5每个IO模拟进程根据其所模拟的各个LP在内存中对应的踪迹结构,更新相应的踪迹文件,编号为i的IO模拟进程更新的踪迹文件为TRACEi
3.6存储性能模拟软件SIMIO退出;
第四步,在宿主机上启动通信性能模拟软件SIMComm,以TRACE0,TRACE1,...,TRACEP-1为输入,对每个LP中相应的消息通信操作进行模拟,获得每个消息通信代码段的执行时间,并修改TRACE0,TRACE1,...,TRACEP-1,记录消息通信代码块的时间,具体步骤是:
4.1在宿主机上启动通信性能模拟软件SIMComm,一共启动P个COMM模拟进程,分别编号为0到P-1;
4.2每个COMM模拟进程均读取通信性能模拟配置文件,获得通信系统配置参数,包括结点内通信性能参数与结点间通信性能参数;
4.3每个COMM模拟进程读取第三步生成的一个踪迹文件,编号为i的COMM模拟进程读取的踪迹文件为TRACEi,根据踪迹文件元数据块中的信息定位各个LP对应踪迹的位置,在内存中重建各个LP的踪迹结构;
4.4所有COMM模拟进程并行执行,每个COMM模拟进程对其负责模拟的各个LP的踪迹结构进行逐块遍历,对其中的每个消息通信代码块进行模拟,具体步骤:
4.4.1定位到第一个代码块;
4.4.2如果当前代码块的BLK_TYPE等于CCB或IOCB,则转4.4.4;
4.4.3如果当前代码块的BLK_TYPE等于MCB,则遍历本块中的消息通信记录列表MSG_LIST,基于通信系统配置参数来模拟评估各条语句的执行时间,最后更新本块的执行时间,具体步骤:
4.4.3.1定位到本块第一条消息通信记录,置变量mintra_time=0,minter_time=0;
4.4.3.2如果当前消息通信记录的MSG_LOC等于INTRA_NODE,则基于结点内通信性能参数及MSG_ENTY和MSG_SIZE字段的值,模拟得到其通信时间tmsg_intra,置mintra_time=mintra_time+tmsg_intra;如果当前读写记录的MSG_LOC等于INTER_NODE,则基于结点间消息通信性能参数及MSG_ENTY和MSG_SIZE字段的值,模拟得到其通信时间tmsg_inter,置minter_time=minter_time+tmsg_inter;
4.4.3.3如果已到本块中最后一条消息通信记录则转4.4.3.4;否则,定位到本块中下一条消息通信记录,转4.4.3.2;
4.4.3.4在该LP对应的内存踪迹结构中更新当前代码块的结点内消息通信时间MSG_IDURATION的值为mintra_time,结点间消息通信时间MSG_XDURATION的值为minter_time;
4.4.4如果已到最后一个代码块,则转4.5;否则,定位到下一个代码块,转4.4.2;
4.5每个COMM模拟进程根据其所模拟的各个LP在内存中对应的踪迹结构,更新相应的踪迹文件,编号为i的COMM模拟进程更新的踪迹文件为TRACEi
4.6通信性能模拟软件SIMComm退出;
第五步,在宿主机上启动能耗模拟软件SIMEngy,以TRACE0,TRACE1,...,TRACEP-1为输入,根据能耗模拟配置文件,对程序运行的能耗进行评估,具体步骤:
5.1在宿主机上启动能耗模拟软件SIMEngy,一共启动P个ENGY模拟进程,分别编号为0至P-1;
5.2每个ENGY模拟进程读取能耗模拟配置文件,该配置文件中包括:目标系统执行计算代码期间单位时间的电能消耗Pcpu;执行I/O代码期间单位时间的电能消耗,分为本地存储访问单位时间的电能消耗Plio,远程存储访问单位时间的电能消耗Prio;执行通信代码期间单位时间的电能消耗,分为结点内通信单位时间的电能消耗Pimsg和结点间通信单位时间的电能消耗Pxmsg
5.3每个ENGY模拟进程读取第四步生成的一个踪迹文件,编号为i的ENGY模拟进程读取的踪迹文件为TRACEi,根据踪迹文件元数据块中的信息定位各个LP对应踪迹的位置,在内存中重建各个LP的踪迹结构;
5.4所有ENGY模拟进程并行执行,每个ENGY模拟进程对其负责模拟的各个LP的踪迹结构进行逐块遍历,对每个代码块进行能耗评估,具体步骤:
5.4.1初始化变量Eq为0,q为本ENGY模拟进程的编号;
5.4.2对本ENGY模拟进程所负责模拟的每个LP,执行如下操作:
5.4.2.1定位到第一个代码块,置变量EEi=0,i为当前被模拟LP的进程号;
5.4.2.2如果当前代码块的BLK_TYPE等于CCB,则取其BLK_DURATION字段的值到变量tcomp中,置EEi=EEi+Pcpu×tcomp;如果当前代码块的BLK_TYPE等于IOCB,则分别取其IO_LDURATION和IO_RDURATION字段的值到变量tlio和trio中,置EEi=EEi+Plio×tlio+Prio×trio;如果当前代码块的BLK_TYPE等于MCB,则分别取其MSG_IDURATION和MSG_XDURATION字段的值到变量timsg和txmsg中,置EEi=EEi+Pimsg×timsg+Pxmsg×txmsg
5.4.2.3如果尚未达到最后一个单元块,定位到下一个代码块,转5.4.2.2;否则,置Eq=Eq+EEi,执行5.4.3;
5.4.3如果本ENGY模拟进程的编号不等于0,则将Eq发送给编号为0的ENGY模拟进程;如果本ENGY模拟进程的编号等于0,接收来自其他所有ENGY模拟进程的Eq,计算 E total = Σ 0 ≤ q ≤ ( P - 1 ) E q ;
5.4.4编号为0的ENGY模拟进程输出目标程序TAPP在目标系统上的能耗评估值Etotal
5.5能耗模拟软件SIMEngy退出。
2.如权利要求1所述的基于渐进式踪迹更新的并行程序能耗模拟评估方法,其特征在于所述读写操作记录列表IO_LIST中,若是本地存储将IO_LOC记为LOCAL,远程存储将IO_LOC记为REMOTE;若是读将IO_TYPE记为READ,写将IO_TYPE记为WRITE。
3.如权利要求1所述的基于渐进式踪迹更新的并行程序能耗模拟评估方法,其特征在于所述消息记录列表COMM_LIST中,若是结点内通信将MSG_LOC记为INTRA_NODE,结点间通信将MSG_LOC记为INTER_NODE。
CN201110450987.3A 2011-12-29 2011-12-29 基于渐进式踪迹更新的并行程序能耗模拟评估方法 Expired - Fee Related CN102567079B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110450987.3A CN102567079B (zh) 2011-12-29 2011-12-29 基于渐进式踪迹更新的并行程序能耗模拟评估方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110450987.3A CN102567079B (zh) 2011-12-29 2011-12-29 基于渐进式踪迹更新的并行程序能耗模拟评估方法

Publications (2)

Publication Number Publication Date
CN102567079A CN102567079A (zh) 2012-07-11
CN102567079B true CN102567079B (zh) 2014-07-16

Family

ID=46412577

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110450987.3A Expired - Fee Related CN102567079B (zh) 2011-12-29 2011-12-29 基于渐进式踪迹更新的并行程序能耗模拟评估方法

Country Status (1)

Country Link
CN (1) CN102567079B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102999374B (zh) * 2012-12-10 2016-05-25 北京神州绿盟信息安全科技股份有限公司 一种基于虚拟机的信息记录方法
CN105374002A (zh) * 2014-08-20 2016-03-02 中国移动通信集团广东有限公司 一种网络测评指标的公式效率评估方法及装置
US10401934B2 (en) * 2017-01-11 2019-09-03 Microsoft Technology Licensing, Llc Process-level activity tagging
JP7181663B2 (ja) * 2019-01-11 2022-12-01 富士通株式会社 通信装置、通信プログラム、および分散処理方法
CN112115609B (zh) * 2020-09-18 2023-03-31 上海思尔芯技术股份有限公司 功耗仿真评估方法及装置
CN113590166B (zh) * 2021-08-02 2024-03-26 腾讯数码(深圳)有限公司 应用程序的更新方法、装置以及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996014617A1 (en) * 1994-11-07 1996-05-17 Temple University - Of The Commonwealth System Higher Education Multicomputer system and method
CN101526915A (zh) * 2009-04-28 2009-09-09 中国人民解放军国防科学技术大学 并行模拟中支持踪迹文件并行输入输出的方法
CN101694628A (zh) * 2009-10-21 2010-04-14 中国人民解放军国防科学技术大学 一种串行与并行模拟相结合的并行计算机系统性能模拟方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996014617A1 (en) * 1994-11-07 1996-05-17 Temple University - Of The Commonwealth System Higher Education Multicomputer system and method
CN101526915A (zh) * 2009-04-28 2009-09-09 中国人民解放军国防科学技术大学 并行模拟中支持踪迹文件并行输入输出的方法
CN101694628A (zh) * 2009-10-21 2010-04-14 中国人民解放军国防科学技术大学 一种串行与并行模拟相结合的并行计算机系统性能模拟方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
《Evaluating the Performance and Accuracy Impact of Trace Generation to the BigSim Emulator》;Yonggang Che etc.;《Computer and Information Technology》;20100701;第2908 - 2913页 *
《大规模并行计算机系统并行性能模拟技术研究》;徐传福等;《计算机科学》;20090930;第36卷(第9期);全文 *
Yonggang Che etc..《Evaluating the Performance and Accuracy Impact of Trace Generation to the BigSim Emulator》.《Computer and Information Technology》.2010,第2908 - 2913页.
徐传福等.《大规模并行计算机系统并行性能模拟技术研究》.《计算机科学》.2009,第36卷(第9期),全文.

Also Published As

Publication number Publication date
CN102567079A (zh) 2012-07-11

Similar Documents

Publication Publication Date Title
Barroso et al. The datacenter as a computer: An introduction to the design of warehouse-scale machines
CN102567079B (zh) 基于渐进式踪迹更新的并行程序能耗模拟评估方法
Chen et al. Towards energy efficient mapreduce
Kolberg et al. Mrsg–a mapreduce simulator over simgrid
US20140012561A1 (en) Modeling and evaluating application performance in a new environment
Mustafa et al. A machine learning approach for predicting execution time of spark jobs
CN104838373A (zh) 基于单个微控制器的多个计算节点管理
Song et al. Energy profiling and analysis of the hpc challenge benchmarks
Canny et al. Machine learning at the limit
Ahmed et al. An integrated interconnection network model for large-scale performance prediction
Marszałkowski et al. Time and energy performance of parallel systems with hierarchical memory
Almeida et al. Energy monitoring as an essential building block towards sustainable ultrascale systems
Pati et al. Demystifying bert: Implications for accelerator design
Bawankule et al. Historical data based approach for straggler avoidance in a heterogeneous Hadoop cluster
Vetter et al. Quantifying architectural requirements of contemporary extreme-scale scientific applications
Bielert et al. HAEC-SIM: A simulation framework for highly adaptive energy-efficient computing platforms
Klenk et al. Analyzing communication models for distributed thread-collaborative processors in terms of energy and time
CN104299170B (zh) 间歇性能源海量数据处理方法
Cornebize et al. Emulating high performance linpack on a commodity server at the scale of a supercomputer
Khan Hadoop performance modeling and job optimization for big data analytics
Zare et al. LEGOStore: a linearizable geo-distributed store combining replication and erasure coding
Liu et al. Improving the energy efficiency of data-intensive applications running on clusters
Ouarnoughi et al. Considering I/O processing in CloudSim for performance and energy evaluation
Makaratzis et al. GPU power modeling of HPC applications for the simulation of heterogeneous clouds
Minartz et al. Tool environments to measure power consumption and computational performance

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140716

Termination date: 20171229