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