Multithreading Dymola中的多线程使用会降低解决方案速度
在Dymola2020x中使用多核功能是否总能加快解决方案的速度?我的观察结果是使用Advanced.ParallelizeCode=true,用于DOF~23k的模型;编译时间与单线程相当,但是使用默认解算器的解算时间较慢Multithreading Dymola中的多线程使用会降低解决方案速度,multithreading,multicore,modelica,dymola,Multithreading,Multicore,Modelica,Dymola,在Dymola2020x中使用多核功能是否总能加快解决方案的速度?我的观察结果是使用Advanced.ParallelizeCode=true,用于DOF~23k的模型;编译时间与单线程相当,但是使用默认解算器的解算时间较慢 任何意见都将不胜感激 单个模型的多核功能并不总是能够加快执行速度 有许多可能的解释: 依赖关系太多,根本不可能并行化。(查看翻译日志-这相当清楚) 只能并行化模型的一小部分。(查看翻译日志-这需要更多时间) 该模型使用许多外部功能(或FMU),默认情况下,Dymola将其
任何意见都将不胜感激 单个模型的多核功能并不总是能够加快执行速度 有许多可能的解释:
- 依赖关系太多,根本不可能并行化。(查看翻译日志-这相当清楚)
- 只能并行化模型的一小部分。(查看翻译日志-这需要更多时间)
- 该模型使用许多外部功能(或FMU),默认情况下,Dymola将其视为关键部分。(请参阅有关
和\uuuuudymola\u螺纹安全的发行说明和手册
)\uuuuudymola\u临界区域
- 在Dymola 2020x之前的版本中,可能必须设置环境变量
。(在您的版本中不需要。)OMP\u WAIT\u POLICY=PASSIVE
请注意,模型内并行化的替代方法是并行化参数扫描(如果这是您的场景)。对于扫描参数,这是自动完成的,没有任何这些缺点。并行化只会在系统属性允许的情况下提高性能。这似乎是一个值得一读的总结: