Exchange packing opportunities

Whole-phase staging with unchanged recipient sets and payload bytes. Synthetic addresses; no placement or hardware validation. Copy cycles are optimistic throughput floors, excluding barriers and setup. Scheduler results use ordinary B1024 transfers and synthetic placement; rows are per-phase, before sharing. Affine loops are representability estimates, not generated code.

JSON results

PhaseStaging TransfersMax endpoint fragmentsMax scratch KiB/tile Copy cycle floorAffine loops, all tilesMax row bytesExchange cycles (model)Provenance
62original147,7122,0200.0001677615937op Some(21) LayoutRearrangement: TensorShape([2, 577, 4096]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 577, 4096]) Amp(Left)
62source147,7122,0208.01,0245771677615937op Some(21) LayoutRearrangement: TensorShape([2, 577, 4096]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 577, 4096]) Amp(Left)
62destination8,65511355.17,056138,48097614376op Some(21) LayoutRearrangement: TensorShape([2, 577, 4096]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 577, 4096]) Amp(Left)
62both8,65511363.18,080139,05797614376op Some(21) LayoutRearrangement: TensorShape([2, 577, 4096]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 577, 4096]) Amp(Left)
58original45,3751,0000.000840827446READ/WRITE DEPENDENCIES: staging results invalid. op Some(18) OperatorInputs: TensorShape([2, 577, 1024]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 577, 1024]) Amp(Left)
58source41,53897337.04,7364,801——READ/WRITE DEPENDENCIES: staging results invalid. op Some(18) OperatorInputs: TensorShape([2, 577, 1024]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 577, 1024]) Amp(Left)
58destination5,0188859.07,55280,530——READ/WRITE DEPENDENCIES: staging results invalid. op Some(18) OperatorInputs: TensorShape([2, 577, 1024]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 577, 1024]) Amp(Left)
58both4,3888196.012,28883,102——READ/WRITE DEPENDENCIES: staging results invalid. op Some(18) OperatorInputs: TensorShape([2, 577, 1024]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 577, 1024]) Amp(Left)
84original82,5047490.00060089256op Some(35) OperatorInputs: TensorShape([2, 577, 1024]) F16 RowMajor -> TensorShape([16, 577, 128]) RowMajor
84source82,50474911.71,5009,17260486228op Some(35) OperatorInputs: TensorShape([2, 577, 1024]) F16 RowMajor -> TensorShape([16, 577, 128]) RowMajor
84destination82,39974922.02,8165,36459366220op Some(35) OperatorInputs: TensorShape([2, 577, 1024]) F16 RowMajor -> TensorShape([16, 577, 128]) RowMajor
84both80,47971933.54,31614,53657606218op Some(35) OperatorInputs: TensorShape([2, 577, 1024]) F16 RowMajor -> TensorShape([16, 577, 128]) RowMajor