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. Affine loops are representability estimates, not generated code.

JSON results

PhaseStaging TransfersMax endpoint fragmentsMax scratch KiB/tile Copy cycle floorAffine loops, all tilesProvenance
62original147,7122,0200.000op Some(21) LayoutRearrangement: TensorShape([2, 577, 4096]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 577, 4096]) Amp(Left)
62source147,7122,0208.01,024577op Some(21) LayoutRearrangement: TensorShape([2, 577, 4096]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 577, 4096]) Amp(Left)
62destination8,65511355.17,056138,480op Some(21) LayoutRearrangement: TensorShape([2, 577, 4096]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 577, 4096]) Amp(Left)
62both8,65511363.18,080139,057op Some(21) LayoutRearrangement: TensorShape([2, 577, 4096]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 577, 4096]) Amp(Left)
101original1,0231,0230.000op Some(41) LayoutRearrangement: TensorShape([2, 1, 4096]) F16 RowMajor -> TensorShape([2, 1, 4096]) RowMajor
101source1,0231,0230.021,023op Some(41) LayoutRearrangement: TensorShape([2, 1, 4096]) F16 RowMajor -> TensorShape([2, 1, 4096]) RowMajor
101destination1,0231,02316.02,0461op Some(41) LayoutRearrangement: TensorShape([2, 1, 4096]) F16 RowMajor -> TensorShape([2, 1, 4096]) RowMajor
101both1,0231,02316.02,0481,024op Some(41) LayoutRearrangement: TensorShape([2, 1, 4096]) F16 RowMajor -> TensorShape([2, 1, 4096]) RowMajor
58original45,3751,0000.000op Some(18) OperatorInputs: TensorShape([2, 577, 1024]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 577, 1024]) Amp(Left)
58source41,40697237.04,7364,801op Some(18) OperatorInputs: TensorShape([2, 577, 1024]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 577, 1024]) Amp(Left)
58destination4,8868759.07,55280,530op Some(18) OperatorInputs: TensorShape([2, 577, 1024]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 577, 1024]) Amp(Left)
58both4,2568096.012,28883,102op Some(18) OperatorInputs: TensorShape([2, 577, 1024]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 577, 1024]) Amp(Left)
84original82,5047490.000op Some(35) OperatorInputs: TensorShape([2, 577, 1024]) F16 RowMajor -> TensorShape([16, 577, 128]) RowMajor
84source82,50474911.71,5009,172op Some(35) OperatorInputs: TensorShape([2, 577, 1024]) F16 RowMajor -> TensorShape([16, 577, 128]) RowMajor
84destination82,39974922.02,8165,364op Some(35) OperatorInputs: TensorShape([2, 577, 1024]) F16 RowMajor -> TensorShape([16, 577, 128]) RowMajor
84both80,47971933.54,31614,536op Some(35) OperatorInputs: TensorShape([2, 577, 1024]) F16 RowMajor -> TensorShape([16, 577, 128]) RowMajor