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

文档序号:6355078阅读:364来源:国知局
专利名称:基于渐进式踪迹更新的并行程序能耗模拟评估方法
技术领域
本发明涉及计算机系统性能评估方法,特别是基于模拟技术对数据密集型并行计算系统上并行程序的能耗进行评估,以支持并行计算系统能耗管理、优化配置及应用优化的方法。
背景技术
当前,以数据中心应用为代表的数据密集型计算日益兴起,这是ー种以数据为核心的计算模式,其特点是运行过程中需要不断获取、更新、存储和共享大量数据,并支持对这些数据进行各种操作。数据密集型计算系统通常基于大量商用服务器、存储设备和网络设备构建,耗电量巨大,因此能耗控制成为其高效运行的一个关键挑战。良好的能耗管理除了能够降低运行成本外,还是避免因能耗过载或系统过热导致的系统失效的重要手段。据估计,针对服务器集群的能耗管理使服务器每节约1度电力,上游的交流和直流电源设备、 配电设备、UPS、散热设备能够节省1. 07度电力,开关和转换设备等也节约了电力,因此服务器上每节约1瓦电力,总功率就能降低2. 84瓦。由于能耗控制的重要性,在数据密集型计算机系统部署或应用开发过程中,通常需要对系统各种配置下的能耗情况进行评估,以获得一定约束下最优的设计方案。例如,系统结点数目、处理器数目、处理器主频及功率、网络设备的性能与功率、存储系统的性能和功率等參数都有一定的可变范围,应用的计算、存储访问、通信等特征,都会对系统能耗产生影响。为支持能耗管理、优化配置与应用优化,需要能够对并行计算系统在各种配置情况下运行典型应用程序的能耗进行评估。计算机系统能耗评估方法主要有实际测量、模型分析和模拟方法。实际测量在实际系统上进行能耗测试,例如文献(Ripal Nathuji,Karsten Schwan, Ankit Somani, Yogendra Joshi. VPM tokens virtual machine—aware power budgeting in datacenters. Cluster Computing,2009年12月)报道了使用电能表对进行实际测量的方法,使用实际的能耗测试来驱动系统,各种工作负载情况下的能耗数据使用Extech 380801 功率分析仪来测试,使用数字式电表实现能耗监控。但是实际测量只在真实系统已存在并运行的情况下进行,只能获得特定系统配置与运行状态下的电能消耗,缺乏灵活性。模型分析的方法通过对系统各个組成部分的能耗建立分析表达式,将系统及应用程序參数代入表达式中来计算系统能耗。例如文献(Z.Wang,C. McCarthy, X. Zhu, P. Ranganathan, and V. Talwar, Feedback control algorithms for power management of servers,3rd Workshop on Feedback Control Implementation and Design in Computing Systems and Networks,2008年6月)采用模型分析的方法估计能耗,分析应用程序呑吐率、服务器利用率与服务器的功率的关系;文献(Xiaorui Wangling Chen, and Xing Fu. ΜΙΜΟ Power Control for High-Density Servers in an Enclosure)也使用系统建模刀法来分析机柜内所有服务器的能耗。模型分析的灵活性好,但是对复杂系统难以建立精确的分析模型,而且不能反映应用程序在系统上运行的动态过程。
模拟方法采用模拟软件来在现有的计算机(宿主机)上模仿目标计算机系统内部操作,并对目标系统的性能、能耗等进行分析。模拟软件一般是可配置、可复用的,可以对所模拟系统的各项參数进行配置,模拟运行真实测试程序或人工生成的工作负载,获得目标系统采用该配置方案时的性能、能耗数据。文献(U. C. Berkley. Stephen Dawson-Haggerty, Andrew Krioukov, David Culler. Power Optimization-a Reality Cneck. 2009)石if究发现, 当前商用计算硬件的能耗功率可以通过两个主要部分建模一个总是存在的常数功率,以及ー个线性的功率-性能曲线。文献(David Me isner, Brian Τ. Gold, Thomas F. ffenisch. PowerNap -Eliminating Server Idle Power. ASPLOS' 09, March 7-11,2009, Washington, DC, USA)中提出了一种节能方法PowerNap,针对工作负载情況,在没有应用程序运行的情况下,整个系统从高性能活跃状态快速转换到ー个接近零能耗的空闲状态(所有活动都被挂起直到有新的任务来),并提出负载共享冗余阵列方法,平均降低服务器能耗74%。由此可见,系统的能耗与其上应用程序执行时间密切相关,在应用程序执行时间模拟的基础上评估其能耗是可行的。目前有ー些评估并行程序在并行计算机系统上性能的模拟技木,可作为能耗模拟的基础。根据专利文献检索,以往的专利与文献中尚未见到以渐进式踪迹更新并行模拟方式实现并行计算系统上应用程序运行过程能耗评估的相关报道。最相关的专利是专利号为CN03125126. 9的中国专利,该专利提出了大规模数字电路最大功耗估计方法,不涉及并行程序能耗模拟评估。另有ー些关于模拟器构造方面的方法申请了专利,如专利号分别为 98808090. 7,200480008289. 6,200480033145. 6 的中国专利、专利号 PCT/US2004/004092 的美国专利,专利号为 PCT/JP 361914/2003、PCT/JP 376210/2002、PCT/JP 360362/2002 的日本专利。

发明内容
本发明要解决的技术问题是提供ー种基于渐进式踪迹更新的并行程序能耗模拟评估方法,以性能模拟软件为基础,通过相应的模拟控制流程设计,以程序踪迹文件为程序操作记录和性能信息传递的桥梁,协调调度多种模拟软件对并行应用程序运行过程在并行计算系统上产生的能耗进行评估,提高功耗评估的准确性与灵活性,支持并行计算系统能耗管理、优化配置及针对应用的节能优化。当前数据密集型并行计算系统通常采用集群并行计算机系统结构,基于多核处理器服务器和商用网络构建。本专利所要模拟的并行计算机系统(以下称为目标系统)由多台服务器结点通过网络互连构成。并行应用程序(以下统称为目标程序)在目标系统上运行时的操作归为三类(1)各种运算操作,这类操作统称为计算,执行相应的代码称为计算代码。(2)磁盘文件读写操作,这类操作称为1/0操作,相应的代码称为1/0代码。(3)消息通信操作,这类操作称为消息通信,相应的代码称为消息通信代码。相应地,目标程序在目标系统上执行时的电能消耗来源包括以下几个部分(1)执行计算代码的电能消耗。(2)执行1/0代码的电能消耗。并行计算系统中文件可能存储于本地存储上,也可能存储在远程存储设备上,本地存储访问和远程存储访问两种1/0操作所涉及的系统部件和操作过程不同,単位时间内的电能消耗也不同。(3)执行通信代码时候的电能消耗。通信分为两类一类是结点内部不同处理器 (或处理器核,以下统称处理器)之间的通信,另ー类是不同结点上的处理器之间的通信。 结点内通信与结点间通信所涉及的设备和操作过程不同,単位时间内的电能消耗也不同。需要说明的是,并行程序执行过程中,并行计算机系统上计算、通信和I/O设备并不总是处于完全利用的状态,总会有些设备在某些时段处于空闲状态,这些空闲设备仍然产生能量消耗。因此,并行程序运行期间的系统能耗由实际进行有用操作的能耗和空转能耗两部分組成。但由于当前设备中广泛采用先进的节能技木,设备在空闲状态下的功率比其在忙状态下的功率低得多,且空闲状态下的能耗基本是固定的,不会发生变化,因此本发明中只计算设备在忙状态下的电能消耗,因为忙状态下的电能消耗会因为程序运行而变化。本发明技术方案包括以下步骤第一歩,构建用于执行模拟过程的并行计算机系统,称为宿主机。宿主机可以是由多个结点构成的并行计算机系统,也可以是单结点多处理器并行计算机系统。宿主机上共有P个处理器(P为正整数),各个处理器间通过网络或共享内存互连,并具有共享的磁盘存储设备,从每个处理器均可访问共享磁盘存储设备。宿主机上安装有如下软件所模拟的目标程序TAPP ;模拟运行软件SIM。。mp,它在宿主机上模拟执行目标程序TAPP,评估程序计算代码的执行时间,并生成踪迹文件,在其中记录程序执行过程中发生的操作及相应的时间信息;存储性能模拟软件SIMm,它在SIMqmp 结束之后运行,以SIMqmp生成的踪迹文件为输入,对程序I/O代码的执行时间进行模拟, 并修改该踪迹文件以记录各个存储访问操作的时间;通信性能模拟软件SIM。_,它在SIMm 结束之后运行,以SIMra修改后的踪迹文件为输入,对程序消息通信代码的通信时间进行模拟,并修改该踪迹文件以记录各个消息传递操作的时间;能耗模拟软件SIMEngy,它在SIMajmm 结束之后运行,以SIM。_修改后的踪迹文件为输入,对程序运行总能耗进行评估。SIMc。mp、 SIMI0> SIMcofflffl和SIMEngy均是并行程序,它们均以多进程方式运行,每个进程运行在宿主机的一个处理器上。为描述方便,将SIMe。mp、SIM10, SIMconm和SIMEngy的进程分别称为COMP模拟进程、IO模拟进程、COMM模拟进程和ENGY模拟进程,这些模拟进程均有进程号。目标程序TAPP在目标系统上运行吋,通常每个处理器上运行ー个进程,将由模拟运行软件SIMc。mp、 SIno>SIMconm和SIMEngy模拟的TAPP的进程称为逻辑进程(Logical Process),简记为LP,每个LP都有进程号。宿主机处理器数通常小于目标系统的处理器数,因此每个模拟进程要负责多个LP的模拟。第二歩,在宿主机上启动模拟运行软件SIM。。mp,在全部处理器上并行地模拟执行目标程序TAPP,评估TAPP各个LP的各个计算代码块的执行时间,并记录I/O操作和通信操作,生成TAPP运行的踪迹文件。 TAPP的每个LP执行的代码包括计算代码、存储访问代码和消息通信代码,将LP代码中一片连续的计算代码段称为ー个计算代码块(Computation Code Block),一片连续的存储访问代码段称为ー个1/0代码块(Input and Output Code Block),一片连续的消息通信代码段称为ー个消息通信代码块(Message Code Block)。在TAPP的踪迹文件中为每个 LP按虚拟时间顺序存储各个代码块结构,对所有的代码块按顺序从0开始统ー编号,称为块编号,记为BLK_N0。对每个代码块均记录其类型BLK_TYPE (计算代码块为CCB、I/0代码块为IOCB、消息通信代码块为MCB)。每个计算代码块对应的踪迹中除了包含BLK_N0和BLK_ TYPE外,还包含本块的执行时间BLK_DURATI0N。每个存储访问代码块对应的踪迹中除了包含BLK_N0和BLK_TYPEタト,还包括本块中本地存储访问时间I0_LDURATI0N、远程存储访问 I0_RDURATI0N、本块中的读写操作记录列表I0_LIST。I0_LIST中首先记录本块中读写语句数,然后对每条读写语句记录下列信息该语句在本块中的序号Ι0_Ν0(从0开始)、读写位置I0_L0C (本地存储记为LOCAL,远程存储记为REM0TC)、读写类型Ι0_ΤΥΡΕ(读记为READ, 写记为WRITC)、数据量大小I0_SUE。每个消息通信代码块对应的踪迹中除了包含BLK_N0 和BLK_TYPE夕卜,还包括本块中结点内消息通信时间C0MM_IDURATI0N、结点间消息通信时间 C0MM_XDURATI0N、本块中的消息记录列表C0MM_LIST。C0MM_LIST中首先记录本块中消息通信语句数,然后对每条消息通信语句记录下列信息消息在本块中的序号MSG_N0(从0开始)、通信位置MSG_L0C (结点内通信记为INTRA_N0DE,结点间通信记为INTER_N( m、通信对象编号MSG_ENTY(參与通信的对方LP的进程号)、消息大小MSG_SUE。需要说明的是,目标程序TAPP的踪迹有两种形态,ー种以踪迹文件的方式存储在磁盘上,另ー种以内存数据结构的方式存储在内存中(称为内存踪迹结构或简称踪迹结构),两者是相互对应的。因为内存访问速度比磁盘访问速度快得多,故SIMqmp软件先在内存中创建和修改踪迹结构,待退出前才将踪迹结构的内容写到磁盘上的踪迹文件中,这样可提高效率。SIMra、SIMcomm和SIMEngy对踪迹的处理方式也是基于类似的考虑。第二步步骤如下2. 1在宿主机上启动模拟运行软件SIM。。mp,共启动P个COMP模拟进程,分別编号为 0 至Ij P-I02. 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_N0为iblk_no,记录其块类型 BLK_TYPE 为 CCB,并记录其执行时间 BLK_DURATI0N 为 t_comp。2. 3. 2. 4如果当前取的是I/O代码块,则对该块中的代码进行模拟执行。然后,在本LP对应的内存踪迹结构中増加一个新的I/O代码块,记录其块编号BLK_N0为iblk_no, 记录其块类型BLK_TYPE为I0CB,井置其本地存储访问时间I0_LDURATI0N和远程存储访问 IO RDURATI0N为NULL(表示一种未赋值的空状态,下同);记录本块中的读写操作记录列表I0_LIST,其中包含本块中全部读写语句的操作记录,每条记录包括下列信息该语句在本块中的序号Ι0_Ν0、读写位置I0_L0C (本地存储记为LOCAL,远程存储记为REM0TC)、读写类型Ι0_ΤΥΡΕ(读记为READ,写记为WRITC)、数据量大小I0_SUE。2. 3. 2. 5如果当前取的是消息通信代码块,则对该块中的代码进行模拟执行。然后,在本LP对应的内存踪迹结构中増加一个新的消息代码块,在其中记录其块编号BLK_N0 为iblk_no的值,记录其BLK_TYPE为MCB,置其结点内消息通信时间C0MM_IDURATI0N和结点间消息通信时间C0MM_XDURATI0N为NULL ;记录本块中的消息记录列表C0MM_LIST,其中包含本块中全部消息通信语句的记录,每条记录包括下列信息消息在本块中的序号MSG_ NO、通信位置MSG_L0C (结点内通信记为INTRA_N0DE,结点间通信记为INTER_N( m、通信对象编号MSG_ENTY、消息大小MSG_SUE。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-I)),在踪迹文件中记录本COMP模拟进程所负责模拟的全部LP的执行踪迹。每个踪迹文件为各个 LP记录了ー个沿其虚拟时间轴分布的代码块序列结构,其开始部分是ー个元数据块,其中记录了该COMP模拟进程所模拟的LP数目、编号、各个LP对应踪迹在踪迹文件中的位置,元数据块后逐个存储各个LP的踪迹信息。2. 5模拟运行软件SIMc。mp退出。第二步生成了P 个踪迹文件 TRACE。,TRACE1, . . .,TRACEim。第三步,在宿主机上启动存储性能模拟软件SIMiq,以TRACE。,TRACE1,... , TRACEim 为输入,对每个LP中相应的I/O操作进行模拟,获得每个I/O代码块的执行时间,并修改 TRACE0, TRACE1, . . .,TRACEim,记录I/O代码块的时间。步骤是3. 1在宿主机上启动存储性能模拟软件SIMra, —共启动P个IO模拟进程,分别编号为0至P-1。3. 2每个IO模拟进程均读取存储性能模拟配置文件,获得存储系统配置參数,包括本地存储系统性能參数和远程存储性能參数。3. 3每个IO模拟进程读取第二步生成的一个踪迹文件,编号为i的IO模拟进程读取的踪迹文件为TRACEiO)彡i彡(P-D),根据踪迹文件元数据块中的信息定位各个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等于I0CB,则遍历本块中的读写操作记录列表 I0_LIST,基于存储系统配置參数来评估其中各条语句的执行时间,最后更新本块的执行时间。具体步骤3. 4. 3. 1定位到本块第一条读写记录,置变量lio_time = 0,rio_time = 0 ;3. 4. 3. 2如果当前读写记录的I0_L0C等于LOCAL,则基于本地存储系统性能參数,结合Ι0_ΤΥΡΕ和I0_SUE字段的值,模拟得到其本地存储访问时间tio_loCal,置lio_time =lio_time+tio_local ;如果当前读写记录的I0_L0C等于REMOTE,则基于远程存储性能參数,结合Ι0_ΤΥΡΕ和I0_SUE字段的值,模拟得到其远程存储访问时间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对应的内存踪迹结构中更新当前代码块的本地存储访问时间10_ LDURATION的值为lio_time,更新远程存储访问I0_RDURATI0N的值为rio_time。3. 4. 4如果已到最后ー个代码块,则转3. 5 ;否则,定位到下一个代码块,转3. 4. 2。3. 5每个IO模拟进程根据其所模拟的各个LP在内存中对应的踪迹结构,更新相应的踪迹文件,编号为i的IO模拟进程更新的踪迹文件为TRACEi (0彡i彡(P-I))。3. 6存储性能模拟软件SIMiq退出。第四歩,在宿主机上启动通信性能模拟软件SIMC_,以TRACE。,TRACE1,..., TRACEim为输入,对每个LP中相应的消息通信操作进行模拟,获得每个消息通信代码块的执行时间,并修改TRACE。,TRACE1,. . .,TRACE",记录消息通信代码块的时间。具体步骤是4. 1在宿主机上启动通信性能模拟软件SIM。_,一共启动P个COMM模拟进程,分別编号为0到P-I。4. 2每个COMM模拟进程均读取通信性能模拟配置文件,获得通信系统配置參数, 包括结点内通信性能參数与结点间通信性能參数。4. 3每个COMM模拟进程读取ー个踪迹文件,编号为i的COMM模拟进程读取的踪迹文件为TRACEi i く (P-I)),根据踪迹文件元数据块中的信息定位各个LP对应踪迹的位置,在内存中重建各个LP的踪迹结构。4. 4所有COMM模拟进程并行执行,每个COMM模拟进程对其负责模拟的各个LP的踪迹结构进行逐块遍历,对其中的每个消息通信代码块进行模拟。具体步骤4. 4. 1定位到第一个代码块。4. 4. 2如果当前代码块的BLK_TYPE等于CCB或I0CB,则转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_L0C等于INTRA_N0DE,则基于结点内通信性能參数及MSG_ENTY和MSG_SUE字段的值,模拟得到其通信时间tmsgjntra,置mintra_ time = mintra_time+tmsg_intra ;如果当前读写记录的 MSG_L0C 等于 INTER_N0DE,则基于结点间消息通信性能參数及MSG_ENTY和MSG_SUE字段的值,模拟得到其通信时间tmsg_ inter,置 minter_time = minter_time+tmsg_inter04. 4. 3. 3如果已到本块中最后一条消息通信记录则转4. 4. 3. 4 ;否则,定位到本块中下一条消息通信记录,转4. 4. 3. 2 ;4. 4. 3. 4在该LP对应的内存踪迹结构中更新当前代码块的结点内消息通信时间MSG_IDURATI0N的值为mintra_time,结点间消息通信时间MSG_XDURATI0N的值为minter_ time ο4. 4. 4如果已到最后ー个代码块,则转4. 5 ;否则,定位到下一个代码块,转4. 4. 2。4. 5每个COMM模拟进程根据其所模拟的各个LP在内存中对应的踪迹结构,更新相应的踪迹文件,编号为i的COMM模拟进程更新的踪迹文件为TRACEi(C) く i く (P-I))。4. 6通信性能模拟软件SIMC。_退出。第五步,在宿主机上启动能耗模拟软件SIMEngy,以TRACE。,TRACE1, ... , TRACEim为输入,根据能耗模拟配置文件,对程序运行的能耗进行评估。具体步骤5. 1在宿主机上启动能耗模拟软件SIMEngy,一共启动P个ENGY模拟进程,分别编号为0至P-1。5. 2每个ENGY模拟进程读取能耗模拟配置文件。该配置文件中包括目标系统执行计算代码期间单位时间的电能消耗(记为p。PU);执行I/O代码期间单位时间的电能消耗,分为本地存储访问单位时间的电能消耗(记为PliJ,远程存储访问单位时间的电能消耗(记为PJ ;执行通信代码期间单位时间的电能消耗,分为结点内通信单位时间的电能消耗(记为Pimsg)和结点间通信单位时间的电能消耗(记为Pxmsg)。5. 3每个ENGY模拟进程读取ー个踪迹文件,编号为i的ENGY模拟进程读取的踪迹文件为TRACEi (O < i く (P-I)),根据踪迹文件元数据块中的信息定位各个LP对应踪迹的位置,在内存中重建各个LP的踪迹结构。5. 4所有ENGY模拟进程并行执行,每个ENGY模拟进程对其负责模拟的各个LP的踪迹结构进行逐块遍历,对每个代码块进行能耗评估。具体步骤5. 4. 1初始化变量Etl为O (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字段的值到变量t。。mp中,置EEi = EE^PcpuXtcomp ;如果当前代码块的BLK_TYPE等于IOCB, 则分别取其IO_LDURATION和IO_RDURATION字段的值到变量tli0和tri0中,置EEi = EE^Plio X tli0+Pri0 Xtrio ;如果当前代码块的 BLK_TYPE 等于 MCB,则分别取其 MSG_IDURATION 和 MSG_XDURATION 字段的值到变量 timsg 和 txmsg 中,置 EEi = EE^PifflsgX tifflSg+PXfflSgX tXfflSg05. 4. 2. 3如果尚未达到最后ー个单元块,定位到下一个代码块,转5. 4. 2. 2 ;否则, 将 EEi 累加到 Eq 上,即置 Eq = EfEEiJ^f 5. 4. 3。5. 4. 3如果本ENGY模拟进程的编号不等于0,则将Eq发送给编号为O的ENGY模拟进程;如果本ENGY模拟进程的编号等于0,接收来自其他所有ENGY模拟进程的E,,计算 Lt。tai = y, Ln ο
0<q<(P-\)5. 4. 4编号为O的ENGY模拟进程输出目标程序TAPP在目标系统上的能耗评估值
权利要求
1.ー种基于渐进式踪迹更新的并行程序能耗模拟评估方法,其特征在于包括以下步骤第一歩,构建宿主机,宿主机是执行模拟过程的由多个结点构成的并行计算机系统或单结点多处理器并行计算机系统,宿主机上共有P个处理器,P为正整数,各个处理器间通过网络或共享内存互连,并具有共享的磁盘存储设备,从每个处理器均可访问共享磁盘存储设备;宿主机上安装有如下软件所模拟的目标程序TAPP、模拟运行软件SIMcmp、存储性能模拟软件SIMm、通信性能模拟软件SIMe_、能耗模拟软件SIMEngy,SIMcomp, SIM10, SIMconm和 SIMEngy均是并行程序,它们均以多进程方式运行,每个进程运行在宿主机的一个处理器上; SIMcomp, SIM10, SIMcomm和SIMEngy的进程分别称为COMP模拟进程、IO模拟进程、COMM模拟进程和ENGY模拟进程,这些模拟进程均有进程号;目标程序TAPP在目标系统上运行吋,每个处理器上运行ー个进程,将由SIMe。mp、SIM10, SIMe_和SIMEngy模拟的TAPP的进程称为逻辑进程,简记为LP,每个LP都有进程号;第二歩,在宿主机上启动模拟运行软件SIM。。mp,在全部处理器上并行地模拟执行目标程序TAPP,评估TAPP各个LP的各个计算代码块的执行时间,并记录I/O操作和通信操作, 生成TAPP运行的踪迹文件TRACEtl, TRACE1, . . .,TRACEp^方法是2.1在宿主机上启动模拟运行软件SIM。。mp,共启动P个COMP模拟进程,分別编号为0到P-I ;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_N0为iblk_no,记录其块类型BLK_ TYPE为CCB,并记录其执行时间BLK_DURATI0N为t_comp ;计算代码块是指LP代码中一片连续的计算代码段;2. 3. 2. 4如果当前取的是I/O代码块,则对该块中的代码进行模拟执行;然后在本LP 对应的内存踪迹结构中増加一个新的I/O代码块,记录其块编号BLK_N0为iblk_no,记录其块类型BLK_TYPE为I0CB,并置其本地存储访问时间I0_LDURATI0N和远程存储访问10_ RDURATION为NULL,NULL表示ー种未赋值的空状态;记录本块中的读写操作记录列表10_ LIST,其中包含本块中全部读写语句的操作记录,每条记录包括下列信息该语句在本块中的序号Ι0_Ν0、读写位置I0_L0C、读写类型Ι0_ΤΥΡΕ、数据量大小I0_SUE ;I/O代码块是指 LP代码中一片连续的存储访问代码段;2. 3. 2. 5如果当前取的是消息通信代码块,则对该块中的代码进行模拟执行;然后,在本LP对应的内存踪迹结构中増加一个新的消息代码块,在其中记录其块编号BLK_N0为 iblk_no的值,记录其BLK_TYPE为MCB,置其结点内消息通信时间C0MM_IDURATI0N和结点间消息通信时间C0MM_XDURATI0N为NULL ;记录本块中的消息记录列表C0MM_LIST,其中包含本块中全部消息通信语句的记录,每条记录包括下列信息消息在本块中的序号MSG_ NO、通信位置MSG_L0C、通信对象编号MSG_ENTY、消息大小MSG_SUE ;消息通信代码块是指 LP代码中一片连续的消息通信代码段;2. 3. 2. 6如果已经到达该LP代码的末尾,则转2. 4 ;否则,置iblk_no = iblk_no+l,转ム· KJ ·ム· Zu ;2. 4每个COMP模拟进程根据其所模拟的各个LP在内存中对应的踪迹结构,创建ー个踪迹文件,编号为i的COMP模拟进程生成的踪迹文件为TRACEiJ く i く (P_l),在踪迹文件中记录本COMP模拟进程所负责模拟的全部LP的执行踪迹;每个踪迹文件为各个LP记录了 ー个沿其虚拟时间轴分布的代码块序列结构,其开始部分是ー个元数据块,其中记录了该 COMP模拟进程所模拟的LP数目、编号、各个LP对应踪迹在踪迹文件中的位置,元数据块后逐个存储各个LP的踪迹信息;2.5模拟运行软件SIMcmip退出;第三歩,在宿主机上启动存储性能模拟软件SIMiq,以TRACEwTRACEi,. . .,TRACEim为输入,对每个LP中相应的I/O操作进行模拟,获得每个I/O代码块的执行时间,并修改TRACE。, TRACE1, . . .,TRACEim,记录I/O代码块的时间,步骤是3.1在宿主机上启动存储性能模拟软件SIMiq,共启动P个IO模拟进程,分別编号为0 至 P-I ;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等于I0CB,则遍历本块中的读写操作记录列表10_ LIST,基于存储系统配置參数来评估其中各条语句的执行时间,最后更新本块的执行时间, 具体步骤3. 4. 3. 1定位到本块第一条读写记录,置变量lio_time = 0,rio_time = 0 ; 3. 4. 3. 2如果当前读写记录的I0_L0C等于LOCAL,则基于本地存储系统性能參数,结合Ι0_ΤΥΡΕ和I0_SUE字段的值,模拟得到其本地存储访问时间tio_loCal,置lio_time =lio_time+tio_local ;如果当前读写记录的I0_L0C等于REMOTE,则基于远程存储性能參数,结合Ι0_ΤΥΡΕ和I0_SUE字段的值,模拟得到其远程存储访问时间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对应的内存踪迹结构中更新当前代码块的本地存储访问时间10_ LDURATION的值为lio_time,更新远程存储访问I0_RDURATI0N的值为rio_time ;·3. 4. 4如果已到最后ー个代码块,则转3. 5 ;否则,定位到下一个代码块,转3. 4. 2 ; 3. 5每个IO模拟进程根据其所模拟的各个LP在内存中对应的踪迹结构,更新相应的踪迹文件,编号为i的IO模拟进程更新的踪迹文件为TRACEi ;·3.6存储性能模拟软件SIMm退出;第四歩,在宿主机上启动通信性能模拟软件SIMC_,以TRACE。,TRACE1, ... , TRACEim为输入,对每个LP中相应的消息通信操作进行模拟,获得每个消息通信代码段的执行时间, 并修改TRACEtl, TRACE1, ... , TRACEim,记录消息通信代码块的时间,具体步骤是·4.1在宿主机上启动通信性能模拟软件SIM。_,一共启动P个COMM模拟进程,分别编号为0到P-I ;·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或10CB,则转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_L0C等于INTRA_N0DE,则基于结点内通信性能參数及MSG_ENTY和MSG_SUE字段的值,模拟得到其通信时间tmsg_intra,置mintra_time =mintra_time+tmsg_intra ;如果当前读写记录的MSG_L0C等于INTER_N0DE,则基于结点间消息通信性能參数及MSG_ENTY和MSG_SUE字段的值,模拟得到其通信时间tmsgjnter, B minter_time = minter_time+tmsg_inter ;·4. 4. 3. 3如果已到本块中最后一条消息通信记录则转4. 4. 3. 4 ;否则,定位到本块中下一条消息通信记录,转4. 4.3.2 ;·4. 4. 3. 4在该LP对应的内存踪迹结构中更新当前代码块的结点内消息通信时间MSG_ IDURATI0N的值为mintra_time,结点间消息通信时间MSG_XDURATI0N的值为minter_ time ;·4. 4. 4如果已到最后ー个代码块,则转4. 5 ;否则,定位到下一个代码块,转4. 4. 2 ; 4. 5每个COMM模拟进程根据其所模拟的各个LP在内存中对应的踪迹结构,更新相应的踪迹文件,编号为i的COMM模拟进程更新的踪迹文件为TRACEi ;·4.6通信性能模拟软件SIMC。_退出;第五歩,在宿主机上启动能耗模拟软件SIMEngy,以TRACE。,TRACE1,. . .,TRACEim为输入, 根据能耗模拟配置文件,对程序运行的能耗进行评估,具体步骤·5.1在宿主机上启动能耗模拟软件SIMEngy,一共启动P个ENGY模拟进程,分別编号为0 至 P-I ;·5. 2每个ENGY模拟进程读取能耗模拟配置文件,该配置文件中包括目标系统执行计算代码期间单位时间的电能消耗P。pu ;执行I/O代码期间単位时间的电能消耗,分为本地存储访问单位时间的电能消耗P1W远程存储访问单位时间的电能消耗;执行通信代码期间单位时间的电能消耗,分为结点内通信単位时间的电能消耗Pimsg和结点间通信単位时间的电能消耗Pxmsg;·5. 3每个ENGY模拟进程读取ー个踪迹文件,编号为i的ENGY模拟进程读取的踪迹文件为TRACEi,根据踪迹文件元数据块中的信息定位各个LP对应踪迹的位置,在内存中重建各个LP的踪迹结构;·5. 4所有ENGY模拟进程并行执行,每个ENGY模拟进程对其负责模拟的各个LP的踪迹结构进行逐块遍历,对每个代码块进行能耗评估,具体步骤 5. 4. 1初始化变量Etl为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字段的值到变量t。。mp中,置EEi = EE^PcpuXtcomp ;如果当前代码块的BLK_TYPE等于IOCB,则分别取其10_ LDURATION和 IO_RDURATION字段的值到变量 tliQ和 tri。中,置EEi = EE^PlioX tlio+PrioX tri0 ; 如果当前代码块的BLK_TYPE等于MCB,则分别取其MSG_IDURATION和MSG XDURATION字段的值到变量 tiKg 和 txmsg 中,置 EEi = EE^PimsgXtimsJPxmsgXtxmsg ;·5. 4. 2. 3如果尚未达到最后ー个单元块,定位到下一个代码块,转5. 4. 2. 2 ;否则,置Eq = EfEEi,执行5· 4. 3 ;·5. 4. 3如果本ENGY模拟进程的编号不等于0,则将Eq发送给编号为O的ENGY模拟进程;如果本ENGY模拟进程的编号等于0,接收来自其他所有ENGY模拟进程的E,,计算EtQtal = ) ‘ Ln ;0<q<(P-l)·5. 4. 4编号为O的ENGY模拟进程输出目标程序TAPP在目标系统上的能耗评估值Et。tal ; 5. 5能耗模拟软件SIMEngy退出。
2.如权利要求1所述的基于渐进式踪迹更新的并行程序能耗模拟评估方法,其特征在于所述读写操作记录列表IO_LIST中,若是本地存储将IO_LOC记为LOCAL,远程存储将10_ LOC记为REMOTE ;若是读将Ι0_ΤΥΡΕ记为READ,写将Ι0_ΤΥΡΕ记为WRITE。
3.如权利要求1所述的基于渐进式踪迹更新的并行程序能耗模拟评估方法,其特征在于所述消息记录列表C0MM_LIST中,若是结点内通信将MSG_L0C记为INTRA_N0DE,结点间通信将 MSG LOC 记为 INTER NODE。
全文摘要
本发明公开了一种基于渐进式踪迹更新的并行程序能耗模拟评估方法,技术方案是构建安装有目标程序TAPP、模拟运行软件SIMComp、存储性能模拟软件SIMIO、通信性能模拟软件SIMComm、能耗模拟软件SIMEngy的宿主机,SIMComp评估TAPP各个逻辑进程LP的各个计算代码块的执行时间,生成TAPP运行的踪迹文件;SIMIO基于SIMComp生成的踪迹文件,对每个LP中相应的I/O操作进行模拟,获得每个I/O代码块的执行时间,形成新的踪迹文件;SIMComm基于SIMIO生成的踪迹文件,对每个LP中相应的消息通信操作进行模拟,获得每个消息通信代码块的执行时间,形成新的踪迹文件;SIMEngy基于SIMComm生成的踪迹文件,对程序运行的能耗进行评估。采用本发明实现了对并行程序运行电能消耗的高效评估,有利于并行计算系统能耗管理、优化配置及应用优化。
文档编号G06F9/455GK102567079SQ20111045098
公开日2012年7月11日 申请日期2011年12月29日 优先权日2011年12月29日
发明者刘巍, 张理论, 徐传福, 王勇献, 王正华, 车永刚, 陆平静 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1