唐丈杰等:面向多核的并行离散事件仿真服务优化 1377 建模与仿真是设计和研究复杂系统的重要工具p].随着仿真应用在规模上不断扩展、粒度上不断细化和模 型复杂度不断提高,使得仿真很难在单机平台完成.并行与分布式仿真是解决这一问题的唯一手段[4,5】.作为支 撑仿真运行的基础平台,现有的并行仿真内核可运行在多核处理器上,但其设计基础是以单核处理器为构件的 紧耦合巨型机或松耦合机群.这种将多核处理器完全等同于多个处理器的方式忽略了多核体系结构的独有特 点,难以合理利用和分配多核资源以获得最佳性能. 针对这一问题,课题组初步实现了一个基于逻辑进程范型的多线程层次化并行仿真模型【6】,但其运行细粒 度仿真应用时存在可扩展性弱、加速比低等问题.本文的主要贡献在于,针对多核处理器和并行仿真应用特点, 基于HPSK模型对时间管理和事件管理服务进行优化:(1)基于混合时间推进模式,提出EETS计算协议,可根据 仿真应用特点灵活配置为异步EETS算法以支持高效的全局同步;(2)基于并行仿真事件交互的特点,提出无锁 创建、异步提交和指针通信的事件管理算法,最小化线程之间的锁开销和减少了内存的消耗. 本文第1节介绍相关研究工作.第2节介绍并行离散事件仿真及逻辑进程范型的形式化定义,提出面向多 核的层次化仿真内核模型及相关的仿真服务.第3节针对时间管理和事件管理两种服务,分别提出相应的优化 方法.第4节是实验与分析.第5节对本文工作进行总结和展望. 1相关研究工作 物理系统可以视为一组物理进程及其之间的交互.在离散事件仿真中,通常使用一个逻辑进程(1ogical process,简称LP)来模拟一个物理进程,而物理进程之间的交互则通过在对应逻辑进程之间交换带时戳的事件 来表示.每个LP的任务就是按照时戳序进行执行事件,事件的执行会改变LP的某些状态并产生一些新的事件. 并行离散事件仿真通过将多个LP分布到不同的计算节点(或进程)并行推进以减少执行时间,使得研究更大规 模更细粒度的复杂系统成为可能.并行离散事件仿真通常也被称为并行仿真. 如何构建高效的并行仿真平台一直是过去20年仿真领域的研究热点.由于多核出现的时间尚短,大部分并 行仿真平台在设计的时候没有考虑多核特性.例如:美国喷气推进实验室开发的SPEEDES[ 、乔治亚理工学院 的GTW[ ,ROSS E ,PARSEC[ 和musik[ 。 等等;国防科学技术大学计算机学院研究的YH.SUPE[ ”,这些并行仿 真平台可以运行在多核处理器上,但其设计的目标平台是SMP和集群,大都是以多进程架构实现并行(GTW的 SUN版本基于多线程架构,但仅支持SMP).通过将仿真系统的多个逻辑进程分配到各个进程以降低执行时间, 进程之间通过共享内存,MPI或TCP等方式进行消息通信.这种处理方式将多核处理器等同于多个处理器,忽略 了多核的独有特点,存在较大的同步和通信开销.另外,多核化作为一种发展趋势,还必须以可扩展的眼光重新 审视软件设计模型.相比于多进程模型,多线程模型具有如下优势: (1) 在并行离散事件仿真中,逻辑进程之间存在大量消息交互,涉及事件的发送、撤销和回滚.同一进程内 部的线程共享地址空间,可以基于指针完成事件交互,通信效率比进程之间通信更高; (2) 随着处理器核数的增多,每个处理核心拥有的内存相对减少.当事件需要在两个进程间传递时,每个 进程都要在内存中为事件分配空间,而多线程方式则避免了这种额外的内存开销.就事件的储存而 言,多进程模型的内存消耗量至少是多线程模型的2倍; (3) 负载平衡是影响并行程序的关键因素,而实现高效的负载平衡要求仿真平台提供低开销的任务迁移 机制.在并行离散事件仿真中,迁移的基本单位是逻辑进程,涉及到状态变量、事件队列等诸多对象. 在多个进程之间迁移这些对象的开销较大,而线程之间能够通过共享地址空间,以很小的开销实现 迁移. 当然,相比于多进程模型,多线程模型需要更多的逻辑控制来保证程序的正确性,而且过多的锁操作会严重 影响程序的性能.必须针对并行离散事件仿真的特点,充分利用多线程架构带来的好处,尽可能消除锁开销,以 构建高效能的多线程并行离散事件仿真平台. 近年来,也出现了一些针对多核的工作,如苏年乐等人【 】的工作,通过将并行仿真的思想引入桌面平台以 利用多核处理器获得仿真加速.但他们同样采用多进程模型,与传统并行仿真平台没有太大区别.本课题组的陈 ,1378 Journal of Software软件学报Vo1.24,No.6,June 2013 莉丽等人『l ]提出了一种基于分布式队列的全局调度机制,从负载平衡的角度来提高多核处理器上的仿真平台 性能.但为实现高负载均衡能力可能导致逻辑进程的频繁迁移,产生大量的Cache失效.Wa ̄IVIi 4J的 HyperWarpSpeed技术利用多核并发处理事件分支,加速Monte Carlo多样本仿真.但优化的效果与应用紧密相 关,不适合通用仿真支撑环境.一个更相关的工作是由Miller[ ]完成的一一wARPED【1 6_的线程化版本. ThreadWarped采用Master—Worker模式,一个管理线程负责分配事件到多个工作线程,通过并行处理多个事件获 得加速比.为确保时序关系的正确性,工作线程需要在每轮事件执行后进行同步.如果事件粒度不均匀,总存在 处理核心空闲.而本文工作采用对称的结构,每个处理核心都要进行逻辑进程调度、事件处理等工作,并且只进 行必要的非阻塞协同. 综上所述,针对多核的并行仿真平台研究还处于探索阶段.考虑到并行仿真平台作为一种基础平台,在发掘 底层硬件特性时,需向上支持仿真应用的开发与运行.而且经过多年发展,并行仿真领域也形成了一些成熟的技 术.因此,支持原有的仿真应用开发方式和最大可能继承原有技术十分必要.基于传统的逻辑进程范型,针对多 核进行仿真服务优化研究是一种比较合适的选择. 2面向多核的并行离散事件仿真服务 2.1并行离散事件仿真及LP范型的形式化定义 并行离散事件仿真的核心问题是如何确保所有LP按照时戳顺序来处理事件.目前主要有两类时间管理协 议解决这一问题:保守协议和乐观协议.在保守协议下,只有在确保不会违反时戳序的条件下,事件才能被执行. 对于那些具有良好并行性的仿真应用,保守协议能够很好地工作.但是保守协议过于严格,限制了某些并不会违 反时戳序的事件执行,造成处理器的空闲等待从而影响效率;乐观协议则放松了执行限制,LP按当前可见的时 戳顺序执行事件.当时戳乱序确实发生后,通过回滚等方法来修复错误.相比于保守协议,乐观协议更能发掘仿 真应用潜在的并行性,但如果回滚开销过大,也会影响性能甚至得不偿失.为方便描述,下面分别给出仿真时间、 仿真事件(消息)和LP范型的形式化定义. 定义1(仿真时间).仿真时间 定义在 ×N上,即t=(f,c),f∈ ,c∈N.对r定义两种关系,<和=,分别为: 1) (Z"1,c0<(r2,eg<=>(rl<rz)v(rl I'2ACI<C2); 2) (『1,ca)=(r2,02)§(『1=rgA(Cl=c2). 仿真时间是仿真的基本概念,用于区分事件的先后顺序,其直观理解是:第1位对应物理系统的物理时间,第 2位用于区分同一物理时间下具有因果关系的事件.若没有特别指出,本文中时戳就是指仿真时间. 定义2(仿真事件).LP执行任务的基本单元.LP之间进行事件传递时被称为发消息,下文中不加区分地使用 消息和事件. ・ (P):事件的时戳,即事件执行的仿真时间; ・sign(e):表示事件的正负,反事件是在LP回滚时产生的、用于取消因错误执行所产生的事件. 定义3(逻辑进程).逻辑进程(1ogical process,简称LP)定义为七元组结构LP-=(sf,r,PE ,FEL,AntiE,seq): ・FEL:按时戳升序排列的事件链表,用于记录未处理事件; ・PEL:按时戳升序排列的事件链表,用于记录已处理事件; ・AntiE:用于缓存先于正消息到达的反消息; ・s ̄S:LP的当前状态,ts(s)表示该状态的仿真时间; ・seq ̄SEQ:按时戳升序排列的检查点序列,用于记录LP在各个历史时间点的状态和发送的事件集合,乐 观LP可利用检查点序列恢复到最近的正确状态;对于每个检查点se=(s,O) ̄seq, ∈ , 2 ; ・f.SxE->Sx2 :事件处理函数,修改LP的状态,并产生一组新的事件(也可以产生0个事件); .,: E×SEQ--*S×2exSEQ:回滚处理函数,将LP的状态恢复到输入事件的时戳之前,并把所有错序执行事 件对应的反事件发送出去. 唐文杰等:面向多核的并行离散事件仿真服务优化 1379 图1描述了LP执行的处理流程,每次从FEL中取出下一事件,根据事件类型和时戳来进行相应的处理.由 于保守LP不会遇到落伍消息和反消息,不需要对历史状态进行保存,仅仅执行第4行、第5行.需要说明的是, 如果AntiE不为空,每个发送到LP的消息都必须同AntiE中的反事件进行匹配:如果匹配成功,互相抵消;若不成 功,则加入LP的FEL中.从算法可以看出,为保证LP的顺利执行,还需要底层提供一些基础服务,如sen )发送 消息、全局同步等等. LP从FEL中取出下一事件e , if sign(e “f)=1,then if ts(e f)> 。w),then ( H“f, ,):: now,e f) Snow: “,,send(E, ̄ext) eg:= eg+{( , },P—E :=P 三+{P ,) e】se ¨ " 加 //正事件且非落伍 //落伍的正事件 06㈣k Ea i,seqb c :=r(snow,e?lext ̄seq ) Snow:= 6 ck,sen Eanf0 seq := 叼6。。 ,PEL::PEL—E(ts(e)>ts(e “f)) endif else if e—next∈PEL ,/反事件,对应正事件已被执行 EI ,i,seqbdct): , ,seq ) Snow: 6口ck,sen ) seq := eg6 k PEL: PEL—E(ts(e)>ts(e “f)) c ,else //反事件,对应正事件未被执行 AntiE:=AntiE+te ^ endif endif Fig.1 Procedure of LP’S event execution 图1 LP执行事件的处理流程 2.2并行仿真服务和面向多核的并行仿真内核模型 并行仿真内核为LP提供一系列服务,以支持LP之问的通信和协同,从而确保整个并行仿真的正确和高效. 这些服务从下到上分为3类,包括基础服务、PDES服务和优化扩展服务: (1) 基础服务:搭建并行系统的基本架构,支持一群实体(LP)进行消息交互,包括命名服务、事件管理服务; (2) 并行离散事件仿真服务:搭建并行离散事件仿真框架,包括时间管理服务、回滚服务等; (3) 优化扩展服务:针对应用特点提供性能优化,包括动态迁移服务、常用科学计算算法服务等. 为了充分利用多核CPU资源,通常采用多线程方法分担计算负载,以优化软件性能.文献[17】中提出了一种 层次化并行仿真内核模型(hierarchical parallel simulation kernel,简称HPSK),该模型针对多核集群计算节点内 外交互能力的差异,采用多进程/多线程混合的平台架构.在计算节点之问、仿真内核之间以多进程方式通信与 协同:计算节点内部,则采用多线程方式优化通信,并透明地实现多核并行化,如图2所示.这样,从系统的角度 看,HPSK同现有仿真平台完全一样:而以单个节点的角度看,HPSK将多个仿真调度处理核心集成于一个进程 内,分为两层:第1层称为进程核(ProcessKerne1),负责控制第2层所有的线程核(ThreadKerne1)的推进,包括产生、 初始化、启动、停止等功能.进程核启动后,不再占用任何计算资源,仅仅提供一些全局变量供同步使用.当所有 线程核执行结束后,CPU执行权交还进程核,由其完成善后工作;第2层由一组线程核组成,每个线程核可视为一 个简化版的仿真内核,负责LP的调度、事件的执行与发送等.每个线程核与操作系统线程一一对应,最大值可设 定为CPU的处理核数.为了支持节点间通信,一组通信逻辑进程(communication logical process,简称CLP)以代 理方式负责与对应节点的通信.CLP之所以被称为逻辑进程,是因为可以将CLP已发送事件列表和待发送事件 列表映射为LP的PEL和FEL,事件执行定义为发送到目标LP的事件.这样,CLP被纳入到LP范型的框架内, 节点问消息发送还可以采用乐观或保守方式控制.这组CLP被统一放置在0号线程核上,所有节点间消息被发 送到0号线程核转发,节点间通信从逻辑上转化为线程核问或核内通信. 1380 Journal of Software软件学报Vo1.24,No.6,June 2013 Fig.2 Architecture of hierarchical parallel simulation kernel model 图2层次化仿真内核模型体系结构 3面向多核的并行仿真服务优化 3.1时间管理服务优化 时间管理是并行离散事件仿真的核心服务.在多核时代,处理器的并行度将持续增长,但每个处理核心所拥 有的内存可能减小.采用乐观与保守混合的时间管理协议,可综合利用乐观协议并行度高、保守协议所需内存 小的优点.因此,本文采用混合时间管理协议,参考Jha等人提出的框架[ ,将时间管理服务分为全局控制机制和 局部控制机制两个部分.其中,局部控制机制负责LP调度,全局控制机制则负责全局时间同步. LP调度是指在LP之间合理地分配CPU,以保证仿真快速正确地推进.每次循环开始时,线程核需要选择一 个LP,并为其设定可推进的时间范围,然后将CPU执行权交与LP进行仿真推进.本文采用的调度算法同文献 [10】中类似.所不同的是,由于HPSK采用的异步消息发送方式(详见后文第3.2节),可能有消息存在于缓存区中, 需要清空缓存区中的消息.调度算法的可分为如下两个阶段: (1) 保守阶段:线程核中存在可推进的保守LP.从中选择下一事件具有最小时戳的保守LP,将其推进到设 定时限之后: (2) 乐观阶段:线程核中不存在可推进的保守LP选择下一事件具有最小时戳的乐观L 将其推进到设定 时限之后. 这种调度方式以LP为单位,通过最大化每次LP推进的范围,减少LP切换的次数,减小开销.需要说明的是, 调度算法中提到了两个设定时限,前者是当前保守LP可推进的时戳上限,与下文的全局时间同步紧密相关:而 后者可根据应用的具体情况设定,目前默认为线程核中其他LP的最小下一事件时戳. 全局时间同步的具体工作是计算所有逻辑进程的未来可能处理事件的最小时戳,这里记为(EIT).对于保守 LP来说,该值作为LBTS使用,定义了目前可安全执行(不会导致回滚)事件的时戳上限;而对于乐观LP而言,该 值作为GVT使用,是提交事件,完成内存释放和I/O交互的时戳下限.计算EIT时,可以选用已有LBTS栅栏算法 和GVT算法[】9_ 】.但是无论哪种算法,都需要参与仿真的进程提交其最小发送时戳(EETS).在多进程仿真内核 模型中,每个进程内部只有一个调度中心,确定EETS十分简单.但HPSK中存在多个调度中心,如何在不干扰线 程核正常推进的前提下计算EETS值相对复杂.从表面上看,通过移植基于共享内存模型的GVT算’法【 】能够解 决这一问题.算法通过一个全局变量GVTFlag来控制同步,由各个处理器异步地检测GVTFlag状态并参与同步 唐文杰等:面向多核的并行离散事件仿真服务优化 1381 值计算.但算法是面向纯粹乐观模式的,不支持混合时间推进模式;而且为了最优化仿真效率,通常要求在不同 时机发起全局时间同步计算,而单个全局变量难以满足不同的同步需求;第三,算法没有考虑到节点间通信对全 局同步值的影响.针对这些问题,本文提出了一种计算协议,可被灵活配置成EETS算法,支持混合状态的线程核, 且能在不阻塞线程核正常推进的情况下计算EETS,如图3所示. 变量定义 tTTSi=min{ts(e)le ̄TKFEL 或e ̄EB ,:线程核i的线程时戳,用于记录当前线程核中事件时戳的最小值; TKFEL是线程核上所有LP的FEL集合,EB是缓存区(包括事件和反事件) tOETSi:线程核i的局部变量,用于记录所有发送到计算态线程核事件的时戳最小值 tEETS :线程核i的最早发送事件时戳 EE :算法计算得到的进程核最早发送事件时戳 EETS(wt):墙钟时间为wt,通过系统快照得到的最早发送事件时戳(真实的EETS) 线程核的计算协议 1.如果线程核i需要计算EETS,提交tEETS ̄=min{t ,tOETSi},更新tOETSi=SimTime::MaxTime; 2.当线程核i发送事件e时,如果目标线程核,已经提交了tEETSi且ts(e)<tOETSf,则更新tOETSi=ts(e); 几 3.最后一个提交tEETS ̄的线程核i负责计算EE ,EEz min{tEETS }; 4.如果存在多个进程进行仿真,由0号线程核最后提交tEETSo. Fig.3 Protocol of EETS computation ■ 口 口 图3 EETS计算协议 只要保证进程中的所有线程核都提交了,tEETS就能得到可接受的EETS值.协议为EETS计算提供了一个 ●..■ ;■ I 灵活的框架,使得各个线程核可以根据实时需求合理地选择参与EETS计算的时机.假设线程核在墙钟时间 wt】~wt2之间依次提交tEETS,并由最后提交的线程核负责统计最终的进程EE 值,EE 与真实的EETS的 关系可由定理1和定理2得出.线程核提交tEETS的墙钟时问构成一个截断,如图4所示.截断之前为预备状态, 截断之后为计算状态.因此,可以将事件的发送接收方状态分为4类:E】:预备到计算;E2:预备到预备;E3:计算到预 备; :计算到计算. ThmadKemel3一  ̄eadKernel2 TbamadKemeI1.. ThreadKernel0一 Wal1 Clock Fig.4 Four types of events 图4 4种不同事件类型 定理1.如果所有线程核都参与了EETS计算,而且在计算过程中没有收到来自其他进程的消息,那么,按基 本算法规则1~规则3计算得到的EETS值,满足EETS(wt1)≤雎 < ̄EETS(wtz). 证明: (1)首先证明EE  ̄EETS(<wt2) 假设e1∈E1是满足ts(eO=minf{tOETS ̄)的事件 是满足f瞬那么EE =min{ts(e1),tTrsj}. minf{fTTSi)的线程核, (1.1)如果ts(e1)< ̄tTTSj,往证存在后,使得ts(e1) ̄t<TTSk(wt2); 若不然,则存在e2∈ ,满足ts(e1)> (P2). 1382 Journal of Software软件学报Vo1.24,No.6,June 2013 可以分为两种情况分析: 情况I.e2有一个祖先事件e3eE1,ts(e3)< ( 2).根据e1的定义,ts(e1)≤ ( 3).所以ts(e1)≤ ( 2),与 ts(e1)> (P2)矛盾; 情况I1.P2不存在属于E1的祖先事件口3,则必有一个祖先事件e4,e4∈TKFEL7或e4∈EB;g.所以 ts(e4)<ts(e2),根据tTTSk的定义,有f 有ts(e1)≤ (P4)< ( 2),矛盾. 所以,如果ts(e1) ̄tTTSj,存在七,满足ts(e1) ̄tTTSg(wt2); ≤f ≤ ( 4).那么根据情况(1.1)的假设, (1.2)如果ts(e1)>trrsj,往证存在 ,使得tTTSj< ̄tTTSk(w ). ・如果tTTSj< ̄tTTSj(wt2),结论显然成立; ・若tTTSj>tTTSy(wt2),则存在事件e5eElu ,满足ts(e5) ̄trrSj,在线程核.,提交tEETSj之后收到: 如果e5eEl,则ts(e1)≤如( 5) ̄tTTSj,和ts(eI)>tTTSj矛盾; 如果e5∈目,同样可分为两种情况分析: 情况I.P5有一个祖先事件e6eE1,ts(e1)≤ ( 6)≤ (P5)< ̄tTTSj,和ts(e1)>f刀 矛盾; 情况II.e5不存在属于E1的祖先事件,则必有一个祖先事件e7,e7∈TKFEffig或e7∈船 , 所以ts(e7)<ts(es).根据f刀 的定义,有tTTSj< ̄ts(e7)< (P5),和 (。5)< ̄tTTSy矛盾. 因此,如果ts(e1)>f Z ,存在Jj},使得tTTSj< ̄tTTSk(wt2). 综合情况(1.1)和情况(1.2) EE乃 mini{tEETSi}=minf{min{t刀 ,tOETSi}}< ̄mini{tEETSk(wt2)} ̄EETS(wt2). (2)然后证明EETS(wt1)≤朋 根据定义,显然有,对于任意i,EETS(wt1)< ̄tTTSf. 取前文定义的 l,如果产生el的墙钟时间大于Wtl,必有EETS(wt1)< (P1);如果产生el的墙钟时间小于wt1, 但因为发送e1的墙钟时间大于wt1,所以el的父亲事件e8在wtl时正在执行(即未完成). 所以,EETS(wt1) ̄ts(es)<ts(e1)=minf{tOETSi},有EETS(wt1)≤皿 . 综上所述,EETS(wt1)≤雎  ̄EETS(<wt2). 口 如果在计算EETS的过程中收到了来自其他进程的远程消息,设 在这类事件中具有最小时戳,如果 (e EETS(wt1),那么定理1依然成立.而如果ts(e")< ̄EETS(wt1),则有: 定理2.如果所有线程核都参与了EETS计算,且 (P ≤衄z wf1),那么按基本算法规则1~规则4计算得 到的EETS值,满足 (P,)≤EE  ̄EETS(wt2). 证明:根据e 的定义,又因为ts(e')< ̄EETS(wt1),显然有ts(e )≤船 的TKFEL中.不妨设dest(e )=,,那么: ・如果被转发,则ereE】u : ・和ts(e )< ̄EETS(wt2). 按照计算协议4,由线程核0最后提交tEETS,此时墙钟为wt2.e 或被相应的CLP进行转发,或被缓存在CLP 情况I.ereEt,根据规则2,有EETS ̄g≤ r),所以 (P 情况II.ere : 一g,那么ts(e')=EErS.g ̄EETS(wtz); ・若e 已执行,f ≥ (P ,所以 ≤EE g; 一若e 未执行,t刀 =ts(e5,同样有 (P ≤船 ; 所以,ts(e')=EE 2< ̄EETS(wt2). ・如果缓存在TKFEL中,按e 定义,有tTTSo=ts(e ̄). 所以,ts(e')=EE 综上所述, (P ≤E EETS(wt2).  ̄EETS(wt<2). 被限定在一个合理的范围内.考虑到EE 被用来计算 且 (P ≥ 口 规 根据定理1和定理2,皿 则4是充要的.计算协议定义了一个灵活的框架,用户可以根据仿真应用特点指定各个线程核参与EETS计算, 唐文杰等:面向多核的并行离散事件仿真服务优化 1383 以配置需要的全局同步算法,如图5所示.如果仿真应用乐观执行的风险较大,线程核可以在进入乐观模式后马 上提交tEETS; ̄tl果仿真应用乐观执行的风险较小,则让线程核的乐观推进到一定时戳上限后提交tEETS.函数 NeedUpdateEETSO为用户提供了一个可配置的接口,用于判断线程核是否需要提交tEETS.但由于HPSK采用的 是以LP为单位的调度策略,两次调用NeedUpdateEETSO的间隔可能会很长,从而推迟EETS计算并延缓 计 算.线程核发送事件后,当检测到目标线程核已提交后,便可立刻参与EETS计算.但如果线程核长期不发送消息, 也就无法检测是否可以提交tEETS,这时就需要NeedUpdateEETSO来协助.两种检测机制相互配合,从不同粒度 上控制线程核参与EETS计算,以实现高效的全局同步. 进程核变量(所有线程可见): intEETSlag;f 标识是否正在进行EETS计算 / SimTimetEETS[NUM_THREAD]; 线程核提交的EETS / SimTime EETS; 最终计算的EETS*/ 发送事件e后,与EETS计算相关的代码 if(ChkTargettEETSlag()f=true&&tEETSlag=falfse) t0ETS:=min(tOETS,ts(e)); if(TKmode=true&&immediate=true) tEETsxthread id、:=min(toETS,tTTS); 线程核变量: SieTirmetOETS; SimTimetTTS; bool tEETSlag;f 标识线程核是否正进行EETS计算 / / 检查目标线程核的tEETSlag是否为真 /f /牛且线程核本身尚未提交tEETS计算+/ 线程核已进入乐观模式且需要立刻更新EETS・/ tEETSlag:f=true,EET ng: EET ng一1 endif endif 线程核推进主程序中的EETS计算代码 while(Simulation is not over)do if(NeedUpdateEETSO=true) ,幸线程核判断是否需要发起EIT计算 / EETSlag:f=EETSflag-1; tEETS[thread ia]:=min(tOETS,tTTS); tEETSflag:-true; endif if(EETSlag=O)f /+最后提交tEETS的线程核负责计算进程EETS,并开始节点间规约算法 / EETS:=min(tEETS[NUM_THREAD]); EETSflag: NUM THREAD; endif endwhile Fig.5 Pseudo code of EETS algorithm 图5 EETS算法伪代码 3.2事件管理服务优化 事件管理服务属于基础服务,主要为仿真系统提供事件创建、传递和提交等服务.在并行离散事件仿真中, LP之间通常存在大量的事件交互,且每个事件都要经历创建、传递和提交这一过程.事件管理服务是否高效, 对整个仿真平台的性能有重要影响. 事件创建和提交是一组对偶操作,分别对应于内存的new和delete操作.虽然存在支持多线程应用的通用 内存分配器[ ,但由于HPSK独特的系统架构和应用特点,对事件分配回收机制进行针对性设计有助于获得最 佳性ti: ・通用内存分配器则需要复杂的机制来支持线程数目动态变化的应用.而在HPSK中,仿真运行后线程数 目保持固定: ・通用内存分配器希望同时最小化new和delete的延迟.而在HPSK中,事件创建后需要尽快返回地址指 针,实时性要求高;而事件提交的实时性要求相对较低; ・相比于事件的数目,事件类型的数目很小: ・线程核内部和线程核之间的事件由不同的线程执行,通过物理上分隔内存可以减少cache的假共享 冲突. l384 Journal of Software软件学报Vo1.24,No.6,June 2013 针对这些特点,本文设计了一种具有线程局部性的双列多级栈结构的事件管理器,采用一种无锁创建、异 步提交的机制来解耦和线程之间的关系,以实现高效的事件服务.如图6所示,每个线程核预先分配两个私有的 事件管理堆,分别用于管理线程核内部和线程核之间两种类型事件.每个事件管理堆由若干个栈构成,每个事件 栈保存一组指向相同大小内存块的事件指针,内存块在物理上是连续的.事件的创建和回收都由源LP所在线程 核完成.当LP需要创建事件时,线程核首先检查事件的目的地,确定事件管理堆;然后根据事件的大小查找对应 的事件栈,弹出栈顶指针,获得事件.由于事件管理堆是线程局部的,这一过程是无锁的.当需要提交事件时,线程 核将事件发送到源LP所在线程核的事件回收站中,由线程核定时的从事件回收站中读取并将内存归还到原来 的事件管理堆中.这一过程可参照下文提到于事件的传递方式实现. 『1 Fig.6 Structure of event allocator 图6事件分配器结构 HPSK中存在3种类型通信,线程核内部、线程核之间与进程之间.线程核内部通信十分简单,直接将消息 插入目标LP的未来事件队YtJ(FEL) ̄即可.进程之间通信等于两次线程核间通信加上一次网络通信,但多核处 理器不能改善网络通信.因此,本文主要针对线程核之间通信进行优化.由于进程内部的所有线程能够共享地址 空间,可以利用指针进行事件传递.这将显著地提高通信效率,并减少内存的消耗.然而在仿真执行过程中,各个 线程并行推进,同步通信会造成线程的互相干扰,从而极大地影响仿真效率.本文提出了一种事件缓存机制支持 基于指针的异步通信,并采用环式队列结构缓存事件,分离事件发送和接收操作,实现线程核之间的高速通信. 图7展示了两个线程核之间事件传递的整个过程.当线程核i需要向线程核,发送事件,它不是直接将事件 插入目标LP的FEL中,而是将事件指针存入事件缓存区中;同样,如果线程核i向线程核,发送反事件,它将事 件指针缓存在反事件缓存区中.由于不存在网络通信延迟,事件必然先于反事件存入缓存区.线程核,在每次调 度循环开始时将两个缓存区的事件指针读入.正事件可直接插入目标LP的FEL中;对于反事件,线程核,可根 据下面两种情况做出相应处理: (1)如果事件指针存在于目标LP的FEL中,即事件已收到但未执行,直接从FEL中删除事件指针即可; (2)如果事件指针存在于目标LP的PEL中,即该事件已被执行,需要对LP进行回滚操作,从而使系统恢 复到正确的状态. 在读入事件时(正或反),线程核,可能会进行回滚,导致长时间占有缓存区,阻塞其他线程核发送事件.因此, 本文采用一种环式队列构建缓存区,如图7中圆形内部所示.两个队列轮流作为可写入队列供发送线程核使用. 当线程核i发送事件时,首先获取可写入队列的序号,插入事件指针.当线程核,读入事件时,获取并更改可写入 .队列的序号,然后读取原可操作队列的事件,执行相应的操作.线程核i和.,通过读写锁控制对可写入队列序号的 唐文杰等:面向多核的并行离散事件仿真服务优化 1385 访问 ◇. ... Fig.7 Process of event transfer between ThreadKernels 图7线程核之间的事件传递过程 4实验分析 4.1硬件环境 ̄l:lPhold模型 并行仿真内核经过服务优化后,能否获得性能上的提升以及能否获得可扩展的提升,是本文所关注的问题. 测试平台是一个两路四核的服务器,CPU为2.53GHz QuadCore Xeon处理器,内存8G,操作系统为Redhat Server 3.1,内核版本2.6.18,gcc版本为4.1.2. 测试用例选择phold模型.Phlod是离散事件仿真领域中经典的benchmark,无论在理论上【2 】还是实践 中[8-10,13],都经常作为仿真内核的标准测试用例使用.其基本描述是:仿真系统由Ⅳ个LP组成,这些个LP被平均 的分配到所有的线程核上.初始化时,每个LP产生 (事件密度)个事件,事件目标按一定规则随机选定.在仿真过 程中,各个LP接收来自其他或自身LP的消息事件,在完成一定计算任务后产生一个新事件,并将事件发送到某 个随机选择的目标(可能是自己).事件局部率用来控制线程核内通信和线程核间通信的比例.新产生事件的时 戳等于所执行事件的当前时戳加上随机确定的时间增量.该模型可视为对离散事件仿真系统的一个抽象表示, 可通过设定不同参数模拟各种特征的仿真应用. 4.2-性能评估 LP数目(NLP)、前瞻值(1ookahead) ̄l事件局部率(1ocality)是描述仿真应用特征的重要参数.NLP可视为仿 真规模的度量;前瞻值定义为某个LP影响其他LP的最小仿真时间间隔,可用于衡量LP在时间域上的相关性; 事件局部率则用于衡量LP在空间域上的相关性.下文将从上述3个参数入手,深入分析优化效果. 实验1.可扩展性分析. 仿真内核能否随着处理器核数和逻辑进程数目的增加,提供可持续的性能增长是衡量服务优化质量的重 要指标.图8展示了10 000个LP、40 000个初始事件在不同的事件局部率和前瞻值下,使用不同处理器核数所 获得加速比.由于使用单个处理核心时消除了核间通信和同步,无法准确刻画应用和平台特征,这里采用2个处 理核心性能的一半作为比较标准.可以看出,服务优化的加速效果十分明显,加速效率在60%以上.尤其在事件局 部率达到50%时,可获得接近线性的加速比.当事件局部率偏低时,通信开销是影响整体性能的主要因素,而处理 器核数的增加难以缓解通信开销,导致加速比相对较低.图9展示了不同LP数目下,仿真内核处理单个事件所需 的平均时间.在不同的事件局部率下,虽然LP数目按指数增长,但事件执行时间可维持基本平衡r相同条件下扰 唐文杰等:面向多核的并行离散事件仿真服务优化 l387 争仟局鄙率'0% 事件局部率=25% 50一—— —————一一————————一—— 莲 o} _I 世 一HPSK 1 善3一 』 誓40},s3屋曾 墨3芒懈 0}I musik IJ i 基 I是 200 11 1 11_l I1l {』{ 一 ∞ 如 加:暮22 m 0 l O l』 耄l怖o[。l J_1 1_ L 一ⅢL 【【i] 1一 l 至l懈o_1 I I I.0.01 0.1 1 一 l __— _l J_ IJⅡ_I l0 局一_1。● lJ 一_ 肿砌 __- 事件局部率=75% 迹 40 f J -百HPSmusiK Jk I30} J 襄2里 0} 1 薹10} J 怖。L Jl_J[L- 一J 0.01 0.1 1 10 Lookahead Fig.1 0 Performance comparison of HPSK and musik(N=1 0000,R=4) 图10 HSK和musik的性能比较(N=IO000,R=4) 事件局部率=0% 事件局部率=25% 7_l_一 一一————一] 世 赫 怖 6 lookahead=O’ ……""V""lOOgatTeaa=I3 : 星 厘 苫 蓉 捆每 1 L…◆-_lookahead=1 L-' ̄'-lookahead=l 慕 一]J 0 I 5 10 15 事件密度R 事件密度 Fig.1 1 Execution time per event under different event population 图11 不同事件密度下事件执行时间 5结束语 随着多核技术的不断进步,可执行的核心数目越来越多,将彻底改变高性能计算机的发展方向.就并行离散 事件仿真领域而言,面临应用需求扩张和底层硬件变革的双向压力,发展适应多核的并行仿真技术是一种迫切 的现实需求.虽然现有并行仿真平台能够不加修改地运行在多核处理器上,但由于对进程内并发性以及多核体 系结构发展的忽视,限制了性能进一步提升的空间.本文提出了一种层次化并行仿真内核,以多线程架构进行仿 真调度和事件执行.以此为基础,重点优化了时间管理服务和事件管理服务,从逻辑正确性和效能上对仿真内核 提供有力支持.实验表明,通过服务优化的仿真内核能够在多核平台上获得很好的加速效果,且性能明显优于 musik平台. 异构多核是多核技术发展的主要方向,如何充分考虑处理核心的多样性,最大化处理器的整体效能 将是我 1388 Journal of Software软件学报Vo1.24,No.6,June 2013 们下~步工作的重点 References" [1】 Asanovic K,Bodik R,Catanzaro B,Gebis J,Husbands P,Keutzer K,Patterson D,Plishker W,Shalf J,Williams S,Yelick K.The landscape ofparallel computing research:A view from Berkeley.Berkeley:University of California,2006. [2] Akhter S,Roberts J.Multi—Core Programming:Increasing Performance through Software Multi-threading.Intel Press,2006. [3]Law AM,Kelton DW.Simulation Modelling and Analysis.McGraw—Hill Education,2000. 【4] Fujimoto RM.Parallel and Distributed Simulation Systems.New York:John Wiley&Sons Inc.,2000. (5】 Korniss G,Novotny MA,Guclu H,Toroczkai z,Rikvold PA.Suppressing roughness of virtual times in parallel discrete—event simulations.Science,2003,299:677—679.[doi:10.1126/science.1079382】 [6】 Steinman JS.Speedes:A uniifed approach to parallel simulation.In:Proc.of the 6th Workshop on Parallel and Distributed Simulation.1992.75-83. [7]Das S,Fujimoto R,Panesar K,Allison D,Hybinette M.Gtw:A time warp system for shared memory multiprocessors.In:Proc.of the 26th Conf.on Winter Simulation.San Diego:IEEE,I994.I332-1339.[doi:lO.I 109/WSC.1994.717527】 [8】 Carothers CD,Bauer D,Pearce S.Ross:A high-performance,low memory,modular time warp system.Journal of Parallel and Distributed Computing,2002,62:1648—1669.【doi:10.1016/S0743-7315(02)00004—7] 【9] Bagrodia R,Meyer R,Takai M,Chen YA,Zeng X,Martin J,Song HY.Parsec:A parallel simulation environment for complex systems.IEEE Computer,1998,31:77—85_[doi:10.1109/2.722293】 [10】Perumalla K. sik——A micro—kernel for paraIIel/distributed simulation systems.In:Proc.of the 19th Workshop on Principles of Advanced and Distributed Simulation.2005.59—68.[doi:1 0.1 1 09/PADS.2005.1】 [1 1】 Yao YP,Zhang YX.Solution for analytic simulation based on parallel processing.Journal of System Simulation,2008,20(24): 6617-6621(in Chinese with English abstract). [12】 Su NL,Wu XY,Li Q,Wang wP,Zhu YF.Optimistic parallel discrete event simulation based on multi—core platform.Journal of System Simulation,2010,22(4):858—863(in Chinese with English abstract). [13】 Chen LL,Liu YS,Yao YP,Peng SL,Wu LD.A well-balanced time warp system on multi—core environments.In:Proc.of the 25th ACM/IEEE/SCSWorkshop onPrinciples ofAdvanced andDistributed Simulation(PADS 2011、.20l1.1-9. 【14] Steinman JS.The WarplV simulation kerne1.In:Proc.ofthe 2005 Principles ofAdvanced and Distributed Simulation Conf.2005. [15】Miller RJ.Optimistic parallel discrete event simulation on a Beowulf cluster of multi-core machines[MS.Thesis].Cicinati University,2010. [16】Martin DE,McBrayer TJ,Wilsey PA.Warped:A time warp simulation kernel for analysis and application development.In:Proc. ofthe 29th Hawaii Int’1 Conf.on System Sciences,Vo1.1.Washington:IEEE Computer Society,1996.383-386-[doi:10.1109/ HICSS.1996.495485】 [17]Tang WJ,Yao YP.HPSK:A hierarchical parallel simulation kernel for multicore platform.In:Proc.ofthe 9th IEEE Int’1 Symp.on Parallel andDistributedProcessingwithApplications(ISPA 2011).2011.19-24l[doi:10.1109/ISPA.2011.42】 I1 8】 Jha V,Bagrodia RL.A unified framework for conservative and optimistic distributed simulation.In:Proc.of the Workshop on Parallel and Distributed Simulation.1994.12—19[doi:10.1 145/182478.182480】 【19】 Samadi B.Distributed simulation,algorithms and performance analysis[Ph.D.Thesis].Los Angels:University of California,Los Angels,1985. [20】 Mattern F.Efifeient algorithms for distributed snapshots and global virtual time approximation.Journal of Parallel and Distributed Computing,1993,18(4):423-434.[doi:10.1006/jpdc.1993.1075] 【2 1】 Fujimoto RM,Hybinette M,Computing Global virtual time in shared-memory multiprocessors.ACM Trans.on Modeling and Computer Simulation,1997,7(4):425-446.【doi:10.1 145/268403.268404】 [22】Perumalla K,Fujimoto R.Virtual time synchronization over unreliable network transport.In:Proc.of the Workshop on Parallel and Distributed Simulation.2001.129-136.[doi:10.1109/PADS.2001.924629】 唐文杰等:面向多核的并行离散事件仿真服务优化 1389 【23] Berger ED,McKinley KS,Blumofe RD,Wilson PR.Hoard:A scalable memory allocator for multithreaded applications.In:Proc. ofthe 9th lnt’I Conf.on Architectural Support orf Programming Languages and Operating Systems.2000.I 17—128.【doi:10.1 145/ 356989.357000】 ructing optimistic simulation algorithms for the discrete event system speeiicatifon.ACM Trans.on Modeling 【24】 Nutaro J.On constand Computer Simulation,2008,19(1):1—21.[d0i:10.I 145/1456645.1456646】 附中文参考文献: [1】】姚益平,张颖星.基于并行处理的分析仿真解决方案.系统仿真学报,2008,20(24):6617—6621. 【12】苏年乐,李群,王维平,朱…凡.基于多核平台的乐观并行离散事件仿真.系统仿真学报,2010,22(4):858-863 卫 主唐E-文要ma研杰il:究(t1an9领8g4域w一e为 ̄),并ie男@行,n湖离ud南散t.e长事du沙件.cn人仿 ,真博. 士生, 圈 姚E师・,m益主a平要il:(研y1p9究y6a3领o一@域)n,u为男dt,并.博ed行u士.与c,n教 分授布,仿博真士. 生导