仿真模型的运行控制方法、装置及电子设备
文献发布时间:2023-06-19 11:16:08
技术领域
本申请涉及仿真技术领域,尤其涉及一种仿真模型的运行控制方法、装置及电子设备。
背景技术
不同位宽的建模系统所创建出的仿真模型具有不同的位宽,如16位、32位甚至64位的基于FMI(Functional Mock-up Interface)协议封装后的仿真模型FMU(FunctionalMock-Up Unit)等。
在仿真项目中,可能包含同时存在多种位宽的仿真模型的情况,为了实现不同位宽的仿真模型的联合仿真运算,可能会存在不同位宽的仿真模型之间的数据交互可能会存在交互效率较低的情况,由此导致仿真效率较低。
因此,亟需一种在实现共存于同一仿真项目中的不同位宽参数的仿真模型的仿真运算时,提高仿真效率的技术方案。
发明内容
有鉴于此,本申请提供一种仿真模型的运行控制方法、装置及电子设备,如下:
一种仿真模型的运行控制方法,包括:
获得待仿真运算的仿真项目,所述仿真项目中包含有多个仿真模型;
在所述仿真项目中包含有不同位宽参数的仿真模型的情况下,启动多个仿真进程,以使得每个所述仿真进程分别对其各自对应的仿真模型进行仿真运算,以得到所述仿真项目的项目仿真结果;
其中,具有不同位宽参数的仿真模型分别对应于不同的仿真进程,且所述仿真进程之间通过内存区域进行仿真数据的传输,所述仿真数据至少包含所述仿真模型进行仿真运算所得到的模型仿真结果。
上述方法,优选的,所述内存区域用于缓存任意所述仿真进程在仿真运算过程中对应的仿真数据,以使得其他任意所述仿真进程在所述内存区域中读取所述仿真数据。
上述方法,优选的,所述仿真进程在所述内存区域中读取的仿真数据为:所述内存区域中与所述仿真进程具有运算关联关系的仿真数据。
上述方法,优选的,所述内存区域被所述多个仿真进程中的第一仿真进程创建;
其中,所述第一仿真进程还用于:在创建所述内存区域之后,将所述内存区域的区域地址信息传输给所述多个仿真进程中的第二仿真进程,以使得所述第二仿真进程接收所述区域地址信息,所述第二仿真进程基于所述区域地址信息将所述第二仿真进程对应的第二仿真数据缓存到所述内存区域中。
上述方法,优选的,所述多个仿真进程中的第一仿真进程还用于:将所述第一仿真进程对应的第一仿真模型进行仿真运算所得到的第一模型仿真结果存储到所述内存区域,以使得所述多个仿真进程中的第二仿真进程在所述内存区域中读取所述第一模型仿真结果并根据所述第一模型仿真结果对所述第二仿真进程对应的第二仿真模型进行仿真运算,以得到所述仿真项目的项目仿真结果;
其中,所述第二仿真进程还用于:将仿真项目的项目仿真结果存储到所述内存区域,以使得所述第一仿真进程在所述内存区域中读取到所述仿真项目的项目仿真结果并进行输出。
上述方法,优选的,所述多个仿真进程中的第一仿真进程还用于:在所述内存区域中读取所述多个仿真进程中的第二仿真进程对所述第二仿真进程对应的第二仿真模型进行仿真运算所得到的第二模型仿真结果,并根据所述第二模型仿真结果对所述第一仿真进程对应的第一仿真模型进行仿真运算,以得到所述仿真项目的项目仿真结果并进行输出。
上述方法,优选的,在得到所述仿真项目的项目仿真结果之后,所述多个仿真进程中的任意仿真进程还用于释放所述内存区域。
上述方法,优选的,在所述仿真项目的仿真运算结束的情况下,所述多个仿真进程中的第一仿真进程还用于:关闭所述多个仿真进程中除所述第一仿真进程之外的其他仿真进程。
一种仿真模型的运行控制装置,包括:
项目获得单元,用于获得待仿真运算的仿真项目,所述仿真项目中包含有多个仿真模型;
进程启动单元,用于在所述仿真项目中包含有不同位宽参数的仿真模型的情况下,启动多个仿真进程,以使得每个所述仿真进程分别对其各自对应的仿真模型进行仿真运算,以得到所述仿真项目的项目仿真结果;
其中,具有不同位宽参数的仿真模型分别对应于不同的仿真进程,且所述仿真进程之间通过内存区域进行仿真数据的传输,所述仿真数据至少包含所述仿真模型进行仿真运算所得到的模型仿真结果。
一种电子设备,包括:
存储器,用于存储应用程序及所述应用程序运行所产生的数据;
处理器,用于执行所述应用程序,以实现:获得待仿真运算的仿真项目,所述仿真项目中包含有多个仿真模型;在所述仿真项目中包含有不同位宽参数的仿真模型的情况下,启动多个仿真进程,以使得每个所述仿真进程分别对其各自对应的仿真模型进行仿真运算,以得到所述仿真项目的项目仿真结果;其中,具有不同位宽参数的仿真模型分别对应于不同的仿真进程,且所述仿真进程之间通过内存区域进行仿真数据的传输,所述仿真数据至少包含所述仿真模型进行仿真运算所得到的模型仿真结果。
从上述技术方案可以看出,本申请公开的一种仿真模型的运行控制方法、装置及电子设备中,在获得待仿真运算的且包含多个仿真模型的仿真项目之后,基于仿真项目中所包含的不同位宽参数的仿真模型,启动不同的仿真进程分别对相应位宽参数的仿真模型进行仿真运算,由此得到仿真项目的项目仿真结果,而这一过程中,不同的仿真进程之间通过内存区域实现仿真数据如模型仿真结果的传输。可见,本申请针对仿真项目中不同位宽参数的仿真模型启动相应的仿真进程进行对应的仿真运算处理并输出项目仿真结果,同时在仿真运算处理中使用内存区域实现仿真进程之间的数据传输,由此,本申请中利用内存区域实现对不同位宽参数的仿真模型进行仿真运算的进程之间的数据交互,最终得到仿真项目的项目仿真结果,基于此,本申请中在实现共存于同一仿真项目中的不同位宽参数的仿真模型的仿真运算时,利用内存读取速率快的特性提高仿真运算中的数据交互效率,从而达到提高仿真效率的目的。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例一提供的一种仿真模型的运行控制方法的流程图;
图2为本申请实施例中两个仿真进程之间的交互示意图;
图3为本申请实施例二提供的一种仿真模型的运行控制装置的结构示意图;
图4为本申请实施例三提供的一种电子设备的结构示意图;
图5-图6分别为本申请适用于具有32位和64位FMU的服务器进行仿真运算时主从进程之间的交互示意图;
图7为本申请适用于具有32位和64位FMU的服务器进行仿真运算的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参考图1,为本申请实施例一提供的一种仿真模型的运行控制方法的实现流程图,该方法可以适用于能够进行数据处理的电子设备中,如计算机或者服务器等。本实施例中的技术方案主要用于在实现包含不同位宽参数的仿真模型的仿真项目的仿真运算的同时,提高仿真模型之间的数据交互效率,从而提高仿真运算速率。
具体的,本实施例中的方法可以包含以下步骤:
步骤101:获得待仿真运算的仿真项目。
其中,仿真项目中包含有多个仿真模型,仿真模型可以为基于标准协议封装的仿真模型,例如,基于FMI(Functional Mock-Up Interface)协议封装后的FMU(FunctionalMock-Up Unit)仿真模型等。
具体的,仿真项目可以理解为:包含了待运算的各种元模型的仿真系统工程,其中的元模型即为仿真项目中的仿真模型。
具体实现中,本实施例中可以在所实现的仿真平台上加载包含了待运算的仿真模型的仿真项目,例如,首先打开仿真平台的应用程序,在仿真平台的加载交互界面上手动选择需要的并且已经预先创建好的包含多个FMU仿真模型的仿真系统工程,也就是仿真项目,点击打开仿真系统工程,以实现加载仿真系统工程。
步骤102:判断仿真项目中是否包含有不同位宽参数的仿真模型,如果在仿真项目中包含有不同位宽参数的仿真模型,执行步骤103。
具体的,本实施例中可以通过获得仿真项目中所包含的多个仿真模型的位宽参数,再进行位宽参数的比较,从而判断仿真项目中是否包含有不同位宽参数的仿真模型。
其中,位宽是指内存或显存一次能传输的数据量,这里的位宽参数指的是仿真模型被建模时的建模系统的系统位宽的参数,每个仿真模型的位宽参数可以相同也可以不同,也就是说,每个仿真模型可以是基于不同系统位宽的建模系统所创建而成的。具体的,位宽参数可以有16位、32位或者64位等等。
例如,本实施例中在仿真平台上加载仿真项目后,获得仿真项目中每个仿真模型的位宽参数,之后,就可以通过位宽参数的比较分类,确定仿真项目中所包含的仿真模型是否对应于同一位宽参数,或者是否对应于多个不同的位宽参数。例如,仿真项目中有3个仿真模型,且这3个仿真模型的位宽参数均为32位,此时,仿真项目中的仿真模型对应于同一位宽参数;再如,仿真项目中有4个仿真模型,且这4个仿真模型的位宽参数均为64位,此时,仿真项目中的仿真模型对应于同一位宽参数;再如,仿真项目中有5个仿真模型,且这5个仿真模型中有2个仿真模型的位宽参数为32位,另外3个仿真模型的位宽参数为64位,此时,仿真项目中所包含的仿真模型中有两种位宽参数。
步骤103:启动多个仿真进程,以使得每个仿真进程分别对其各自对应的仿真模型进行仿真运算,以得到仿真项目的项目仿真结果。
其中,具有不同位宽参数的仿真模型分别对应于不同的仿真进程,具有相同位宽参数的仿真模型对应于同一仿真进程,且仿真进程之间通过内存区域进行仿真数据的传输,具体的,仿真数据至少包含所述仿真模型进行仿真运算所得到的模型仿真结果。
需要说明的是,进程指的是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础,在本实施例中,仿真进程指的是能够对仿真项目实现仿真运算的运行活动。仿真运算就是建立同等的数学模型,在计算机上编写仿真程序,编译并运行的过程。
具体实现中,本实施例中通过启动分别对应于不同位宽参数的仿真模型的仿真进程,进而使用仿真进程对具有相应位宽参数的一个或多个仿真模型进行仿真运算,而在仿真进程对相应位宽参数的仿真模型进行仿真运算的过程中,仿真模型的仿真运算需要基于其他仿真模型的模型运算结果实现,因此,仿真模型之间通过内存区域进行各自模型仿真结果的传输,从而实现仿真项目中不同仿真模型之间的联合仿真运算,最终得到仿真项目的项目仿真结果。
例如,获取到的仿真项目中有两个仿真模型,分别是位宽参数为32位的仿真模型和位宽参数为64位的仿真模型,相应的启动两个仿真进程,一个仿真进程用来执行针对位宽参数为32位的仿真模型的仿真运算,另一个仿真进程用来执行针对位宽参数为64位的仿真模型的仿真运算,两个仿真进程利用内存区域进行模型仿真结果的传输,以便于两个仿真进程对各自对应的仿真模型进行仿真运算时能够基于传输来的其他仿真模型的模型运算结果实现,从而实现两个仿真模型之间的联合仿真运算,以得到仿真项目的项目仿真结果;
或者,获取到的仿真项目中有三个仿真模型,分别是一个位宽参数为32位的仿真模型和两个位宽参数为64位的仿真模型,相应的启动两个仿真进程,一个仿真进程用来执行针对一个位宽参数为32位的仿真模型的仿真运算,另一个仿真进程用来执行针对两个位宽参数为64位的仿真模型的仿真运算,两个仿真进程利用内存区域进行模型仿真结果的传输,以便于两个仿真进程对各自对应的仿真模型进行仿真运算时能够基于传输来的其他仿真模型的模型运算结果实现,从而实现两个仿真模型之间的联合仿真运算,以得到仿真项目的项目仿真结果;
或者,获取到的仿真项目中有三个仿真模型,分别是一个位宽参数为16位的仿真模型和一个位宽参数为32位的仿真模型以及一个位宽参数为64的仿真模型,相应的启动三个仿真进程,一个仿真进程用来执行针对位宽参数为16位的仿真模型的仿真运算,一个仿真进程用来执行针对位宽参数为32位的仿真模型的仿真运算,另一个仿真进程用来执行针对位宽参数为64位的仿真模型的仿真运算,这三个仿真进程利用内存区域进行模型仿真结果的传输,以便于这三个仿真进程对各自对应的仿真模型进行仿真运算时能够基于传输来的其他仿真模型的模型运算结果实现,从而实现多个仿真模型之间的联合仿真运算,以得到仿真项目的项目仿真结果。
由上述方案可知,本申请实施例一提供的一种仿真模型的运行控制方法中,在获得待仿真运算的且包含多个仿真模型的仿真项目之后,基于仿真项目中所包含的不同位宽参数的仿真模型,启动不同的仿真进程分别对相应位宽参数的仿真模型进行仿真运算,由此得到仿真项目的项目仿真结果,而这一过程中,不同的仿真进程之间通过内存区域实现仿真数据如模型仿真结果的传输。可见,本实施例针对仿真项目中不同位宽参数的仿真模型启动相应的仿真进程进行对应的仿真运算处理并输出项目仿真结果,同时在仿真运算处理中使用内存区域实现仿真进程之间的数据传输,由此,本实施例中利用内存区域实现对不同位宽参数的仿真模型进行仿真运算的进程之间的数据交互,最终得到仿真项目的项目仿真结果,基于此,本实施例中在实现共存于同一仿真项目中的不同位宽参数的仿真模型的仿真运算时,利用内存读取速率快的特性提高仿真运算中的数据交互效率,从而达到提高仿真效率的目的。
具体实现中,本实施例中用于实现仿真数据传输的内存区域可以为实现仿真项目的仿真运算的电子设备在内存中预先划分出的区域,或者,本实施例中用于实现仿真数据传输的内存区域可以为电子设备在内存中实时的根据仿真数据的传输需求如数据大小等所划分的区域。
基于此,本实施例中所划分出的内存区域可以用于缓存任意仿真进程在仿真运算过程中对应的仿真数据,以使得其他任意仿真进程在内存区域中读取所述仿真数据。
以仿真项目中包含两种位宽参数的仿真模型为例,本实施例中所划分的内存区域用于缓存两个仿真进程中的第一仿真进程在仿真运算过程中对应的第一仿真数据,以使得两个仿真进程中的第二仿真进程在内存区域中读取所保存的第一仿真数据;另外,本实施例中所划分的内存区域用于缓存两个仿真进程中的第二仿真进程在仿真运算过程中对应的第二仿真数据,以使得两个仿真进程中的第一仿真进程在内存区域中读取所保存的第二仿真数据,如图2中所示。
具体的,仿真进程在内存区域中所读取到的仿真数据可以为:内存区域中与仿真进程具有运算关联关系的仿真数据。这里与仿真进程具有运算关联关系的仿真数据可以理解为,仿真进程进行仿真运算所需要使用的仿真数据,如其他仿真进程进行仿真运算所得到的模型运算结果等。
以仿真项目中包含两种位宽参数的仿真模型为例,本实施例中所划分的内存区域用于缓存两个仿真进程中的第一仿真进程在仿真运算过程中对应的第一仿真数据,以使得两个仿真进程中的第二仿真进程在内存区域中读取所保存的第一仿真数据中与第二仿真进程进行仿真运算相关的仿真数据;另外,本实施例中所划分的内存区域用于缓存两个仿真进程中的第二仿真进程在仿真运算过程中对应的第二仿真数据,以使得两个仿真进程中的第一仿真进程在内存区域中读取所保存的第二仿真数据中与第一仿真进程进行仿真运算相关的仿真数据。
例如,获取到的仿真项目中有两个仿真模型,分别是位宽参数为32位的仿真模型和位宽参数为64位的仿真模型,相应的启动两个仿真进程,一个仿真进程用来执行针对位宽参数为32位的仿真模型的仿真运算,另一个仿真进程用来执行针对位宽参数为64位的仿真模型的仿真运算,每个仿真进程各自将对仿真模型进行仿真运算过程中对应的模型仿真结果缓存到内存区域中,以使得其他仿真进程可以从内存区域中读取所需要的模型仿真结果,用于对相应仿真模型的仿真运算,从而实现两个仿真模型之间的联合仿真运算,以得到仿真项目的项目仿真结果;
或者,获取到的仿真项目中有三个仿真模型,分别是一个位宽参数为32位的仿真模型和两个位宽参数为64位的仿真模型,相应的启动两个仿真进程,一个仿真进程用来执行针对一个位宽参数为32位的仿真模型的仿真运算,另一个仿真进程用来执行针对两个位宽参数为64位的仿真模型的仿真运算,每个仿真进程各自将对仿真模型进行仿真运算过程中对应的模型仿真结果缓存到内存区域中,以使得其他仿真进程可以从内存区域中读取所需要的模型仿真结果,用于对相应仿真模型的仿真运算,从而实现两个仿真模型之间的联合仿真运算,以得到仿真项目的项目仿真结果;
或者,获取到的仿真项目中有三个仿真模型,分别是一个位宽参数为16位的仿真模型和一个位宽参数为32位的仿真模型以及一个位宽参数为64的仿真模型,相应的启动三个仿真进程,一个仿真进程用来执行针对位宽参数为16位的仿真模型的仿真运算,一个仿真进程用来执行针对位宽参数为32位的仿真模型的仿真运算,另一个仿真进程用来执行针对位宽参数为64位的仿真模型的仿真运算,每个仿真进程各自将对仿真模型进行仿真运算过程中对应的模型仿真结果缓存到内存区域中,以使得其他仿真进程可以从内存区域中读取所需要的模型仿真结果,用于对相应仿真模型的仿真运算,从而实现多个仿真模型之间的联合仿真运算,以得到仿真项目的项目仿真结果。
在一种实现方式中,内存区域可以被多个仿真进程中的第一仿真进程创建,此时,第一仿真进程为主进程,如64位的仿真模型对应的仿真进程等,第一仿真进程可以将其进行仿真运算过程中所对应的第一仿真数据缓存到内存区域中,以便于多个仿真进程中的第二仿真进程可以在内存区域中读取到第一仿真数据中与第二仿真进程具有运算关联关系的仿真数据。
基于此,第一仿真进程还用于:在创建内存区域之后,将内存区域的区域地址信息传输给多个仿真进程中的第二仿真进程,以使得第二仿真进程接收区域地址信息,并基于区域地址信息将第二仿真进程对应的第二仿真数据缓存到内存区域中,以便于第一仿真进程可以在内存区域中读取到第二仿真数据中与第一仿真进程具有运算关联关系的仿真数据。
具体实现中,多个仿真进程中的第一仿真进程还可以用于:将第一仿真进程对应的第一仿真模型进行仿真运算所得到的第一模型仿真结果存储到内存区域,以使得多个仿真进程中的第二仿真进程在内存区域中读取第一模型仿真结果并根据第一模型仿真结果对第二仿真进程对应的第二仿真模型进行仿真运算,以得到仿真项目的项目仿真结果;
其中,第二仿真进程还用于:将仿真项目的项目仿真结果存储到内存区域,以使得作为主进程的第一仿真进程在内存中读取到仿真项目的项目仿真结果并进行输出。例如,第一仿真进程可以通过与仿真平台上的交互界面之间的接口将项目仿真结果传输至交互界面,如UI界面,以便于根据项目仿真结果进行后续处理,例如在UI界面上输出相应的表格或者图像等数据。
需要说明的是,第一仿真进程和第二仿真进程中的“第一”和“第二”是用于区分两个不同的主从进程。
也就是说,本实施例中的项目仿真结果是由第二仿真进程生成的,而在作为从进程的第二仿真进程根据第一仿真进程对应的第一模型仿真结果对相应的第二仿真模型进行最后的仿真运算之后,将最终输出的仿真项目的项目仿真结果缓存到内存区域中,以使得作为主进程的第一仿真进程从内存区域中读取项目仿真结果,并由作为主进程的第一仿真进程将项目仿真结果进行输出。
或者,多个仿真进程中的第一仿真进程还可以用于:在内存区域中读取多个仿真进程中的第二仿真进程对第二仿真进程对应的第二仿真模型进行仿真运算所得到的第二模型仿真结果,并根据第二模型仿真结果对第一仿真进程对应的第一仿真模型进行仿真运算,以得到仿真项目的项目仿真结果并进行输出。
也就是说,在作为主进程的第一仿真进程根据第二仿真进程对应的第二模型仿真结果对相应的第一仿真模型进行最后的仿真运算之后,将最终得到的仿真项目的项目仿真结果进行输出。
在另一种实现方式中,内存区域可以被多个仿真进程中的第二仿真进程创建,此时,第二仿真进程为主进程,如32位的仿真模型对应的仿真进程等,第二仿真进程可以将其进行仿真运算过程中所对应的第二仿真数据缓存到内存区域中,以便于多个仿真进程中的第一仿真进程可以在内存区域中读取到第二仿真数据中与第一仿真进程具有运算关联关系的仿真数据。
基于此,第二仿真进程还用于:在创建内存区域之后,将内存区域的区域地址信息传输给多个仿真进程中的第一仿真进程,以使得第一仿真进程接收区域地址信息,并基于区域地址信息将第一仿真进程对应的第一仿真数据缓存到内存区域中,以便于第二仿真进程可以在内存区域中读取到第一仿真数据中与第二仿真进程具有运算关联关系的仿真数据。
具体实现中,多个仿真进程中的第二仿真进程还可以用于:将第二仿真进程对应的第二仿真模型进行仿真运算所得到的第二模型仿真结果存储到内存区域,以使得多个仿真进程中的第一仿真进程在内存区域中读取第二模型仿真结果并根据第二模型仿真结果对第一仿真进程对应的第一仿真模型进行仿真运算,以得到仿真项目的项目仿真结果;
其中,第一仿真进程还用于:将仿真项目的项目仿真结果存储到内存区域,以使得作为主进程的第二仿真进程在内存中读取到仿真项目的项目仿真结果并进行输出。例如,第二仿真进程还可以通过与仿真平台上的交互界面之间的接口将项目仿真结果传输至交互界面,如UI界面,以便于根据项目仿真结果进行后续处理,例如在UI界面上输出相应的表格或者图像等数据。
也就是说,本实施例中的项目仿真结果是由第一仿真进程生成的,二在作为从进程的第一仿真进程根据第二仿真进程对应的第二模型仿真结果对相应的第一仿真模型进行最后的仿真运算之后,将最终输出的仿真项目的项目仿真结果缓存到内存区域中,以使得作为主进程的第二仿真进程从内存区域中读取项目仿真结果,并由作为主进程的第二仿真进程将项目仿真结果进行输出。
或者,多个仿真进程中的第二仿真进程还可以用于:在内存区域中读取多个仿真进程中的第一仿真进程对第一仿真进程对应的第一仿真模型进行仿真运算所得到的第一模型仿真结果,并根据第一模型仿真结果对第二仿真进程对应的第二仿真模型进行仿真运算,以得到仿真项目的项目仿真结果并进行输出。
也就是说,在作为主进程的第二仿真进程根据第一仿真进程对应的第一模型仿真结果对相应的第二仿真模型进行最后的仿真运算之后,将最终得到的仿真项目的项目仿真结果进行输出。
在一种实现方式中,本实施例中在得到仿真项目的项目仿真结果之后,多个仿真进程中的任意仿真进程还用于释放内存区域。也就是说,内存区域可以在仿真项目被仿真运算结束即完成之后被任意仿真进程释放,以使得被释放的内存空间可以用于其他用途。
例如,在作为从进程的第二仿真进程将最终输出的仿真项目的项目仿真结果缓存到内存区域中,以使得作为主进程的第一仿真进程从内存区域中读取项目仿真结果之后,作为主进程的第一仿真进程可以将内存区域进行释放,或者,在第一仿真进程从内存区域中读取项目仿真结果之后,由第二仿真进程释放内存区域;
或者,在作为主进程的第一仿真进程从内存区域中读取第二仿真进程对应的第二模型仿真结果并据此对相应的第一仿真模型进行最后的仿真运算之后,除了将最终得到的仿真项目的项目仿真结果进行输出,还可以将内存区域进行释放,或者,在第一仿真进程从内存区域中读取第二仿真进程对应的第二模型仿真结果之后,由第二仿真进程释放内存区域。
进一步的,本实施例中在仿真项目的仿真运算结束的情况下,多个仿真进程中的第一仿真进程还用于:关闭多个仿真进程中除第一仿真进程之外的其他仿真进程。例如,作为主进程的第一仿真进程在仿真项目的仿真运算结束之后,回收其他作为从进程的第二仿真进程。最后,本实施例中再关闭第一仿真进程,以达到释放进程资源的目的。
参考图3,为本申请实施例二提供的一种仿真模型的运行控制装置的结构示意图,该装置可以适用于能够进行数据处理的电子设备中,如计算机或者服务器等。本实施例中的技术方案主要用于在实现包含不同位宽参数的仿真模型的仿真项目的仿真运算的同时,提高仿真模型之间的数据交互效率,从而提高仿真运算速率。
具体的,本实施例中的装置可以包含如下单元:
项目获得单元301,用于获得待仿真运算的仿真项目,仿真项目中包含有多个仿真模型;
进程启动单元302,用于在仿真项目中包含有不同位宽参数的仿真模型的情况下,启动多个仿真进程,以使得每个仿真进程分别对其各自对应的仿真模型进行仿真运算,以得到仿真项目的项目仿真结果;
其中,具有不同位宽参数的仿真模型分别对应于不同的仿真进程,且仿真进程之间通过内存区域进行仿真数据的传输,仿真数据至少包含仿真模型进行仿真运算所得到的模型仿真结果。
由上述方案可知,本申请实施例二提供的一种仿真模型的运行控制装置中,在获得待仿真运算的且包含多个仿真模型的仿真项目之后,基于仿真项目中所包含的不同位宽参数的仿真模型,启动不同的仿真进程分别对相应位宽参数的仿真模型进行仿真运算,由此得到仿真项目的项目仿真结果,而这一过程中,不同的仿真进程之间通过内存区域实现仿真数据如模型仿真结果的传输。可见,本实施例针对仿真项目中不同位宽参数的仿真模型启动相应的仿真进程进行对应的仿真运算处理并输出项目仿真结果,同时在仿真运算处理中使用内存区域实现仿真进程之间的数据传输,由此,本实施例中利用内存区域实现对不同位宽参数的仿真模型进行仿真运算的进程之间的数据交互,最终得到仿真项目的项目仿真结果,基于此,本实施例中在实现共存于同一仿真项目中的不同位宽参数的仿真模型的仿真运算时,利用内存读取速率快的特性提高仿真运算中的数据交互效率,从而达到提高仿真效率的目的。
在一种实现方式中,所述内存区域用于缓存任意所述仿真进程在仿真运算过程中对应的仿真数据,以使得其他任意所述仿真进程在所述内存区域中读取所述仿真数据。
具体的,所述仿真进程在所述内存区域中读取的仿真数据为:所述内存区域中与所述仿真进程具有运算关联关系的仿真数据。
在一种实现方式中,所述内存区域被所述多个仿真进程中的第一仿真进程创建;
其中,所述第一仿真进程还用于:在创建所述内存区域之后,将所述内存区域的区域地址信息传输给所述多个仿真进程中的第二仿真进程,以使得所述第二仿真进程接收所述区域地址信息,所述第二仿真进程基于所述区域地址信息将所述第二仿真进程对应的第二仿真数据缓存到所述内存区域中。
进一步的,所述多个仿真进程中的第一仿真进程还用于:将所述第一仿真进程对应的第一仿真模型进行仿真运算所得到的第一模型仿真结果存储到所述内存区域,以使得所述多个仿真进程中的第二仿真进程在所述内存区域中读取所述第一模型仿真结果并根据所述第一模型仿真结果对所述第二仿真进程对应的第二仿真模型进行仿真运算,以得到所述仿真项目的项目仿真结果;
其中,所述第二仿真进程还用于:将仿真项目的项目仿真结果存储到所述内存区域,以使得所述第一仿真进程在所述内存区域中读取到所述仿真项目的项目仿真结果并进行输出。
或者,所述多个仿真进程中的第一仿真进程还用于:在所述内存区域中读取所述多个仿真进程中的第二仿真进程对所述第二仿真进程对应的第二仿真模型进行仿真运算所得到的第二模型仿真结果,并根据所述第二模型仿真结果对所述第一仿真进程对应的第一仿真模型进行仿真运算,以得到所述仿真项目的项目仿真结果并进行输出。
在一种实现方式中,在得到所述仿真项目的项目仿真结果之后,所述多个仿真进程中的任意仿真进程还用于释放所述内存区域。
在一种实现方式中,在所述仿真项目的仿真运算结束的情况下,所述多个仿真进程中的第一仿真进程还用于:关闭所述多个仿真进程中除所述第一仿真进程之外的其他仿真进程。
需要说明的是,本实施例中各单元的具体实现可以参考前文中的相应内容,此处不再详述。
参考图4,为本申请实施例三提供的一种电子设备的结构示意图,该电子设备可以能够进行数据处理的电子设备,如计算机或者服务器等。本实施例中的技术方案主要用于在实现包含不同位宽参数的仿真模型的仿真项目的仿真运算的同时,提高仿真模型之间的数据交互效率,从而提高仿真运算速率。
具体的,本实施例中的电子设备可以包含如下结构:
存储器401,用于存储应用程序及应用程序运行所产生的数据;
处理器402,用于执行应用程序,以实现:获得待仿真运算的仿真项目,仿真项目中包含有多个仿真模型;在仿真项目中包含有不同位宽参数的仿真模型的情况下,启动多个仿真进程,以使得每个仿真进程分别对其各自对应的仿真模型进行仿真运算,以得到仿真项目的项目仿真结果;其中,具有不同位宽参数的仿真模型分别对应于不同的仿真进程,且仿真进程之间通过内存区域进行仿真数据的传输,仿真数据至少包含仿真模型进行仿真运算所得到的模型仿真结果。
由上述方案可知,本申请实施例三提供的一种电子设备中,在获得待仿真运算的且包含多个仿真模型的仿真项目之后,基于仿真项目中所包含的不同位宽参数的仿真模型,启动不同的仿真进程分别对相应位宽参数的仿真模型进行仿真运算,由此得到仿真项目的项目仿真结果,而这一过程中,不同的仿真进程之间通过内存区域实现仿真数据如模型仿真结果的传输。可见,本实施例针对仿真项目中不同位宽参数的仿真模型启动相应的仿真进程进行对应的仿真运算处理并输出项目仿真结果,同时在仿真运算处理中使用内存区域实现仿真进程之间的数据传输,由此,本实施例中利用内存区域实现对不同位宽参数的仿真模型进行仿真运算的进程之间的数据交互,最终得到仿真项目的项目仿真结果,基于此,本实施例中在实现共存于同一仿真项目中的不同位宽参数的仿真模型的仿真运算时,利用内存读取速率快的特性提高仿真运算中的数据交互效率,从而达到提高仿真效率的目的。
以服务器上对32位和64位两种位宽的FMU在同一个仿真工程中进行联合仿真为例,本申请的技术方案所要实现的目的在于:在32位的FMU模型与64位FMU模型联合仿真运算时,实现32位和64位的FMU在同一仿真系统中的混合实时仿真运算,保障了仿真结果的正确性,同时,在32位64位的FMU共存的仿真运算中,实现仿真运算速度的最大化,大大提高了仿真效率。
具体实现中,仿真工具装载后,通过传输控制协议TCP(Transmission ControlProtocol)模块与仿真运算引擎进程(也简称为“仿真引擎”)进行通讯。仿真引擎用于实现仿真模型的仿真运算,运算结果通过TCP模块,实时回传给仿真工具。
在以上方案的基础上,本申请的技术方案中通过多进程之间共享内存读写地址的方式,实现了32位和64位FMU的联合仿真时运算速度的最大化,解决了仿真速度慢的问题。具体的,本申请的技术方案中采用运行64位FMU的主引擎(SE-master)进程与运行32位FMU的从引擎(SE-slave)进程之间共享内存地址,如图5中所示,把要交互的仿真数据放在共享内存地址上读写的方法,大大提高了32位64位fmu之间数据交换的速度,从而大大提升了联合仿真的速度。
其中,在另一种实现方式中,主引擎可以运行32位FMU,从引擎可以运行64位FMU,如图6中所示,所形成的技术方案均在本申请的保护范围内。
结合图7中所示的流程图,本申请中实现多FMU联合仿真的具体实现流程如下:
首先,仿真工具中加载仿真系统工程且用户开始仿真后,仿真工具识别出本仿真工程是否存在32位和64位FMU联合仿真。如果是32位64位FMU共存的仿真系统工程,则按照如下步骤来运行:
1)先启动SE-master进程;
2)SE-master进程开辟一段内存地址用于后续与slave进程做数据交互;
3)SE-master进程拉起SE-slave进程,并通知SE-slave进程共享内存的地址,以及仿真工程中所有32位FMU信息;
4)SE-master进程用初始化数据进行64位FMU的运算;
5)SE-master进程将64位fmu的运算结果写入共享内存地址;
6)SE-slave进程进行32位FMU的仿真运算,根据连接关系从共享内存地址读取64位FMU的运算结果作为本进程32位FMU的输入值,再把运算结果写入共享内存地址;
7)SE-master进程根据连接关系,读取了SE-slave的运算结果并作为64位FMU的输入,进行下一节拍的仿真运算;
8)SE-master进程把本节拍的所有FMU(32位/64位FMU)运算结果回传给仿真工具;
重复步骤4)到步骤8),直到仿真结束。
仿真结束后,SE-master进程或者SE-slave进程回收共享内存,SE-master进程终止回收SE-slave进程。
综上所述,本申请的技术方案中通过进程间共享内存地址实现进程之间的数据交互,区别于tcp通讯实现进程之间的数据交互会导致交互效率较低的情况,本申请的技术方案使32位64位FMU联合仿真时的运算速度得以最大化,大大提升仿真软件的效率。例如,一个32位和64位fmu联合仿真的工程,仿真时长10000s,仿真步长0.05s,用tcp通讯实现进程之间的数据交互的方案在最大倍速下,需要运行10000s,在使用本申请的技术方案在最大倍速下只需要运行305s就完成了,且仿真结果正确。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
- 仿真模型的运行控制方法、装置及电子设备
- 一种列车运行控制方法、装置、电子设备及存储介质