Перейти к содержанию

Execution plan

3.8 План исполнения ExecutionPlan

Для ускорения форвард-прохода DAG компилируется один раз в структуру ExecutionPlan:

Поле Смысл
input_slots Пары (view_index, slot_index) для входных вершин
merge_steps Упорядоченный список MergeNodeStep(dst, pool_h, pool_w, edges[])
output_slot Индекс слота выходной вершины
output_pool_h/w Финальный целевой размер \((H_\text{out}, W_\text{out})\)
is_empty Флаг «граф не исполняется»

Каждый MergeNodeStep содержит список ConvEdgeStep(src_slot, conv_name) — ссылки на зарегистрированные nn.Conv2d модули.

Инвалидация кэша: при structural rebuild (split/add/remove/crossover) счётчик plan_version инкрементируется, что сбрасывает кэш forward runtime (WeakKeyDictionary).

PlannedForwardBody — отсоединённый nn.Module (weakref на родителя) для torch.compile / CUDA Graphs без циклических ссылок.

Сложность форварда: \(O(|E_\text{active}|)\) операций Conv2d + \(O(|V|)\) операций стека/среднего.