跳转至

并发运行与 Enhanced 模式

对于包含大量仿真任务的参数扫描,逐个顺序执行可能会非常耗时。tricys 支持并发运行(并行计算),可以充分利用您计算机的多个 CPU 核心,显著缩短总仿真时间。

此外,TRICYS 引入了 Enhanced 模式,通过“一次编译,多次运行”的策略和高效的数据流式传输,进一步极大地提升了仿真效率和稳定性。

1. 什么是 Enhanced 模式?

Enhanced 模式是 tricys 为大规模仿真设计的优化执行模式。它解决了传统 OpenModelica 调用方式在处理成千上万次仿真时遇到的性能瓶颈和内存溢出问题。

核心特性:

  1. 一次编译,多次运行 (Compile Once, Run Many):

    • 传统模式: 每次仿真(即使模型相同仅参数不同)都会重新调用 OMC 编译模型。这在小规模任务中可以接受,但在大规模扫描中,编译时间占比极高。
    • Enhanced 模式: 程序首先将模型编译成一个独立的可执行文件(Exe/XML),然后并在所有后续任务中直接调用该可执行文件。这消除了重复编译的开销,显著加快了启动速度。
  2. HDF5 流式存储 (HDF5 Streaming):

    • 传统模式: 每个任务生成独立的 CSV 文件,最后合并。当任务数达到数万时,不仅磁盘 IO 压力巨大,最后的合并过程也极易导致内存溢出 (OOM)。
    • Enhanced 模式: 所有并发任务的结果会被实时、流式地写入同一个 HDF5 文件 (sweep_results.h5)。HDF5 是一种高效的二进制格式,支持在不消耗大量内存的情况下存储海量数据。
  3. 进程隔离:

    • 每个仿真任务仍在独立的进程中运行,确保某个特定参数导致的计算崩溃不会影响主程序的稳定性。

2. 如何启用

2.1 命令行快捷启用 (最推荐)

启用 Enhanced 模式最方便、快捷的方法是直接在命令行追加 --enhanced 参数。无需修改配置文件,即可立即享受一次编译和 HDF5 带来的性能提升。

tricys -c config.json --enhanced

该命令会自动覆盖配置文件中的设置,强制开启 Enhanced 模式(包含并发执行)。

2.2 配置文件启用

您也可以在配置文件中显式开启 concurrent

{
    "simulation": {
        "model_name": "example_model.Cycle",
        ...
        "concurrent": true,
        "max_workers": 4
    }
}

concurrent 设置为 true 时,TRICYS 会自动激活 Enhanced 模式。

3. 配置项详解

simulation.concurrent

  • 描述: 是否启用并发运行(并自动激活 Enhanced 模式)。
  • 类型: 布尔值 (truefalse)。
  • 默认值: false

simulation.max_workers

  • 描述: 控制用于并发执行的最大进程数。
  • 类型: 整数 (选填)。
  • 默认值: 智能计算 (见下方策略)。

4. 智能并发策略 (Smart Concurrency Strategy)

tricys 采用一套智能策略来决定最终使用的进程数,以适应多用户共享服务器场景,确保既能跑满性能,又不会无意中挤占他人资源。

优先级顺序如下:

  1. Turbo 模式 (--turbo):

    • 如果您在命令行使用了 --turbo 标志,程序将无视任何限制,强制使用服务器 100% 的可用 CPU 核心
    • 适用场景: 独占服务器,或者急需快速获得结果。
  2. 配置文件指定 (config.json):

    • 如果您在配置文件中显式设置了 max_workers (例如 "max_workers": 20),程序将严格遵守该数值。
    • 适用场景: 需要精确控制资源占用。
  3. 默认安全限制 (Default Safety):

    • 如果未开启 Turbo 且未配置 max_workers,程序默认仅使用 50% 的可用 CPU 核心
    • 适用场景: 共享服务器的日常使用,留出资源给其他用户。
  4. 任务数自动截断 (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 为毫秒级。