并发运行与 Enhanced 模式¶
对于包含大量仿真任务的参数扫描,逐个顺序执行可能会非常耗时。tricys 支持并发运行(并行计算),可以充分利用您计算机的多个 CPU 核心,显著缩短总仿真时间。
此外,TRICYS 引入了 Enhanced 模式,通过“一次编译,多次运行”的策略和高效的数据流式传输,进一步极大地提升了仿真效率和稳定性。
1. 什么是 Enhanced 模式?¶
Enhanced 模式是 tricys 为大规模仿真设计的优化执行模式。它解决了传统 OpenModelica 调用方式在处理成千上万次仿真时遇到的性能瓶颈和内存溢出问题。
核心特性:¶
-
一次编译,多次运行 (Compile Once, Run Many):
- 传统模式: 每次仿真(即使模型相同仅参数不同)都会重新调用 OMC 编译模型。这在小规模任务中可以接受,但在大规模扫描中,编译时间占比极高。
- Enhanced 模式: 程序首先将模型编译成一个独立的可执行文件(Exe/XML),然后并在所有后续任务中直接调用该可执行文件。这消除了重复编译的开销,显著加快了启动速度。
-
HDF5 流式存储 (HDF5 Streaming):
- 传统模式: 每个任务生成独立的 CSV 文件,最后合并。当任务数达到数万时,不仅磁盘 IO 压力巨大,最后的合并过程也极易导致内存溢出 (OOM)。
- Enhanced 模式: 所有并发任务的结果会被实时、流式地写入同一个 HDF5 文件 (
sweep_results.h5)。HDF5 是一种高效的二进制格式,支持在不消耗大量内存的情况下存储海量数据。
-
进程隔离:
- 每个仿真任务仍在独立的进程中运行,确保某个特定参数导致的计算崩溃不会影响主程序的稳定性。
2. 如何启用¶
2.1 命令行快捷启用 (最推荐)¶
启用 Enhanced 模式最方便、快捷的方法是直接在命令行追加 --enhanced 参数。无需修改配置文件,即可立即享受一次编译和 HDF5 带来的性能提升。
该命令会自动覆盖配置文件中的设置,强制开启 Enhanced 模式(包含并发执行)。
2.2 配置文件启用¶
您也可以在配置文件中显式开启 concurrent:
当 concurrent 设置为 true 时,TRICYS 会自动激活 Enhanced 模式。
3. 配置项详解¶
simulation.concurrent¶
- 描述: 是否启用并发运行(并自动激活 Enhanced 模式)。
- 类型: 布尔值 (
true或false)。 - 默认值:
false。
simulation.max_workers¶
- 描述: 控制用于并发执行的最大进程数。
- 类型: 整数 (选填)。
- 默认值: 智能计算 (见下方策略)。
4. 智能并发策略 (Smart Concurrency Strategy)¶
tricys 采用一套智能策略来决定最终使用的进程数,以适应多用户共享服务器场景,确保既能跑满性能,又不会无意中挤占他人资源。
优先级顺序如下:
-
Turbo 模式 (
--turbo):- 如果您在命令行使用了
--turbo标志,程序将无视任何限制,强制使用服务器 100% 的可用 CPU 核心。 - 适用场景: 独占服务器,或者急需快速获得结果。
- 如果您在命令行使用了
-
配置文件指定 (
config.json):- 如果您在配置文件中显式设置了
max_workers(例如"max_workers": 20),程序将严格遵守该数值。 - 适用场景: 需要精确控制资源占用。
- 如果您在配置文件中显式设置了
-
默认安全限制 (Default Safety):
- 如果未开启 Turbo 且未配置 max_workers,程序默认仅使用 50% 的可用 CPU 核心。
- 适用场景: 共享服务器的日常使用,留出资源给其他用户。
-
任务数自动截断 (Task Clamping):
- 这是最终的硬性优化。如果计算出的 worker 数量超过了实际的仿真任务数,程序会自动将 worker 数降低到任务数。
- 示例: 即使您有 128 核服务器,但只跑 5 个仿真任务,程序也只会启动 5 个进程,而不是 128 个。这极大地减少了系统开销。
5. 结果文件差异¶
在启用并发/Enhanced 模式后,结果文件结构略有不同:
- 传统模式: 生成
sweep_results.csv。 - Enhanced 模式: 生成
sweep_results.h5。
tricys 的后处理模块和绘图工具会自动识别并支持读取 HDF5 格式的结果。
从 CSV 到 HDF5
HDF5 相比 CSV 有数量级的读写性能提升。对于包含百万行数据的结果,CSV 解析可能需要几分钟,而 HDF5 为毫秒级。