Copy-on-Write изоляция
Когда шаги выполняются параллельно, каждому нужно своё представление памяти, чтобы «братья» не перетирали данные друг друга. CARL делает это с помощью хранилища copy-on-write (COW) вместо глубокого копирования всей памяти для каждого шага.
Что важно знать
Заголовок раздела «Что важно знать»- Каждый параллельный шаг видит память в том состоянии, в котором она была на начало его батча.
- Записи шага не видны его параллельным «братьям» — только последующим батчам.
- Инструменты, разделяемые между параллельными шагами, должны быть без состояния (они разделяются через поверхностную копию).
Это работает автоматически — ничего настраивать не нужно. Это просто делает параллельное выполнение корректным и дешевле, чем полное глубокое копирование.
Профилирование
Заголовок раздела «Профилирование»Размеры памяти и истории по каждому шагу записываются в StepExecutionResult.profiling
(ключи memory_bytes_after, history_bytes_after, history_bytes_added) и агрегируются
методом result.get_profiling_summary() — так вы видите, как растёт память по ходу запуска.
Смотрите также
Заголовок раздела «Смотрите также»- Асинхронное выполнение — модель параллелизма.
- Обзор памяти