pub fn compose_phased(
sections: Vec<SpatialProgram>,
links: &[Link],
state: &[String],
placement: SectionPlacement,
barrier_after: Option<&[bool]>,
target: &SpatialTarget,
) -> Result<SpatialProgram, ComposeReject>Expand description
compose with the barriers named: barrier_after[k] closes section k with a rendezvous, and a section left
open runs CONCURRENTLY with the one after it — sections on disjoint chips with no data between them, a phase of a
tensor-parallel step. None closes every section but the last.
★ ONE BARRIER ORDERS EVERYTHING ACROSS IT. A rendezvous after section b holds every op of every section after
b until every op of every section up to b is done, so two sections are ordered by ANY barrier between them —
which is what the certificate’s ordering obligations check — and a boundary with no data across it needs none.