Перейти к содержимому

Copy-on-Write изоляция

Когда шаги выполняются параллельно, каждому нужно своё представление памяти, чтобы «братья» не перетирали данные друг друга. CARL делает это с помощью хранилища copy-on-write (COW) вместо глубокого копирования всей памяти для каждого шага.

  • Каждый параллельный шаг видит память в том состоянии, в котором она была на начало его батча.
  • Записи шага не видны его параллельным «братьям» — только последующим батчам.
  • Инструменты, разделяемые между параллельными шагами, должны быть без состояния (они разделяются через поверхностную копию).

Это работает автоматически — ничего настраивать не нужно. Это просто делает параллельное выполнение корректным и дешевле, чем полное глубокое копирование.

Размеры памяти и истории по каждому шагу записываются в StepExecutionResult.profiling (ключи memory_bytes_after, history_bytes_after, history_bytes_added) и агрегируются методом result.get_profiling_summary() — так вы видите, как растёт память по ходу запуска.