Skip to content

kernel.async.cluster.gather

kernel dialect

Initiate a workgroup-cluster asynchronous load from a global-like source view into a workgroup/shared-memory destination view. The required i32 cluster_mask is a semantic participant set: bit N names flat cluster rank N, with x as the minor dimension. Source and destination must have the same static byte footprint, and that footprint must be exactly 1, 4, 8, or 16 bytes. Every named participant must execute the operation in the same dynamic order with corresponding lane-local source and destination addresses. Target lowering maps the participant set, addresses, and cache policy to the selected machine protocol. The returned token must be committed to exactly one kernel.async.group.

Operation contract

Property Value
Semantic phase
Target contracts kernel.async
Memory effects read source, write dest

Signature

Kind Name Type Cardinality Description
Operand source view required Global-like source fragment broadcast across the cluster.
Operand dest view required Workgroup/LDS destination fragment for this workgroup.
Operand cluster_mask integer required i32 set of participating flat workgroup-cluster ranks.
Result token any required Opaque async-copy token for the cluster gather.
Attribute cache_scope enum CacheScope required Required cache/coherency scope for the transfer.
Attribute cache_temporal enum CacheTemporal required Required temporal cache hint for the transfer.

Examples

%copy = kernel.async.cluster.gather %src to %lds using %mask {cache_scope = se, cache_temporal = high_temporal} : view<16xi8> to view<16xi8>, i32 -> kernel.async.token