发明内容
有鉴于此,本发明实施例提供一种多个模型并行仿真的调度方法和装置,以实现对并行仿真的多个模型的合理调度,提高实时仿真功能的准确性。
第一方面,本发明实施例提供了一种多个模型并行仿真的调度方法,所述方法包括:
设置所述多个模型中每个模型的调度周期;
计算所述多个模型中所有模型的调度周期的最大公约数和最小公倍数;
计算所述最小公倍数对所述最大公约数的商,作为总帧数;
所述多个模型中的每个模型的调度周期分别对所述最大公约数做商,得到每个模型的第一参数;
从第一帧到最后一帧,用当前帧的帧序列号分别对每个模型的第一参数进行取余计算,如果结果为0,则将对应的模型的信息放置到当前帧中。
第二方面,本发明实施例还提供了一种多个模型并行仿真的调度装置,所述装置包括:
设置模块,用于设置所述多个模型中每个模型的调度周期;
第一计算模块,用于计算所述多个模型中所有模型的调度周期的最大公约数和最小公倍数;
第二计算模块,用于计算所述最小公倍数对所述最大公约数的商,作为总帧数;
第三计算模块,用于所述多个模型中的每个模型的调度周期分别对所述最大公约数做商,得到每个模型的第一参数;
调度模块,用于从第一帧到最后一帧,用当前帧的帧序列号分别对每个模型的第一参数进行取余计算,如果结果为0,则将对应的模型的信息放置到当前帧中。
本发明实施例提供的多个模型并行仿真的调度方法和装置,通过设置多个模型的调度周期,计算多个模型中所有模型的调度周期的最大公约数和最小公倍数,计算所述最小公倍数对所述最大公约数的商作为总帧数,并将每个模型的调度周期分别对所述最大公约数做商,得到每个模型的第一参数,从第一帧到最后一帧,用当前帧的帧序列号分别对每个模型的第一参数进行取余计算,如果结果为0,则将对应的模型的信息放置到当前帧中,实现了对并行仿真的多个模型的合理调度,提高了数据的实时仿真功能的准确性。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
图1示出了本发明的第一实施例。
图1是本发明第一实施例提供的一种多个模型并行仿真的调度方法的流程图,该方法适用于对并行仿真的多个模型进行调度,可由计算机执行,该方法具体包括如下步骤:
步骤110,设置所述多个模型中每个模型的调度周期。
根据需要,设定每个模型的调度周期。
步骤120,计算所述多个模型中所有模型的调度周期的最大公约数和最小公倍数。
通过多个数的最大公约数的计算方法,计算所述多个模型中所有模型的调度周期的最大公约数;通过多个数的最小公倍数的计算方法,计算所述多个模型中所有模型的调度周期的最小公倍数。
步骤130,计算所述最小公倍数对所述最大公约数的商,作为总帧数。
计算所述多个模型中的所有模型的调度周期的最小公倍数对最大公约数的商,得到一次循环的总帧数。其中,一次循环是指调度完所述多个模型中的所有模型。
在航空总线上,模型的诸如上报、监听、通知等各种信息是以消息的方式进行传输的,而若完成模型与调度中心之间的某一特定功能时,就需要使用多个消息进行组合,形成新的结构,这种新的结构称为帧。
步骤140,所述多个模型中的每个模型的调度周期分别对所述最大公约数做商,得到每个模型的第一参数。
分别计算所述多个模型中的每个模型的调度周期对所述最大公约数的商,得到每个模型的第一参数。
步骤150,从第一帧到最后一帧,用当前帧的帧序列号分别对每个模型的第一参数进行取余计算,如果结果为0,则将对应的模型的信息放置到当前帧中。
步骤150主要实现对多个模型的调度,基于FBS(Frequency BasedScheduler,基于频率调度机制)调度机制实现多个模型的调度,可以满足航电系统中的实时数据采集和实时仿真的需求。在对并行仿真的多个模型调度之前要挂载硬件时钟中断,设置硬件时钟的定时参数,并启动硬件时钟实现定时,以保证数据传输的实时性。
对并行仿真的多个模型进行调度,首先从第一帧开始,用当前帧的帧序列号(即1、2、3、……、N,其中,N为总帧数)分别对每个模型的第一参数进行取余计算,如果结果为0,则将对应的模型(即取余计算结果为0的模型)的信息放置到当前帧中;然后再以同样的方法调度相应的模型到第二帧、第三帧……最后一帧(帧序列号为总帧数N)中。
本实施例通过设置多个模型的调度周期,计算多个模型中所有模型的调度周期的最大公约数和最小公倍数,计算所述最小公倍数对所述最大公约数的商作为总帧数,并将每个模型的调度周期分别对所述最大公约数做商,得到每个模型的第一参数,从第一帧到最后一帧,分别用当前帧的帧序列号分别对每个模型的第一参数进行取余计算,如果结果为0,则将对应的模型的信息放置到当前帧中。由于当前帧能够整除模型的调度周期,所以避免了单独调度每一个模型,实现了统一调度多个模型,从而实现了对并行仿真的多个模型的合理调度,提高了数据的实时仿真功能的准确性。
在上述技术方案的基础上,在设置所述多个模型中每个模型的调度周期之前,还优选包括:
确定需要调度的多个模型;
将所述多个模型绑定到不同的CPU上。
即在不知道哪个模型需要调度之前,还需要确定需要调度的模型,即确定需要并行仿真的模型。在具有多核的计算机中,将该计算机上承载的需要调度的多个模型绑定到该计算机的不同CPU上,从而使得模型运行的负载尽量均衡,保证任意模型的运行可得到足够的CPU资源,以提高数据的实时性,提高数据传输的效率。
在上述技术方案的基础上,图2是本发明实施例提供的多个模型并行仿真的调度方法中的调度多个模型的流程图,如图2所示,步骤150具体包括如下步骤:
步骤151、设定一个变量j,用于表示当前帧的帧序列号,将1赋值给变量j。
定义一个整型的中间变量j,用于表示当前帧的帧序列号,即表示当前帧为第几帧,设定其初始值为1,即j=1,表示从第一帧开始。
步骤152、用当前帧的帧序列号分别对每个模型的第一参数进行取余计算,如果结果为0,则将对应的模型的信息放置到当前帧中。
例如:如果有3个模型,分别为模型1、模型2和模型3,模型1、模型2和模型3的第一参数分别记做A、B和C,用当前帧的帧序列号j分别对A、B和C进行取余计算,如果j对A取余为0,则将模型1的信息放置到第j帧中;如果j对B和对C取余均不为0,则不用将模型2和模型3的信息放置到第j帧中,继续后面的操作。
步骤153、对变量j加1并赋值给j,判断j是否大于总帧数,如果是,则结束本流程;如果否,则返回步骤152。
当j大于一次循环的总帧数时,表示已完成所有模型的调度,便可以结束本流程,后续按照为每个模型分配的帧进行调度即可;当j不大于一次循环的总帧数时,表示还没有完成所有模型的调度,返回步骤152继续对模型进行调度操作。
通过步骤151、步骤152和步骤153详细给出了对于并行仿真的多个模型的调度,结合硬件时钟实现了数据的实时仿真功能。
第二实施例。
第二实施例提供了一种多个模型并行仿真的调度方法,本实施例应用第一实施例提供的多个模型并行仿真的调度方法,以配置3个模型为例详细说明对并行仿真的多个模型的调度。
首先,确定需要调度的多个模型为3个模型,分别为模型0、模型1和模型2,并将这3个模型绑定到不同的CPU上。
然后,设置这3个模型中的每个模型的调度周期,模型0的调度周期为10ms、模型1的调度周期为20ms、模型3的调度周期为40ms。计算这3个模型的调度周期的最大公约数为10ms,最小公倍数为40ms,则总帧数为4。模型0的第一参数为1,模型1的第一参数为2,模型2的第一参数为4。帧周期可以通过这3个模型的最大公约数得到,即为10ms,也称为主帧周期。其中各个模型的调度周期也可以称为副帧周期。
最后,对各个模型进行调度。首先,从第一帧开始,当前帧的帧序列号为1,用1分别对模型0、模型1和模型2的第一参数进行取余计算,分别得到0、1、1,因此,将模型0的信息放置到第一帧中;然后计算第二帧,当前帧的帧序列号为2,用2分别对模型0、模型1和模型2的第一参数进行取余计算,分别得到0、0、2,因此,将模型0和模型1的信息放置到第二帧中;然后计算第三帧,当前帧的帧序列号为3,用3分别对模型0、模型1和模型2的第一参数进行取余计算,分别得到0、2、3,因此,将模型0的信息放置到第三帧中;然后计算第四帧,当前帧的帧序列号为4,用4分别对模型0、模型1和模型2的第一参数进行取余计算,分别得到0、0、0,因此,将模型0、模型1和模型2的信息放置到第四帧中。通过上述计算,为每帧都分配了相应的模型。图3是本发明第二实施例提供的多个模型并行仿真的调度方法中的模型周期调度序列示例图。如图3所示,完成对所有模型的调度便为一次循环。
本实施例以配置3个模型为例,详细介绍了对并行仿真的多个模型进行调度的过程,实现了数据的实时仿真功能。
图4示出了本发明的第三实施例。
图4是本发明第三实施例提供的一种多个模型并行仿真的调度装置的示意图。本实施例提供的多个模型并行仿真的调度装置用于实现第一实施例提供的多个模型并行仿真的调度方法。如图4所示,本实施例提供的多个模型并行仿真的调度装置包括:设置模块410、第一计算模块420、第二计算模块430、第三计算模块440和调度模块450。
其中,设置模块410用于设置所述多个模型中每个模型的调度周期;
第一计算模块420用于计算所述多个模型中所有模型的调度周期的最大公约数和最小公倍数;
第二计算模块430用于计算所述最小公倍数对所述最大公约数,作为总帧数;
第三计算模块440用于所述多个模型中的每个模型的调度周期分别对所述最大公约数做商,得到每个模型的第一参数;
调度模块450用于从第一帧到最后一帧,用当前帧的帧序列号分别对每个模型的第一参数进行取余计算,如果结果为0,则将对应的模型的信息放置到当前帧中。
优选的,所述装置还包括:
确定模块,用于确定需要调度的多个模型;
绑定模块,用于将所述多个模型绑定到不同的CPU上。
优选的,所述调度模块包括:
赋值子模块,用于设定一个变量j,用于表示当前帧的帧序列号,将1赋值给变量j;
调度子模块,用于用当前帧的帧序列号分别对每个模型的第一参数进行取余计算,如果结果为0,则将对应的模型的信息放置到当前帧中;
处理子模块,用于对变量j加1并赋值给j,判断j是否大于总帧数,如果是,则结束调度;如果否,则返回触发调度子模块的操作。
本实施例通过设置模块设置所述多个模型中每个模型的调度周期;第一计算模块计算所述多个模型中所有模型的调度周期的最大公约数和最小公倍数;第二计算模块计算所述最小公倍数对所述最大公约数的商,作为总帧数;第三计算模块所述多个模型中的每个模型的调度周期分别对所述最大公约数做商,得到每个模型的第一参数;调度模块从第一帧到最后一帧,分别用当前帧的帧序列号分别对每个模型的第一参数进行取余计算,如果结果为0,则将对应的模型的信息放置到当前帧中。由于当前帧能够整除模型的调度周期,所以避免了单独调度每一个模型,实现了统一调度多个模型,从而实现了对并行仿真的多个模型的合理调度,提高了数据的实时仿真功能的准确性。
值得注意的是,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员可以理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。