Dymola 中的并行模拟设置

Mar*_*vel 1 modelica dymola

我正在 Dymola 中构建一个大型系统,我计划利用 Dymola 中的并行模拟潜力,但我只在帮助文档中找到两个常规设置。

我的问题是:

  1. 我可以在 Dymola 中使用其他设置以使代码运行得更快吗?
  2. 在我的模型代码中,是否有任何方法可以让模型以并行模式运行?例如,我知道 MATLAB 代码风格使用向量,那么这是否意味着在 Modelica 中我也应该使用向量?

在此输入图像描述

在此输入图像描述

Han*_*son 5

-flagAdvanced.ParallelizeCode确实生成并行运行的代码(希望检查日志),而 Matlab 中的矢量化在这里没有帮助(它甚至可能会导致问题)。

你可以做的是:

  • 如用户手册 1B 部分中所述,在检查并行代码中的外部函数annotation(__Dymola_ThreadSafe=true);是否是线程安全后,将其添加到被调用的函数中。
  • 尝试确保存在某种形式的动力学将模型的不同部分分开。
  • 如果不可能自然地并行处理不同的部分,您可以使用解耦运算符(查看dymola\Modelica\Libraries\DecoupleBlocks.mo);但首先要小心验证结果。

该标志Advaned.ParallelSimulations似乎与这种情况无关,因为它并行运行具有不同参数值的整个模拟(更粗粒度)。如果您一次只运行一个模拟,则不会带来任何好处。

但是,如果您可以改为使用它,那么通常是一个更好的主意- 然后您应该(通常)不启用其他并行化变体。

  • 一个非常普遍的建议是尽可能使用方程,而不是算法。Dymola 等工具可以更自由地处理方程以生成高效的代码。 (3认同)