Dymola 中的多线程使用会降低求解速度
Multi-thread usage in Dymola slow down solution speed
在 Dymola2020x 中使用多核功能是否总能加快求解速度?我的观察是对 DOF~23k 的模型使用 Advanced.ParallelizeCode=true;编译时间与单线程相当,但默认求解器的求解时间较慢。
如有任何意见,我们将不胜感激!
单个模型的多核功能并不总能加快执行速度。
有多种可能的解释:
- 依赖项太多,根本无法并行化。 (看看翻译日志-这很清楚)。
- 只能并行化模型的一小部分。 (查看翻译日志 - 这需要更多时间)。
- 该模型使用许多外部函数(或 FMU),默认情况下 Dymola 将它们视为关键部分。 (请参阅
__Dymola_ThreadSafe
和 __Dymola_CriticalRegion
的发行说明和手册)。
- 在 Dymola 2020x 之前的版本中,您可能必须设置环境变量
OMP_WAIT_POLICY=PASSIVE
。 (您的版本中不需要。)
使用 https://www.claytex.com/tech-blog/decouple-blocks-and-model-parallelisation/ 中描述的解耦可以帮助解决前两个问题。
请注意,模型中并行化的替代方法是并行化一系列参数(如果这是您的方案)。这是针对扫描参数自动完成的,没有任何这些缺点。
在 Dymola2020x 中使用多核功能是否总能加快求解速度?我的观察是对 DOF~23k 的模型使用 Advanced.ParallelizeCode=true;编译时间与单线程相当,但默认求解器的求解时间较慢。
如有任何意见,我们将不胜感激!
单个模型的多核功能并不总能加快执行速度。
有多种可能的解释:
- 依赖项太多,根本无法并行化。 (看看翻译日志-这很清楚)。
- 只能并行化模型的一小部分。 (查看翻译日志 - 这需要更多时间)。
- 该模型使用许多外部函数(或 FMU),默认情况下 Dymola 将它们视为关键部分。 (请参阅
__Dymola_ThreadSafe
和__Dymola_CriticalRegion
的发行说明和手册)。 - 在 Dymola 2020x 之前的版本中,您可能必须设置环境变量
OMP_WAIT_POLICY=PASSIVE
。 (您的版本中不需要。)
使用 https://www.claytex.com/tech-blog/decouple-blocks-and-model-parallelisation/ 中描述的解耦可以帮助解决前两个问题。
请注意,模型中并行化的替代方法是并行化一系列参数(如果这是您的方案)。这是针对扫描参数自动完成的,没有任何这些缺点。