本发明涉及一种仿真计算领域,更具体地说,涉及并行离散事件(pdes,paralleldiscreteeventsimulation)仿真引擎的性能测试方法及存储介质。
背景技术:
1、性能的模型无关性:通常仿真的性能包括了引擎的性能和模型运算的性能,测量引擎的性能必须以某种方式的仿真运行为手段,因此必须排除模型性能的影响,即必须要设计足够简单,在不同引擎上都能实现且能够支持引擎性能测量的通用模型;
2、性能指标的客观性:不同的仿真引擎采用了不同的实现方法,包括在并行化上也有不同的实现手段,比较其性能就要剔除由于引擎设计不同而造成的个性化指标,而是筛选和定义所有引擎都必须具备的指标,并且能够代表引擎设计的基础性能;
3、性能指标的可实施性:与硬件和标准软件的benchmark不同,由于不同引擎的软件设计使得不可能有统一的测试工具,甚至统一的一套源代码也非常困难,因此测试方法必须具有在不同引擎上的可实现性,甚至具有不可作弊和不可抵赖的特点。
在并行离散事件(pdes,paralleldiscreteeventsimulation)计算领域,研究者们针对并行性能的度量和测量方法做了很多努力,并行系统的加速比定义为:对于一个给定的应用,并行算法或并行程序的执行速度相对于串行算法或串行程序的执行速度加快了多少倍。引申到离散事件仿真中,并行和串行的离散事件仿真的加速比可以类似定义,而对于引擎,则应消除算法和模型复杂度的差异。
综合国内外研究现状,对于并行离散事件仿真引擎的性能定量指标分析及测量方法还存在很大的不足,尤其是针对引擎自身的基础性能指标方面,缺乏客观科学的标准和方法。
技术实现要素:
为达此目的,本发明采用以下技术方案:
一种仿真引擎的性能测试方法,用于并行离散事件的仿真,包括如下步骤:
步骤s110:建立并生成仿真模型,并使用管理应用所需的信息配置所述仿真模型;
步骤s140:根据所选定的性能指标,启动仿真并开始测试,直至处理完成或者计时完成。
可选的,当使用同步事件调度性能作为指标对仿真引擎进行测试时,
步骤s130和步骤s140具体为:
启动仿真,仿真引擎调度开始事件,向队列中插入事件,完成后开始计时,由仿真引擎调度事件队列中的事件;
调度完所有事件,最后一个事件为结束事件,停止计时,计算调度性能。
可选的,当使用随机事件调度性能作为指标对仿真引擎进行测试时,
启动仿真,仿真引擎调度开始事件,向队列中插入随机事件,完成后开始计时,由仿真引擎调度事件队列中的事件;
可选的,当使用事件队列管理性能作为指标对仿真引擎进行测试时,
然后调度结束事件,停止计时,计算插入的事件的数量,计算队列管理性能。
第一事件的处理为向事件队列中插入1个第二事件,t第一事件 启动仿真开始计时,执行开始,第一事件向事件队列中插入第二事件并开始调度; 可选的,该方法还包括步骤s150:根据仿真测试的结果对仿真引擎进行优化。 并且,为保证计时的有效性,根据实际情况可调整事件数量,对于步骤130和步骤140,可以多次测试取平均值。 可选的,对于某个测试指标,步骤s130和步骤s140执行多遍,以获取平均结果。 可选的,测试中应该有多个仿真实体,用于产生和处理事件,实体数量应保证潜在的并行化需求。 一种存储介质,用于存储计算机可执行指令, 其中所述计算机可执行指令在被处理器执行时执行权利要求1-8中的任意一项所述的方法。 本发明不仅提供了针对引擎自身的基础性能评价指标,还具有如下优点: 1、可以在并行与串行之间兼容和切换; 2、参与性能测试的模型逻辑复杂度极低(几乎为零),排除仿真模型性能对于引擎性能测试的影响; 4、指标的测试方法可在不同仿真引擎上实现,具备可实施性。 附图说明 图1是根据本发明具体实施例的仿真引擎的性能测试方法的流程图; 图2是根据本发明对于同步事件调度效率进行测试的具体步骤; 图3是根据本发明对于随机事件调度效率进行测试的具体步骤; 图4是根据本发明对于事件队列管理效率进行测试的具体步骤; 具体实施方式 这些过程、流程、逻辑块、功能等,一般被认为是达到理想或者预期的结果的步骤或指示的自洽序列。步骤一般包括物理量的物理操纵。通常情况下,尽管不一定是,这些数量常采取电、磁、光学或量子信号等形式,它们能够被储存,转让,合并,比较,并以其他方式被计算机或数据处理系统所控制。事实证明,有时候为了方便起见,鉴于共享的原因,把这些信号称作为位、波、波形、流、值、元素、符号、字母、术语、数字等类似的名称,在计算机程序或软件中称之为代码(可能是目标代码,源代码或二进制代码)。 在本发明中,对于术语定义如下: 被仿真对象:即仿真实体,在实际的仿真中一般是事件主要的产生者和处理者。 参见图1,示出了根据本发明具体实施例的仿真引擎的性能测试方法,包括如下步骤: 步骤s140:根据所选定的性能指标,启动仿真并开始测试,直至处理完成或者计时完成; 因此,在本发明中,在步骤s120中选定指标,分别循环运行步骤s130和步骤s140,对多个性能指标进行测试,从而以事件为中心,客观的衡量仿真模型的性能。 进一步的,还可以包括步骤s150:根据仿真测试的结果对仿真引擎进行优化。 因此,能够利用该测试方法的结果根据所需要的指标,对仿真引擎进行优化。 进一步的,针对每个性能指标仿真事件队列的准备,以及仿真测试的步骤可以有不同的具体步骤,每个指标的解释以及具体的实现步骤如下。 1.同步事件调度性能测试方法 n>1,考虑在并行化的情况下,可能按照被仿真对象划分并行任务,因此1个以上的被仿真对象具有针对并行和串行执行仿真引擎测量的通用性。 注意事项:实体执行的仿真事件处理逻辑复杂度均为零。 参见图2,示出了对于同步事件调度效率进行测试的具体步骤,即对应步骤s130和s140: 调度完所有事件,最后一个事件为结束事件,停止计时,计算调度性能。为保证计时的有效性,根据实际情况可调整事件数量n;在实施时可多次测试获取平均值;下同。 注意事项:由于可能的并行化手段,实体数量等因素要满足并行化的前提条件。 2.随机事件调度性能测试方法 参见图3,示出了对于随机事件调度效率进行测试的具体步骤,即对应步骤s130和s140: 3.事件队列管理性能测试方法 参见图4,示出了对于事件队列管理效率进行测试的具体步骤,即对应步骤s130和s140: 针对典型的仿真场景,考虑n个被仿真对象,设计安排0时刻初始化事件和t时刻的结束事件,初始化事件用于给被仿真对象产生一定数量的随机事件(事件1,满足0 注意事项:实体执行的仿真事件处理逻辑复杂度为零; 因此,本发明所涉及的测量指标以及测量方法屏蔽了模型算法复杂度的影响,能够充分体现并行化对于仿真引擎效率的影响,为客观评价并行离散事件仿真引擎性能,对比不同实现方法的效果提供了量化依据。 3.被仿真对象执行的仿真事件均为空事件; 4.测试机器配置:处理器:inter(r)xeon(r)cpue5-2620v2@2.10ghz2.10ghz(2处理器,24核);内存:32.0gb;操作系统:windows2008r264位;硬盘:固态硬盘500gb 目前传统的引擎测试模型对于并行离散事件仿真引擎的性能定量指标分析及测量方法还存在很大不足,尤其是针对引擎自身的基础性能指标方面,缺乏客观科学的标准与方法。 本发明提出的四个测试指标不但解决了以上问题,且相对于传统的测试方法具备以下优势: 本发明进一步公开了一种存储介质,用于存储计算机可执行指令, 所述计算机可执行指令在被处理器执行时执行上述的方法。 如本领域技术人员将意识到的,本发明的各个方面可以被实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以采取如下形式:完全硬件实施方式、完全软件实施方式(包括固件、常驻软件、微代码等)或者在本文中通常可以都称为“电路”、“模块”或“系统”的将软件方面与硬件方面相结合的实施方式。此外,本发明的方面可以采取如下形式:在一个或多个计算机可读介质中实现的计算机程序产品,计算机可读介质具有在其上实现的计算机可读程序代码。 可以利用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是如(但不限于)电子的、磁的、光学的、电磁的、红外的或半导体系统、设备或装置,或者前述的任意适当的组合。计算机可读存储介质的更具体的示例(非穷尽列举)将包括以下各项:具有一根或多根电线的电气连接、便携式计算机软盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪速存储器)、光纤、便携式光盘只读存储器(cd-rom)、光存储装置、磁存储装置或前述的任意适当的组合。在本文件的上下文中,计算机可读存储介质可以为能够包含或存储由指令执行系统、设备或装置使用的程序或结合指令执行系统、设备或装置使用的程序的任意有形介质。 计算机可读信号介质可以包括传播的数据信号,所述传播的数据信号具有在其中如在基带中或作为载波的一部分实现的计算机可读程序代码。这样的传播的信号可以采用多种形式中的任何形式,包括但不限于:电磁的、光学的或其任何适当的组合。计算机可读信号介质可以是以下任意计算机可读介质:不是计算机可读存储介质,并且可以对由指令执行系统、设备或装置使用的或结合指令执行系统、设备或装置使用的程序进行通信、传播或传输。 可以使用包括但不限于无线、有线、光纤电缆、rf等或前述的任意适当组合的任意合适的介质来传送实现在计算机可读介质上的程序代码。 用于执行针对本发明各方面的操作的计算机程序代码可以以一种或多种编程语言的任意组合来编写,所述编程语言包括:面向对象的编程语言如java、smalltalk、c++等;以及常规过程编程语言如“c”编程语言或类似的编程语言。程序代码可以作为独立软件包完全地在用户计算机上、部分地在用户计算机上执行;部分地在用户计算机上且部分地在远程计算机上执行;或者完全地在远程计算机或服务器上执行。在后一种情况下,可以将远程计算机通过包括局域网(lan)或广域网(wan)的任意类型的网络连接至用户计算机,或者可以与外部计算机进行连接(例如通过使用因特网服务供应商的因特网)。 还可以将这些计算机程序指令存储在可以指导计算机、其它可编程数据处理设备或其它装置以特定方式运行的计算机可读介质中,使得在计算机可读介质中存储的指令产生包括实现在流程图和/或框图块或块中指定的功能/动作的指令的制品。 计算机程序指令还可以被加载至计算机、其它可编程数据处理设备或其它装置上,以使在计算机、其它可编程设备或其它装置上执行一系列可操作步骤来产生计算机实现的过程,使得在计算机或其它可编程设备上执行的指令提供用于实现在流程图和/或框图块或块中指定的功能/动作的过程。 以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。