基于社区特性的并行离散事件仿真对象分发方法

文档序号:6333881阅读:624来源:国知局
专利名称:基于社区特性的并行离散事件仿真对象分发方法
技术领域
本发明涉及并行离散事件仿真的仿真对象分发方法,尤其是面向并行 或集群计算机的具有社区特性的并行离散事件仿真对象在多处理器上的划分与分发方法。
背景技术
并行离散事件仿真(PDES,ParallelDiscrete Event Simulation),可 简称并行仿真,是对大规模复杂系统进行建模与仿真研究的重要方法,它通过将复杂系统 的多个组成部分——仿真对象(或仿真实体)分发到多个处理器上并行执行,获得运行加速 比,提高仿真运行效率。并行离散事件仿真采用离散事件驱动建模方式,对组成复杂系统的 各类仿真对象(Simulation Object)进行建模,仿真对象间通过事件调度实现数据通信和 交互,整个仿真系统通过并行事件处理得以推进。并行仿真采用处理器虚拟化的思想,在仿 真部署时将仿真对象实例分发到具体的物理计算节点,因此可以在不同的并行计算环境或 不同数目的计算节点上执行。并行仿真内核能够自动将不同计算节点上仿真对象间的事件 调度转换为远程消息发送,而同一计算节点上的事件调度则通过共享内存方式直接复制到 待处理事件列表,其开销要小于远程消息发送。由于并行仿真所使用的计算节点数目在其 运行之前往往是不确定的,所以需要灵活的仿真对象分发方法的支持,达到既能充分利用 多计算节点资源又能高效运行仿真的目标。由于大规模复杂系统中往往包含大量的对象,数目成千上万,对象间的交互错综 复杂,使得仿真对象的划分与分发成为影响并行仿真运行效率的重要因素。首先,由于整 个并行仿真的执行时间取决于运行时间最长的计算节点,各个计算机节点的计算负载需 均衡,即所承载的仿真对象和事件处理的数量要大致相等。现有的一些并行仿真平台,如 μ sik、SPEEDES, ROSS等,采用的仿真对象分发方法有SCATTER、BLOCK、随机分发及用户自 定义方式。SCATTER方法(也称轮循方法)按照分牌方式逐个分发,例如将10个仿真对象分 发到3个计算节点,则SCATTER的分发结果是[{0,3,6,9},{1,4,7},{2,5,8}],即将0、3、 6、9号仿真对象分发到节点0,其余依次类推。BLOCK方法是按照分块方式进行仿真对象的 分发,先将仿真对象按照编号划分成均等的块,然后进行分发。上例的BLOCK分发结果可以 是[{0,1,2}, {3,4, 5}, {6,7,8,9}]。用户自定义方式则是由仿真用户负责制定仿真对象分 发策略,需要在程序中编码指定。上述方法可统称为计算负载均衡分发策略。第二,考虑计 算节点间的通信开销(100 μ s级)远大于节点内部的通信开销(1 μ s级),相差将近100倍, 因此在尽可能计算负载均衡的基础上还需要考虑最小化节点间的通信。目前有文献将仿 真对象以及各个对象间的交互关系构建成一张图(&aph),利用数学图论中的图划分方法 (K-cut算法等)将该图进行K划分,能够将该图大致均等地划分成K份并尽可能最小化各 部分之间的连接,然后根据划分结果将仿真对象分发到K个计算节点上。但图划分是一个 目前公认的NP问题,在规模大的情况下难以求得最优解。另外,对于一些特定类型的仿真 应用,其计算和通信负载会集中在某些区域,适合采用按照时空区域的划分方法,例如交通 仿真中繁忙十字路口的计算量和通信相对较大,可按照十字路口的空间区域进行划分。此 外,动态负载平衡(Dynamic Load Balancing)方法也在并行仿真中得到广泛应用。动态负 载平衡根据系统运行时的状态信息动态维护各个计算节点上的负载,由于需要将仿真对象 在不同的计算节点间进行迁移,因此在使用时需要综合权衡迁移的开销代价与所能获得的好处,导致其使用难度较大。此类方法可称为计算_通信负载均衡分发方法。近年来,大量实证研究发现复杂系统中仿真对象间的连接关系往往不是随机分布 的,而呈现一定的社区结构(Community Structure)和组织(Organization)特性。一些仿 真对象会内聚成群体,群体内部的连接相对稠密,不同群体之间的连接则相对稀疏。这种群 体结构特性一般称为社区(Community)。相关研究表明许多类型的复杂系统(如社会系统、 电力系统、信息网络、军事集团等)中都包含社区结构,甚至可以说社区特性具有普适性。这 些社区特性在不同类型的应用中具有不同的含义,例如在社会仿真中社区可以指家庭、朋 友或某地区的人口,在生物系统仿真中可以指功能相关的结构单元,在互联网应用中可以 指相关话题的网页集合,等等。由于社区内部的连接比较密集,社区间的连接相对稀疏,对 应于仿真应用,仿真执行时社区内仿真对象间的交互也会相对频繁,社区间仿真对象的交 互较稀少。这在社会动力学等仿真中特别显著,例如在传染病微观仿真中,病毒携带者会与 其亲人、朋友接触的机会多些,导致感染概率相对较高。所谓社区发现是指运用社区发现算法挖掘出图中内在的社区结构。社区发现方法 的基本思想是根据节点的内聚性度量,递归地对网络图进行合并或分裂,把网络图分解为 嵌套的社区层次结构。目前在此领域出现了多种社区发现方法,如minimum-cut图划分方 法、模块化方法和信息流法等。虽然社区发现与图划分方法具有一定的相似性,但存在一些 主要区别(1)图划分方法试图将图划分成相等大小的部分,从社区特性的角度来看这是 不可取的,因为图中存在的社区数目和大小是不确定的。分析发现许多模型图中所包含社 区的大小呈幂率分布,其中。这意味着多数社区是小型或中型规模,但很大规模的社区也可 能存在。例如,对电影演员合作关系模型进行社区发现,社区大小(即社区内包含的仿真对 象个数)为10-200的社区共占62. 5%,最大的社区大小为28385,但数目稀少。(2)社区间的 连接并不是图划分方法要求的严格最小化,某些大的社区之间的连接可能较多。总之,由于 图划分方法并未考虑到系统中仿真对象社区内聚合交互的特性,而生硬地追求等份划分, 因此,基于社区的模型划分方法会比纯粹的图划分方法更切合实际,因而也更优越,尤其适 合具有社会特性的大规模复杂系统仿真。在复杂系统建模与仿真研究中,普适的社区特性将有利于提高复杂系统并行仿真 的运行效率,如何充分利用复杂系统的社区特性进行并行离散事件仿真对象分发是本领域 技术人员关注的重要问题。国内外尚无将社区特性运用到并行仿真对象分发的报道。技术方案本发明要解决的技术问题是如何利用大规模复杂系统的社区特性而提 出的一种新型并行仿真对象分发方法,将社区特性引入到并行仿真系统中,以社区为单位 对仿真系统中仿真对象进行聚合,并根据计算节点数目对社区聚合图进行划分,由划分结 果指导仿真对象的分发,从而降低社区内的交互开销,提高并行仿真在多个处理器上的运 行效率。本发明的具体技术方案是
第一步,从复杂系统中提取出仿真对象及仿真对象间的事件调度关系,构造复杂系统 的模型图^汉幻。模型图由节点和连接边组成,其中节点代表仿真对象,连接边代表仿真 对象间存在事件调度关系。假设复杂系统中共有《个仿真对象,仿真对象间共有《条边,用 Nodei表示模型图中对应于第i个仿真对象的节点,用及叙^表示第A条边,同时用及/#。. 表示连接节点i和j的边,其中0<i系m,0<j ^m, 0<k ^n0构建模型图的具体步骤如下1. 1新建一个空的无向图,用^汉幻表示,其中Z表示节点的集合,万表示边的集合。 用表示节点集合Z的大小,初始为0 ; 1. 2 令 i 二7 ;
1.3若/ ,执行1. 4步;若i) ,说明对所有的仿真对象处理完毕,模型图已构造完 成,转1. 10步;
1.4对第i个仿真对象构建一个新节点Afoifei,并将Afoifei加入到图G汉E)中,S^W ; 1.5令户7 ;
1.6若7·<·5,执行1.7步;若JAs,转1.9步;
1.7判断仿真对象i和J之间是否存在事件调度关系,若存在事件调度关系,向图 G(V, E)加入一条连接Afoofei和Afoofey的无向边及; 1.8 j=j+l,转 1. & 步。1.9 i=i+7,转 1.3 步。1. 10 所有仿真对象及其关系都已构建完毕,得到模型图饥E)。第二步,根据复杂系统的社区特性,对模型图G汉幻执行社区发现,获得仿真对 象间的社区结构。根据2002年Girvan和Newman发表在美国国家科学会刊第99卷12期 的论文〈〈Community structure in social and biological networks〉〉所提出的社区发 现思想,采用不断移除最高中心度(Centrality)边的方法对模型图G汉幻进行社区发 现,将各个节点聚合到不同社区。其中,采用最短路径权重5F (Shortest-path Weight) 作为边的中心度的估算值,同时定义社区发现所要移除边的数目为M fe^M7fe 0M, 1 ^NumEdgesRemove </ ,为达到较好的社区发现效果,Mtfsfe^^Tfeffloi^取值为的 整数部分。为了不破坏模型图^汉幻,并不真正将边移除,而是为图^汉幻中的边增加一 个数据域,用于标示是否被移除,TfeffiOMi/为1表示已移除,TfeffiOMi/为O表示未移 除。具体步骤如下
2.1 计算模型图中所有边的最短路径权重5F值,方法是 2.1.1 令 i二
2. 1. 2 若i系m,进行第2. 1. 3步;若i>m,转2. 1. 12步;
2. 1. 3 构建一个空的先入后出的堆栈stack和一个先入先出的队列queue, stack和 queue的每个元素均为节点,节点的数据结构包括4个域距离i/ (表示该节点与根节点的 距离,初始值为-1)、权重『(节点的权重值,初始值为0)、父节点集合(存放该节点的 父节点,初始为空)和关联值论(衡量节点与父节点间的关联强度,初始值为0)。 分别用符号dx、wx, Iistx, dependency,新、Nodex的距离、权重、父节点集合以及关联值。设 置Nodei的距离(Ii=O,权重Wi=I,并将Nodei加到queue中;
2. 1. 4判断卯we是否为空,若非空,执行2. 1. 5步;否则转2. 1. 7步; 2. 1. 5从队列queue的头部移出一个节点,设为^并将该节点压入堆栈stack ; 2. 1.6 对模型图G汉幻中^的每一个邻居节点力,判断是否式谓,若为真,则将办加 入到队列卯^ze中,并设置o^/力;再判断式是否等于<",若为真,则将节点力的权重增 加 ,即wb=wb乂,并将r加入到b的父节点集合Iistb中;转2. 1. 4步;
2. 1.7判断Siad是否为空,若非空,执行2. 1.8步;否则转2. 1. 11步; 2.1.8从堆栈^sted顶部移除一个节点,设为 ;2. 1. 9依次对节点u父节点集合中的每一个父节点/进行如下处理 2. 1. 9. 1根据节点u的关联值及节点/与《的权重比值,更新节点f的关联值
dependencyf
dependencyf= dependencyf+(wf/wJ X (1. O+dependencyJ ;
2. 1. 9. 2 从图以K Ε)中查找连接节点/和u的边及叙& ,更新边及叙& 的最短 路径权重5F值
SWfu = SWf+(wf/wJ*(l. 0+dependency); 2. 1. 10 转 2. 1. 7 步; 2. 1. 11 i=i+l,雉 2. 1. 2 步; 2.1.12结束,得到所有边的最短路径权重5F值。
2. 2不断从图以K E)中选择最大5F值的边,将该边的Removed设为1,标记为移 除,并重新计算模型图桃E)中所有边的最短路径权重5F值,进行社区发现,直到移除的 NumEdgesRemove。具体步骤如下
2.2.1令 U=I ;2.2.2若 ii NumEdgesRemo2· 2· 3 步;若 H>NumEdgesRemove, 2. 3 步;2.2.3 k=l, 1=1 ’ value=0. 0 ;2.2.4若左</ ,转2. 2. 5步;若^>/ ,则转2. 2. 7步;2.2.5判断 SiV1^vaIue,如为真,则 l=k, value=SWk ;2.2.6k=k+l ’ 铕 2. 2. 2 步;2.2.7将第7边的Removed设为1,标记为移除;2.2.8采用2. 1步的方法重新计算模型图中所有边的最短路径权重SW值,ii=ii+l,
转2. 2. 2步;
2.3 提取并输出模型图G汉幻中的社区及社区所包含的节点。由于已经连续移 除了具有最高Mm^NumEdgesRemove条边,使整个图分割成多个互不连通的子图。这些子 图就是通过社区发现结果得到的社区,用c表示所发现社区的个数,用Cb〃 p表示第β个社 区。输出模型图“K Ε)中每个节点Afoifei UKi 及其所属的社区号Coimp {0<p ^c), 第二步结束。第三步根据第二步发现的社区,构造带权重的社区聚合图C作E,)。每个 社区都是模型图^汉幻的子图,用分^^胃表示社区/7的大小,即该社区所包含的节点数 目。将社区内部节点间的连接称为社区内部连接,不同社区内节点间的连接称为社区间连 接。采用广,万。表示社区聚合图,用舱论。和^^\分别表示图^作~万。中 的节点和边,用Weight,p和Weight,pq表示节点和边的权重.。具体步骤如下
3.1 新建一个空的带权重无向图C作。^入其中广和^分别代表社区聚合 图中的社区集合和社区间边的集合。3.2 构建社区聚合图的节点及其权重,其中节点的权重为该社区的大小。具 体步骤如下
3.2.1令p=l;
3.2.2若ρ 执行 3. 2. 3 步;若转 3. 3 步;
3.2.3对应于社区 O /),新建一个节点将 iVorfe'p 加入到图(;‘(V', E')中;3.2.4转 3. 2. 2 步;
3.3构建社区聚合图的边及其权重,其中社区间边的权重为该两社区间的总连接数。具 体步骤如下
3.3.1 令左二
3. 3.2若 Κλ,执行 3. 3. 3 步;若 1Λ ,转 3. 4 步;
3. 3. 3对模型图tf尔E)中的边及叙i,查找其两个连接节点,设为彻论/;并查询该两节点所处的社区,设为Cornnp和Co.q ;
3. 3.4若Commp等同于O /^,表明Tfocfei和Tfocfej'位于同一个社区,Fo^el为社区内部的连接边,转3. 3. 7步;若Co_与Coymg不相等,
则价^为Co_和Conrnq不同社区间的连接边,执行3. 3. 5步;
3. 3. 5判断社区Coimp和Coimq在社区聚合图中对应的节点Node,p与Node,。间是否 已存在边及/沢,pq,若存在,则Weight’Pi=Weight’Pi+l SK^f 3. 3. 7 ;若不存在,则执行3. 3. 6 ; 3. 3. 6此时Afoife %与Node’ q间不存在边,向图C ^^ E')中增加一条连接Afoife ^ 与 Node,v 的边 Edge,Ρ ,并设置 Weigh t,p=l,执行 3.3.7;
3. 3. 7k=k+l ’转 3. 3. 2 步;
3.4 结束,得到社区聚合图C作E,)。第四步对社区聚合图C广)进行f划分。根据并行仿真所使用的计算机 节点数K,采用明尼苏达州大学1995年Karypis等人的技术报告《METIS: Unstructured Graph Partitioning and Sparse Matrix Ordering System》提出的基于多层次#划分的 METIS方法,将带权重的、无向社区聚合图^YC E,)进行f划分,得到f个等份,用 表示,其中0<h ^K0划分结果中的每个等份包含1至多个社区节点,可以用集合形式表示 % Parth= {Node ’ a, Node'b,…,Afoife,力其中社区节点的标号和社区的个数依据METIS 划分而定。用Weightparth表示第A等份的总权重,为该等份内所含社区的大小之和,即Wei ghtParth=VeightNode, +WeightNode,b +··· + VeightN0de,cO 同一等份内部的社区节点间的连接边 为内部边,不同等份中社区节点之间的边为等份间连接边。METIS方法能有效地使各个等份 的总权重大致均衡,并最小化所有等份间连接边的权重和,能够有效保证各个计算机节点 上的负载相对均衡,并且尽可能地降低计算节点间的通信量。第五步根据第四步社区聚合图G,(V', Ε 的f划分结果进行并行仿真对象的 分发,将划分的各个等份指定分发到具体的计算节点,并将分发结果写入并行仿真对象分 发参数文件。具体过程是先将所划分的等份作^^唯一对应到第力-7号计算节点上(计算节 点从0开始编号),相应地将等份内部的社区节点,如、彻论\、彻论\等分发到所分 配的计算节点,再以社区为基本单位,将社区所包含的仿真对象都指定分发到该计算节点, 最后将分发结果写入并行仿真对象分发参数文件。并行仿真对象分发文件的内容包括计算 节点数目A仿真对象类型、社区、社区内仿真对象以及它们分发的目标计算节点。仿真对象 分发参数文件的主体部分采用层次式的格式,按照各种仿真对象类型、各个社区、社区内部 的各个仿真对象进行组织,指定各个仿真对象所属的计算节点。并行仿真在启动时通过读 取该仿真对象分发参数文件,在多个计算节点上生成该分发方法所指定的仿真对象。本发明的核心是将社区特性引入到并行仿真系统中,基于社区发现和社区聚合图 划分实现并行离散事件仿真对象的分发,采用本发明可达到以下有益效果
1.由于充分考虑了大规模复杂系统中仿真对象间的社区特性,首先利用
社区发现方法将将联系紧密的仿真对象内聚成社区,再在社区聚合的层次上进行f等份划分,能够根据并行仿真所使用的计算资源获得仿真对象分发结果,是一种高效的并行仿真 对象分发方法;
2.由于以社区为基本的分发单元,考虑了仿真对象间事件调度的社区特 性,能够有效地平衡多计算节点的计算负载和通信负载,尤其对于大规模微观虚拟社会、复 杂网络、军事作战、社会动力学(如疾病/民意/流言传播)等仿真应用,能够显著提高并行 仿真的运行效率;
3.本方法简单易用,适用范围较广,在信息扩散、流言传播等测试应用上的 性能要优于已有的计算负载均衡分发方法和计算-通信负载均衡分发方法;
4.本方法以社区为单位对不同类型的仿真对象指定所分配的计算节点,并 行仿真在初始化阶段通过读取并行仿真对象分发参数文件在各个计算节点生成相应的仿 真对象实例。这种方式能够有效满足大规模并行仿真初始化需求。


图1是并行离散事件仿真对象分发示意图2是采用本发明进行并行离散事件仿真对象分发的示例图3是本发明的总体流程图4是本发明第一步构建模型图的流程图5是本发明第二步社区发现流程图6是本发明第三步生成带权重社区聚合图的流程图。
具体实施例方式
图1是并行离散事件仿真对象分发示意图。复杂系统中的仿真对象及仿真对象间的事 件调度关系可以用带节点和边的图进行表示,其中节点代表仿真对象,边代表两仿真对象 之间存在事件调度关系,如图1箭头上部分所示。并行仿真通过将仿真对象分发到多个处 理器计算节点上并行执行,获取并行加速比,提高仿真运行效率。由于并行仿真应用在运行 前所使用的计算节点数往往不确定,而且不同的分发方法会影响整个并行仿真的计算和通 信负载的均衡,因此需要灵活高效的仿真对象分发机制的支持。许多复杂系统具有社区结 构特性,仿真对象会按照连接的密集程度进行聚合,形成社区,如图1中圆圈部分所示。以 社区为基础,仿真对象间的连接可分为社区内部连接和社区之间的连接,分别用实线和虚 线表示。以社区为单位将仿真对象向多个计算节点进行分发,其分发结果如图1箭头下部 分所示。社区之间的连接会依据划分结果可能形成计算节点间的消息发送,而社区内部的 连接则采用计算节点内部的共享内存通信。由于现有的SCATTER、BL0CK、随机法、以及图划 分等分发方式未考虑复杂系统中普适存在的社区特性,不能充分满足大规模复杂系统并行 仿真的需求,而基于社区特性的并行仿真对象分发则是一种高效的、切合实际的方法。图2是采用本发明进行并行仿真对象分发方法的示例图。图2以一简单的模型图 为示例,描述了基于社区特性的并行仿真对象分发方法的主要过程图(a)将复杂系统中 相对独立的各个部分抽象为仿真对象,这些仿真对象以及它们之间的事件调度关系构成模 型图G汉E)。图中带数字标号的节点代表对应的仿真对象,节点间的连接边表示两仿真对 象间存在事件调度关系,例如仿真对象1分别与仿真对象3、6间存在事件调度关系。图(b) 是对模型图^汉幻进行社区发现的结果,位于不同形状块上的仿真对象分别聚合成社区, 例如仿真对象{1,3,6,7}、{8,9,10,11,12,13,14}等分别形成社区。社区的主要特征在于社区内部的连接密度往往大于社区之间的连接。图(C)将模型图^汉幻中的社区进一步 抽象成带权重的社区聚合图C作^ Α。,其中圆形节点表示对应的社区,圆形节点大小与 社区大小呈比例缩放,圆形中数字为社区编号,方括号内数字为社区节点权重,连接边上的 数字为社区间连接边的权重。例如标号为1的社区节点对应于仿真对象{8,9,10,11,12, 13,14}组成的社区;由于该社区包含7个仿真对象,因此该社区节点的权重设为7 ;同时由 于该社区分别与2、3号社区之间有1、2条社区间连接边,因此分别赋予两者之间连接边的 权重为1和2。对聚合图C作iT)进行f划分,此示例f值为3,将社区聚合图划分成 3份,如图中虚线所作的分割。社区1单独成一个等份,社区2和4、3和5分别组成其余两 等份。由于^划分算法的特征,所划分的各个等份的总权重大致相等(此例恰好都为7),而 且分割线划分的社区间连接边的总权重较小(此例为2+1+1+1+1=6)。图3是本发明的总体流程图,本发明的流程包括五步
第一步,从复杂系统中提取出仿真对象及仿真对象间的事件调度关系,构造复杂系统 的模型图^汉幻;
第二步,根据复杂系统的社区特性,对模型图^汉幻执行社区发现,获得仿真对象间 的社区结构;
第三步,根据第二步发现的社区,构造带权重的社区聚合图C作E'); 第四步,对社区聚合图C作iT)进行f划分;
第五步,根据第四步社区聚合图C作",E')的f划分结果进行并行仿真对象的分发, 将划分的各个等份指定分发到具体的计算节点,并将分发结果写入并行仿真对象分发参数 文件。图4是本发明第一步构建模型图G汉幻的流程图根据复杂系统仿真中仿真对象 以及仿真对象间的事件调度关系构建模型图,其中节点表示仿真对象,边代表两仿真对象 间存在事件调度关系。具体步骤是
1.1新建一个空的无向图,用G汉幻表示,其中Z表示节点的集合,表示边的集合。 用表示节点集合Z的大小,初始为0 ; 1. 2 令 i 二7 ;
1.3若/ ,执行1. 4步;若i) ,说明对所有的仿真对象处理完毕,模型图已构造完 成,转1. 10步;
1.4对第i个仿真对象构建一个新节点Afoifei,并将Afoifei加入到图G汉E)中,S^W ; 1.5令户7 ;
1.6若7·<·5,执行1.7步;若JAs,转1.9步;
1.7判断仿真对象i和J之间是否存在事件调度关系,若存在事件调度关系,向图 G(V, E)加入一条连接Afoofei和Afoofey的无向边及; 1.8 j=j+l,转 1. & 步。1. 9 iiV7,转 1.3 步。1. 10 所有仿真对象及其关系都已构建完毕,得到模型图饥E)。图5是本发明第二步社区发现流程图对模型图G汉幻采用不断移除最高中心度 边的社区发现方法,采用最短路径权重(SW)估算边的中心度。主要步骤是
2.1 计算模型图中所有边的最短路径权重5F值;2. 2 不断从图“K E)中选择最大5F值的边,将该边的Removed设为1,标记为移 除,并重新计算模型图饥E)中所有边的最短路径权重5F值,进行社区发现,直到移除的 也數达钱 NumEdgesRemove ;
2.3 提取并输出模型图G(V,E)中的社区及社区所包含的节点。由于已经按照预 immkNuniEdgesRemove移除具有较高中心度的边,使整个图分割成多个互不连通的子 图。这些子图就是通过社区发现结果得到的社区。其中,图(a)是计算模型图中所有边的最短路径权重SW值的过程,具体步骤是 2.1.1 令 i=1;
2. 1. 2 若i≤m,进行第2. 1. 3步;若i>m,转2. 1. 12步;
2. 1. 3 构建一个空的先入后出的堆栈stack和一个先入先出的队列queue, stack和 queue的每个元素均为节点,节点的数据结构包括4个域距离i/ (表示该节点与根节点的 距离,初始值为-1)、权重『(节点的权重值,初始值为0)、父节点集合Bsi (存放该节点的 父节点,初始为空)和关联值论(衡量节点与父节点间的关联强度,初始值为0)。 分别用符号dx、wx, Iistx, dependency,新、Nodex的距离、权重、父节点集合以及关联值。设 置Nodei的距离(Ii=O,权重Wi=I,并将Nodei加到queue中;
2. 1. 4判断卯we是否为空,若非空,执行2. 1. 5步;否则转2. 1. 7步; 2. 1. 5从队列queue的头部移出一个节点,设为^并将该节点压入堆栈stack ; 2. 1.6对模型图G汉幻中^的每一个邻居节点力,判断式谓,若为真,则将力加入到队 巩queue中,并设置式;再判断式是否等于<W,若为真,则将节点办的权重增加 , 即 ,乂,并将r加入到b的父节点集合Iistb中;转2. 1. 4步;
2. 1.7判断Siad是否为空,若非空,执行2. 1.8步;否则转2. 1. 11步; 2.1.8从堆栈^sted顶部移除一个节点,设为 ; 2. 1. 9依次对节点u父节点集合中的每一个父节点/进行如下处理 2. 1. 9. 1根据节点u的关联值及节点/与《的权重比值,更新节点f的关联值
dependencyf
dependencyf 二 dependencyf +(wf/wj X (1. O+dependencyJ
2. 1. 9. 2 从图以K Ε)中查找连接节点/和u的边及叙& ,更新边及叙& 的最短 路径权重5F值
SWfu = SWf+(wf/wJ*(l. 0+dependency);
2. 1. 10 转 2. 1. 7 步;
2. 1. 11 i=i+l,雉 2. 1. 2 步;
2.1.12结束,得到所有边的最短路径权重5F值。图(b)是第二步中第2. 2,2. 3步的过程,其中第2步的具体步骤是
2.2.1令 H=I ;
2.2.2若 ii ≤NumEdgesRemove,执行 2. 2. 3 步;若 iDNumEdgesRemove,转 2. 3 步;
2.2.3令 k=l,1=1,value=0. O ;
2. 2. 4 若 K≤n,转 2. 2. 4 步;若^>/ ,则转 2. 2. 7 步; 2. 2. 5 判断 SiV1^vaIue,如为真,则 l=k, value=SWk ; 2.2.6 左功+7,转 2. 2. 2 步;2. 2. 7将第/边的Removed设为1,标记为移除;
2.2. 8采用2. 1步的方法重新计算模型图中所有边的最短路径权重SW值,ii=ii+l, 转2. 2. 2步;
图6是本发明第三步生成带权重社区聚合图的流程图,具体步骤是 3.1 新建一个空的带权重无向图C作。^入其中广和^分别代表社区聚合 图中的社区集合和社区间边的集合。 3.2 构建社区聚合图的节点及其权重,其中节点的权重为该社区的大小。具 体步骤如下
3.2.1令p=l;
3.2.2若/)冬£,执行3.2.3步;若/))£,则转3.3步;
3.2.3对应于社区O /),新建一个节点AWe'p.^^i^tpZ&Zeo /),将AWe'p加入到图C尔。E')中;
3.2.4转 3. 2. 2 步;
3.3构建社区聚合图的边及其权重,其中社区间边的权重为该两社区间的总连接数。具 体步骤如下
3.3.1 令左二
3.3.2若 Κλ,执行 3. 3. 3 步;若 1Λ ,转 3. 4 步;
3. 3. 3对模型图tf尔E)中的边及叙i,查找其两个连接节点,设为彻论/;并查询该两节点所处的社区,设为Cornnp和Co.q ;
3. 3.4若Commp等同于O /^,表明Tfocfei和Tfocfej'位于同一个社区,Fo^el为社区内部的连接边,转3. 3. 7步;若Co_与Coymg不相等,
则价^为Co_和Conrnq不同社区间的连接边,执行3. 3. 5步;
3. 3. 5判断社区Coimp和Coimq在社区聚合图中对应的节点Node,p与Node,。间是否 已存在边及/沢,pq,若存在,则Weight’Pi=Weight’Pi+l SK^f 3. 3. 7 ;若不存在,则执行3. 3. 6 ; 3. 3. 6此时Afoife %与Node’ q间不存在边,向图C ^^ E')中增加一条连接Afoife ^ 与 Node,v 的边 Edge,Ρ ,并设置 Weigh t,p=l,执行 3.3.7;
3. 3. 7k=k+l ’转 3. 3. 2 步;
3.4 结束,得到社区聚合图f rr, E,)。
1权利要求
一种基于社区特性的并行离散事件仿真对象分发方法,其特征在于包括以下步骤第一步,从复杂系统中提取出仿真对象及仿真对象间的事件调度关系,构造复杂系统的模型图G(V,E),模型图G(V,E)由节点和连接边组成,其中节点代表仿真对象,连接边代表仿真对象间存在事件调度关系,V表示节点的集合,E表示边的集合;复杂系统中m个仿真对象间共有n条边,用Nodei表示模型图中对应于第i个仿真对象的节点,用Edgek表示第k条边,同时用Edgei,j表示连接节点i和j的边,其中0<i≤m,0<j≤m,0<k≤n;第二步,根据复杂系统的社区聚合特性,采用不断移除最高中心度边的方法对图G(V,E)进行社区发现,将各个节点聚合到不同社区;采用最短路径权重SW作为边的中心度的估算值,同时定义社区发现所要移除边的数目为NumEdgesRemove,1≤NumEdgesRemove≤n,为图G(V,E)中的边增加一个数据域Removed,用于标示是否被移除,Removed为1表示已移除,Removed为0表示未移除,具体步骤如下第1步,计算模型图G(V,E)中所有边的最短路径权重SW值;第2步,不断从图G(V,E)中选择最大SW值的边,将该边的Removed设为1,标记为移除,并重新计算模型图G(V,E)中所有边的最短路径权重SW值,进行社区发现,直到移除的边数达到NumEdgesRemove;第3步,提取并输出模型图G(V,E)中的社区及社区所包含的节点,由于已经连续移除了具有最高SW值的NumEdgesRemove条边,使整个图分割成多个互不连通的子图,这些子图就是通过社区发现结果得到的社区,用c表示所发现社区的个数,用Commp表示第p个社区,输出模型图G(V,E)中每个节点Nodei及其所属的社区号Commp,0<i≤m,0<p≤c;第三步根据第二步发现的社区,构造带权重的社区聚合图G’(V’, E’),V’和E’分别代表社区聚合图中的社区集合和社区间边的集合,节点的权重为社区的大小,边的权重为两社区间仿真对象的连接边数;用SizeCommp表示社区p的大小,即该社区所包含的节点数目,将社区内部节点间的连接称为社区内部连接,不同社区内节点间的连接称为社区间连接;用Node’p和Edge’pq分别表示社区聚合图G’(V’, E’)中的节点和边,用Weight’p和Weight’pq表示节点和边的权重;具体步骤如下3.1 新建一个空的带权重无向图G’(V’, E’);3.2 构建社区聚合图的节点及其权重,具体步骤如下3.2.1 令p=1;3.2.2 若p≤c,执行3.2.3步;若p>c,转3.3步;3.2.3 对应于社区Commp,新建一个节点Node’p,Weight’p=SizeCommp,将Node’p加入到图G’(V’, E’)中;3.2.4 p=p+1,转3.2.2步;3.3 构建社区聚合图的边及其权重,具体步骤如下3.3.1 令k=1;3.3.2 若k≤n,执行3.3.3步;若k>n,转3.4步;3.3.3 对模型图G(V,E)中的边Edgek,查找其两个连接节点,设为Nodei和Nodej;并查询该两节点所处的社区,设为Commp和Commq;3.3.4 若Commp等同于Commq,表明Nodei和Nodej位于同一个社区,Edgek为社区内部的连接边,转3.3.7步;若Commp与Commq不相等,则Edgek为Commp和Commq不同社区间的连接边,执行3.3.5步;3.3.5 判断社区Commp和Commq在社区聚合图中对应的节点Node’p与Node’q间是否已存在边Edge’pq,若存在,则Weight’pq=Weight’pq+1,执行3.3.7;若不存在,则执行3.3.6;3.3.6 此时Node’p与Node’q间不存在边,向图G’(V’, E’)中增加一条连接Node’p与Node’q的边Edge’pq,并设置Weight’pq=1,执行3.3.7;3.3.7 k=k+1,转3.3.2步;3.4 结束,得到社区聚合图G’(V’, E’);第四步采用基于多层次K划分的METIS方法对社区聚合图G’(V’, E’)进行K划分,得到K个等份,用Parth表示,其中0<h≤K;划分结果中的每个等份包含1至多个社区节点,用集合形式表示为Parth={Node’a, Node’b, … , Node’c},其中社区节点的标号和社区的个数依据METIS划分结果而定;用WeightParth表示第h等份的总权重,为该等份内所含社区的大小之和,即WeightParth=WeightNode’a+WeightNode’b+...+ WeightNode’c;同一等份内部的社区节点间的连接边为内部边,不同等份中社区节点之间的边为等份间连接边;第五步根据第四步社区聚合图G’(V’, E’)的K划分结果进行并行仿真对象的分发,将划分的各个等份指定分发到具体的计算节点,并将分发结果写入并行仿真对象分发参数文件,具体过程是先将所划分的等份Parth唯一对应到第h 1号计算节点上,相应地将等份内部的社区节点等分发到所分配的计算节点,再以社区为基本单位,将社区所包含的仿真对象都指定分发到该计算节点,同时将分发结果写入并行仿真对象分发参数文件。
2.如权利要求1所述的基于社区特性的并行离散事件仿真对象分发方法,其特征在于 所述构造复杂系统的模型图^汉幻的具体步骤如下·2. 1)新建一个空的无向图,用G汉幻表示,其中Z表示节点的集合,万表示边的集合, 用表示节点集合Z的大小,初始为0 ;·2.2)令i二·2.3)若i < ,执行 2. 4)步;若 i) ,转 2. 10)步;·2. 4) 对第i个仿真对象构建一个新节点彻论,.,并将A^fei加入到图G汉幻中, s=s+l ;·2.5)令户7;·2.6)若j· 执行 2. 7)步;若 JAs,转 2. 9)步;·2. 7) 判断仿真对象i和J之间是否存在事件调度关系,若存在事件调度关系,向图 G(V, E)加入一条连接Afoofei和Afoofey的无向边及;·2.8)j^JV7,转 2. 6)步;·2.9)iiV7,转 2. 3)步;·2.10)所有仿真对象及其关系都已构建完毕,得到模型图G汉幻。
3.如权利要求1所述的基于社区特性的并行离散事件仿真对象分发方法,其特征在于 所述计算模型图中所有边的最短路径权重5F值方法是·3. 1)令 i=l ;·3. 2)若i< ,进行第3. 3)步;若i) ,转3. 12)步;·3. 3)构建一个空的先入后出的堆栈Wad和一个先入先出的队列卯we,Wad和 卯we的每个元素均为节点,节点的数据结构包括4个域距离A初始值为-1 ;权重『,初始值为0 ;父节点集合BW,存放该节点的父节点,初始为空;衡量节点与父节点间的关联强 度的关联值cbpendency,初始值为0 ;分别用符号dx、wx, Iistx, dependency,穌Nodex的距 离、权重、父节点集合以及关联值,设置彻论,.的距离‘=0,权重Wj=I,并将Mvfei加到queue 中;;3. 4)判断是否为空,若非空,执行3. 5步;否则转3. 7步;;3. 5)从队列q_e的头部移出一个节点,设为^并将该节点压入堆栈stack ;;3.6)对模型图G汉幻中^的每一个邻居节点力,判断是否式⑶,若为真,则将力加入 到队列卯中,并设置;再判断式是否等于 若为真,则将节点办的权重增加 wv,即 ,乂,并将r加入到b的父节点集合Iistb中;转3. 4步;;3.7)判断^sted是否为空,若非空,执行3.8)步;否则转3. 11)步;;3.8)从堆栈^sted顶部移除一个节点,设为 ;;3. 9)依次对节点u父节点集合中的每一个父节点/进行如下处理;3. 9.1) 根据节点u的关联值及节点f与υ的权重比值,更新节点f的关联值 dependencyf dependencyf= dependencyf+ (wf/wj X (1. O+dependencyJ ;;3. 9. 2) 从图以K Ε)中查找连接节点/和u的边及叙& ,更新边及叙& 的最短路 径权重5F值SWfu = SWf+(wf/wJ*(l. 0+dependency);;3. 10)转 3. 7)步;;3.11) i=i+l,转?>. 2)步;;3.12)结束,得到所有边的最短路径权重5F值。
4.如权利要求1所述的基于社区特性的并行离散事件仿真对象分发方法,其特征在于 所述不断从图^汉幻中移除最大5F值的边,并重新计算模型图G汉幻中所有边的最短路 径权重5F值,进行社区发现的方法是;4. 1)令 H=I ;;4. 2)若 H NumEdgesRemove, ^A^iT 4· 3)步;若 ii>NumEdgesRemove,结束;;4.3)令左二7,1=1,value=0.O ;;4.4)若Κ/ ,转4. 5)步;若P/ ,则转 4. 7)步;;4.5)判断SWPvalue,如为真,则 /动,Value=SWk ;;4.6)1=^7,转 4. 2)步;;4. 7)将第/边的Removed设为1,标记为移除;;4.8)重新计算模型图中所有边的最短路径权重SW值,ii=ii+l,转(2)步。
5.如权利要求1所述的基于社区特性的并行离散事件仿真对象分发方法,其特征在 于所述并行仿真对象分发文件的内容包括计算节点数目K、仿真对象类型、社区、社区内仿 真对象以及它们分发的目标计算节点;仿真对象分发参数文件的主体部分采用层次式的格 式,按照各种仿真对象类型、各个社区、社区内部的各个仿真对象进行组织,指定各个仿真 对象所属的计算节点。
6.如权利要求1所述的基于社区特性的并行离散事件仿真对象分发方法,其特征在于 WdNumEdgesRemove取值为10%Xn的整数部分。
全文摘要
本发明公开了一种基于社区特性的并行离散事件仿真对象分发方法,目的是提出一种新型并行仿真对象分发方法,提高并行仿真在多个处理器上的运行效率。技术方案是构造复杂系统的模型图G(V,E),提取出仿真对象及仿真对象间的事件调度关系;采用不断移除最高中心度边的方法对图G进行社区发现,将各个节点聚合到不同社区;构造带权重的社区聚合图G’(V’,E’);采用多层次K划分方法对G’(V’,E’)进行K划分;根据K划分结果进行并行仿真对象的分发,将划分的各个等份指定分发到具体的计算节点。采用本发明能根据并行仿真所使用的计算资源获得仿真对象分发结果,能有效平衡多计算节点的计算负载和通信负载,显著提高并行仿真的运行效率。
文档编号G06F9/46GK101944045SQ20101051005
公开日2011年1月12日 申请日期2010年10月18日 优先权日2010年10月18日
发明者侯波南, 刘刚, 刘步权, 姚益平, 彭绍亮, 曲庆军, 蒋志文, 鄢来斌, 陈莉丽 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1