New invariant for many to many conumer producer lanes
Validate Operations / validate-operations (push) Has been cancelled
Validate Operations / validate-operations (push) Has been cancelled
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user