[发明专利]一种基于超级计算机的HLA仿真程序的对象调度方法有效
申请号: | 201210370492.4 | 申请日: | 2012-09-29 |
公开(公告)号: | CN102880517A | 公开(公告)日: | 2013-01-16 |
发明(设计)人: | 刘步权;姚益平;王怀民;蒋志文;鄢来斌;曲庆军;朱敏;彭绍亮;曾亮;蔡勋;王文珂 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F9/48;G06F17/50 |
代理公司: | 国防科技大学专利服务中心 43202 | 代理人: | 郭敏 |
地址: | 410073 湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于超级计算机的HLA仿真程序的对象调度方法,目的是提供一种支持将HLA仿真程序中的各个仿真对象分发到超级计算机的众多CPU核中并行运行的方法。技术方案是先在本地RTI部件中增加对象调度器;然后基于本地RTI部件设计由主程序和回调部件组成的并行仿真程序;接着将并行仿真程序编译和连接后得到的可执行仿真程序加载到多个CPU核;每个CPU核上的仿真成员按照主程序的流程执行,由对象调度器创建隶属于各个仿真成员的仿真对象,仿真对象被调度到各个CPU核上并行执行。采用本发明可以将HLA仿真程序中的各个仿真对象分发到超级计算机的多个CPU核上并行运行,大幅度地减小了仿真的计算时间和通信时间,提高了仿真的运行效率。 | ||
搜索关键词: | 一种 基于 超级 计算机 hla 仿真 程序 对象 调度 方法 | ||
【主权项】:
1.一种基于超级计算机的HLA仿真程序的对象调度方法,其特征在于包括以下步骤:第一步,修改本地RTI部件,在本地RTI部件中增加对象调度器,对象调度器根据仿真程序的输入参数创建仿真对象,并将仿真对象返回给仿真程序;本地RTI部件中的原有部件包含7个部件:联邦管理部件、声明管理部件、所有权管理部件、对象管理部件、时间管理部件、数据分发管理部件、通信部件;第二步,基于本地RTI部件设计并行仿真程序,并行仿真程序由主程序即main程序以及回调部件组成,主程序是仿真程序运行时的入口,主程序一方面在仿真开始时将每种类型的仿真对象的相关参数发送给对象调度器,由对象调度器创建该种类型的仿真对象;另一方面在仿真过程中向本地RTI部件的原有部件发送HLA服务;回调部件是仿真程序中用来从本地RTI部件的原有部件接收回调服务的部件;第三步,将并行仿真程序进行编译和连接,得到可执行仿真程序,将可执行仿真程序加载到超级计算机的多个CPU核,方法是:3.1在超级计算机的一个计算节点上启动“中心RTI部件”,“中心RTI部件”启动后占用超级计算机的一个CPU核;3.2使用批处理命令或者操作系统提供的作业加载命令启动可执行仿真程序,将可执行仿真程序加载到超级计算机的k个CPU核中运行,这k个CPU核不含“中心RTI部件”启动后所占用的一个CPU核,k是大于0的整数,一个CPU核只运行一个进程,每个进程都是一个仿真成员;第四步,每个CPU核上的仿真成员按照主程序的流程执行,由对象调度器创建隶属于各个仿真成员的仿真对象,众多仿真对象被调度到各个CPU核上并行执行,具体步骤是:4.1每个CPU核上的仿真成员按照主程序的流程执行,方法是:主程序向本地RTI部件发送“加入联邦执行”服务,本地RTI部件收到“加入联邦执行”服务后与中心RTI部件进行通信,中心RTI部件为该主程序所属仿真成员分配一个称为“成员句柄”的唯一整数值f,f为整数且0≤f<仿真成员数,f被保存在本地RTI部件处,中心RTI部件按照仿真成员加入仿真系统的先后顺序依次分配“成员句柄”值;4.2主程序确认是否还有仿真对象未被对象调度器分发,若还有仿真对象未被分发,主程序与对象调度器进行通信,将与一种类型的仿真对象相关的四个参数“仿真对象类型t、仿真对象数n、仿真成员数k、分发方式”发送给对象调度器执行4.3步;若所有类型的仿真对象都被对象调度器分发,则转4.4步;所述t为字符串,n和k为大于0的整数;分发方式包括“发牌式”、“块式”、“文件方式”;4.3对象调度器从主程序收到与某种类型的仿真对象相关的四个参数“仿真对象类型t、仿真对象数n、仿真成员数k、分发方式”后,将n个仿真对象分发到k个仿真成员中,方法是:4.3.1若从主程序接收到的分发方式为“发牌式”,则对象调度器用仿真对象的编号s模仿真成员数k,s为整数且0≤s<n,如果余数等于仿真成员的“成员句柄”f,则对象调度器创建编号为s的仿真对象;对象调度器将“仿真对象创建完成”的消息发送给主程序,转4.2步;4.3.2若从主程序接收到的分发方式为“块式”,则对象调度器按以下方法处理:4.3.2.1设置两个整数n1、n2,其中
n2=n%k,
为取下整数,“%”为取余数;4.3.2.2如果仿真成员的“成员句柄”f<n2,则对象调度器创建编号从f×(n1+1)开始的连续n1+1个仿真对象;否则对象调度器创建编号从n2×(n1+1)+(f-n2)×n1开始的连续n1个仿真对象,对象调度器将“仿真对象创建完成”的消息发送给主程序,转4.2步;4.3.3若从主程序接收到的分发方式为“文件方式”,则对象调度器按以下方法处理:4.3.3.1对象调度器从仿真程序的当前目录下读取“对象指派文件”,“对象指派文件”由注释语句和若干个块结构组成,注释语句是自字符‘#’开始直到行尾的一串字符;块结构是用来描述一种类型的仿真对象在仿真成员中的分布情况的数据结构,一个块结构为“仿真对象类型t{第1行 第2行 第3行…}”;每行的结构为“f:s1 s2 s3...”,其中f表示某个仿真成员的“成员句柄”,s1、s2、s3、…为仿真对象的编号,该行表示与这些编号对应的仿真对象应分发到“成员句柄”为f的仿真成员;4.3.3.2对象调度器在“对象指派文件”中查找仿真对象类型为t的块结构,若没有找到,表示“对象指派文件”不正确,则报错并转第五步;若找到了仿真对象类型为t的块结构,则根据仿真成员的“成员句柄”f查找块结构中以“f:”开始的行,进行如下处理:4.3.3.2.1如果在块结构中没有找到以“f:”开始的行,则转4.2步;4.3.3.2.2如果在块结构中找到以“f:”开始的行,则从该行中提取所有仿真对象的编号s1、s2、s3、…,对象调度器创建编号为s1、s2、s3、…的仿真对象;对象调度器将“仿真对象创建完成”的消息发送给主程序,转4.2步;4.4仿真成员中的各个仿真对象开始执行,在仿真过程中调用HLA服务向本地RTI部件发送消息,并由回调部件接收来自其他本地RTI部件的消息;第五步,结束。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201210370492.4/,转载请声明来源钻瓜专利网。
- 上一篇:一组脾胃虚寒胶囊
- 下一篇:一种含腐植酸缓释性水溶肥及其制备方法