New invariant for many to many conumer producer lanes
Validate Operations / validate-operations (push) Has been cancelled

This commit is contained in:
ilgeco
2026-07-28 12:10:31 +02:00
parent 2b899b62a8
commit 4c6fc1173e
@@ -225,6 +225,26 @@ compile-time shaping needed for a scheduled consumer must be encoded inside the
corresponding `spat.deferred_communication` body. Phase 2 must not recover
missing graph semantics by inspecting consumers after the deferred operation.
### Consumer and producer lanes are many-to-many
A graph consumer lane may read fragments from several producer lanes. Several
consumer lanes may also read the same producer lane. Therefore:
- consumer and producer batches need not have the same lane count;
- consumer lane `i` must not be assumed to depend on producer lane `i`;
- scheduling dependencies must follow the statically analyzable physical-slot
projections expressed by the consumer body;
- an unproven projection must not silently drop producer dependencies or
reclassify a produced graph value as a host input.
For example, one output-row lane of a `3x3` convolution normally reads up to
three input-row lanes. Output-channel tiling adds another projection dimension:
several output-channel-tile lanes may read the same set of input-row lanes.
When exact projected dependencies cannot be proven, scheduling may conservatively
depend on the complete producer batch, but communication realization must still
preserve the consumer body's actual selection semantics.
## Graph lane, scheduled lane, and physical core are different identities
These concepts must never be conflated: