微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Dymola 中的多线程使用会降低求解速度

如何解决Dymola 中的多线程使用会降低求解速度

在 Dymola2020x 中使用多核功能是否总能加快解决方案的速度?我的观察是将 Advanced.ParallelizeCode=true 用于 DOF~23k 的模型;编译时间与单线程相当,但认求解器的求解时间较慢。

感谢任何评论

解决方法

单个模型的多核功能并不总能加快执行速度。

有多种可能的解释:

  • 依赖太多,根本无法并行化。 (查看翻译日志 - 这很清楚)。
  • 只能并行化模型的一小部分。 (查看翻译日志 - 这需要更多时间)。
  • 该模型使用许多外部函数(或 FMU),默认情况下,Dymola 将它们视为关键部分。 (请参阅 __Dymola_ThreadSafe__Dymola_CriticalRegion 的发行说明和手册)。
  • 在 Dymola 2020x 之前的版本中,您可能需要设置环境变量 OMP_WAIT_POLICY=PASSIVE。 (在您的版本中应该不需要。)

使用 https://www.claytex.com/tech-blog/decouple-blocks-and-model-parallelisation/ 中描述的去耦可以帮助解决前两个问题。

请注意,模型中并行化的替代方法是并行化一系列参数(如果这是您的情况)。这是针对扫描参数自动完成的,并且没有任何这些缺点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。