在一次并行计算过程中,需要利用parsim()函数将一个Simulink Modell在不同参数配置下多次运行,结果多次报错,而且报错的行为尤为诡异。当时运行的是一个电动汽车的模型,每次涉及到修改前后轴电机数量的时候,如果其中之一为0,则特别容易报错。可是单独运行该配置的时候又非常好,为了这个问题困扰了好几天,直到看到这个帖子:
http://xilinx.eetrend.com/d6-xilinx/article/2017-09/12002.html
其中介绍parsim()的用法时说到,“使用 UseFastRestart 来进一步加速仿真后,模型在每一个 worker 上只会编译以及初始化一次。” 我才恍然大悟,原来之前模型的设计者为了求快,将UseFastRestart打开了,结果导致在并行计算中,模型并没有重新初始化,于是当遇到某轴电机数量为0时就容易报错。如此简单的原因竟然困扰了我那么久。
需要说明的是,UseFastRestart并不是一直不能用,只是涉及到修改模型本身的时候不能用,如果不需要修改模型本身,只是调整已有组件的参数值大小,那是没问题的。