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
50original62,4822,1090.000op Some(18) OperatorInputs: TensorShape([2, 729, 1152]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 729, 1152]) Amp(Left)
50source62,3202,10835.84,5762,471op Some(18) OperatorInputs: TensorShape([2, 729, 1152]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 729, 1152]) Amp(Left)
50destination5,44111391.511,712122,021op Some(18) OperatorInputs: TensorShape([2, 729, 1152]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 729, 1152]) Amp(Left)
50both5,441113127.216,288124,492op Some(18) OperatorInputs: TensorShape([2, 729, 1152]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 729, 1152]) Amp(Left)
55original303,0421,9130.000op Some(21) OperatorInputs: TensorShape([4304, 1152]) F8F143 { scale_exponent: -4 } Amp(TransposedLeft) -> TensorShape([4304, 1152]) BlockMajor(Matrix { row_block: 192, column_block: 16 })
55source4,14216230.53,9041,696op Some(21) OperatorInputs: TensorShape([4304, 1152]) F8F143 { scale_exponent: -4 } Amp(TransposedLeft) -> TensorShape([4304, 1152]) BlockMajor(Matrix { row_block: 192, column_block: 16 })
55destination4,14216227.03,4561,609op Some(21) OperatorInputs: TensorShape([4304, 1152]) F8F143 { scale_exponent: -4 } Amp(TransposedLeft) -> TensorShape([4304, 1152]) BlockMajor(Matrix { row_block: 192, column_block: 16 })
55both3,0622157.57,3603,305op Some(21) OperatorInputs: TensorShape([4304, 1152]) F8F143 { scale_exponent: -4 } Amp(TransposedLeft) -> TensorShape([4304, 1152]) BlockMajor(Matrix { row_block: 192, column_block: 16 })
122original1,4711,4710.000op Some(41) LayoutRearrangement: TensorShape([2, 1, 4304]) F16 RowMajor -> TensorShape([2, 1, 4304]) RowMajor
122source1,4711,4710.021,471op Some(41) LayoutRearrangement: TensorShape([2, 1, 4304]) F16 RowMajor -> TensorShape([2, 1, 4304]) RowMajor
122destination1,4711,47116.82,1501op Some(41) LayoutRearrangement: TensorShape([2, 1, 4304]) F16 RowMajor -> TensorShape([2, 1, 4304]) RowMajor
122both1,4711,47116.82,1521,472op Some(41) LayoutRearrangement: TensorShape([2, 1, 4304]) F16 RowMajor -> TensorShape([2, 1, 4304]) RowMajor
16original54,5021,4200.000op Some(4) OperatorInputs: TensorShape([2, 729, 1152]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 729, 1152]) Amp(Left)
16source54,3581,41932.24,1282,300op Some(4) OperatorInputs: TensorShape([2, 729, 1152]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 729, 1152]) Amp(Left)
16destination4,7869368.68,784106,503op Some(4) OperatorInputs: TensorShape([2, 729, 1152]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 729, 1152]) Amp(Left)
16both4,78693100.912,912108,803op Some(4) OperatorInputs: TensorShape([2, 729, 1152]) F8F143 { scale_exponent: -4 } Amp(Left) -> TensorShape([2, 729, 1152]) Amp(Left)