发明名称 基于社区特性的并行离散事件仿真对象分发方法
摘要 本发明公开了一种基于社区特性的并行离散事件仿真对象分发方法,目的是提出一种新型并行仿真对象分发方法,提高并行仿真在多个处理器上的运行效率。技术方案是:构造复杂系统的模型图G(V,E),提取出仿真对象及仿真对象间的事件调度关系;采用不断移除最高中心度边的方法对图G进行社区发现,将各个节点聚合到不同社区;构造带权重的社区聚合图G’(V’,E’);采用多层次K划分方法对G’(V’,E’)进行K划分;根据K划分结果进行并行仿真对象的分发,将划分的各个等份指定分发到具体的计算节点。采用本发明能根据并行仿真所使用的计算资源获得仿真对象分发结果,能有效平衡多计算节点的计算负载和通信负载,显著提高并行仿真的运行效率。
申请公布号 CN101944045B 申请公布日期 2012.11.14
申请号 CN201010510055.9 申请日期 2010.10.18
申请人 中国人民解放军国防科学技术大学 发明人 姚益平;侯波南;鄢来斌;蒋志文;刘步权;曲庆军;彭绍亮;刘刚;陈莉丽
分类号 G06F9/455(2006.01)I;G06F9/46(2006.01)I 主分类号 G06F9/455(2006.01)I
代理机构 国防科技大学专利服务中心 43202 代理人 郭敏
主权项 一种基于社区特性的并行离散事件仿真对象分发方法,其特征在于包括以下步骤: 第一步,从复杂系统中提取出仿真对象及仿真对象间的事件调度关系,构造复杂系统的模型图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)的具体步骤如下: 1.1新建一个空的无向图,用G(V,E)表示,其中V表示节点的集合,E表示边的集合,用s表示节点集合V的大小,初始为0; 1.2令i=1; 1.3若i≤m,执行1.4步;若i>m,转1.10步; 1.4对第i个仿真对象构建一个新节点Nodei,并将Nodei加入到图G(V,E)中,s=s+1; 1.5令j=1; 1.6若j≤s,执行1.7步;若j>s,转1.9步; 1.7判断仿真对象i和j之间是否存在事件调度关系,若存在事件调度关系,向图G(V,E)加入一条连接Nodei和Nodej的无向边Edgei,j; 1.8j=j+1,转1.6步; 1.9i=i+1,转1.3步; 1.10所有仿真对象及其关系都已构建完毕,得到模型图G(V,E); 第二步,根据复杂系统的社区聚合特性,采用不断移除最高中心度边的方法对图G(V,E)进行社区发现,将各个节点聚合到不同社区;采用最短路径权重SW作为边的中心度的估算值,同时定义社区发现所要移除边的数目为NumEdgesRemove,1≤NumEdgesRemove≤n,为图G(V,E)中的边增加一个数据域Removed,用于标示是否被移除,Removed为1表示已移除,Removed为0表示未移除,具体步骤如下: 2.1计算模型图G(V,E)中所有边的最短路径权重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个域:距离d,即该节点与根节点的距离,初始值为‑1;权重w,初始值为0;父节点集合list,存放该节点的父节点,初始为空;衡量节点与父节点间的关联强度的关联值dependency,初始值为0;分别用符号dx、wx、listx、dependencyx表示Nodex的距离、权重、父节点集合以及关联值,设置Nodei 的距离di=0,权重wi=1,并将Nodei加到queue中; 2.1.4判断queue是否为空,若非空,执行2.1.5步;否则转2.1.7步; 2.1.5从队列queue的头部移出一个节点,设为v,并将该节点压入堆栈 stack; 2.1.6对模型图G(V,E)中v的每一个邻居节点b,判断是否db<0,若为真,则将b加入到队列queue中,并设置db=dv+1;再判断db是否等于dv+1,若为真,则将节点b的权重增加wv,即wb=wb+wv,并将v加入到b的父节点集合listb中;转2.1.4步; 2.1.7判断stack是否为空,若非空,执行2.1.8步;否则转2.1.11步; 2.1.8从堆栈stack顶部移除一个节点,设为u; 2.1.9依次对节点u父节点集合中的每一个父节点f进行如下处理: 2.1.9.1根据节点u的关联值及节点f与u的权重比值,更新节点f的关联值dependencyf: dependencyf=dependencyf+(wf/wu)×(1.0+dependencyu); 2.1.9.2从图G(V,E)中查找连接节点f和u的边Edgef,u,更新边Edgef,u的最短路径权重SW值: SWfu=SWfu+(wf/wu)*(1.0+dependencyf); 2.1.10转2.1.7步; 2.1.11i=i+1,转2.1.2步; 2.1.12结束,得到所有边的最短路径权重SW值; 2.2不断从图G(V,E)中选择最大SW值的边,将该边的Removed设为1,标记为移除,并重新计算模型图G(V,E)中所有边的最短路径权重SW值,进行社区发现,直到移除的边数达到NumEdgesRemove,方法是: 2.2.1令ii=1; 2.2.2若ii≤NumEdgesRemove,执行2.2.3步;若ii>NumEdgesRemove,转2.3步; 2.2.3令k=1,l=1,value=0.0; 2.2.4若k≤n,转2.2.5步;若k>n,则转2.2.7步; 2.2.5判断SWk>value,如为真,则l=k,value=SWk; 2.2.6k=k+1,转2.2.2步; 2.2.7将第l边的Removed设为1,标记为移除; 2.2.8重新计算模型图中所有边的最短路径权重SW值,ii=ii+1,转2.2.2步; 2.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.4p=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.7k=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号计算节点上,相应地将等份内部的社区节点等分发到所分配的计算节点,再以社区为基本单位,将社区所包含的仿真对象都指定分发到该计算节点,同时将分发结果写入并行仿真对象分发参数文件。
地址 410073 湖南省长沙市开福区德雅路109号