cuTile's memory model allows the compiler and hardware to reorder operations to optimize performance. Because of this, memory access ordering across different blocks is not guaranteed unless explicit synchronization is used.
To coordinate memory accesses between blocks, cuTile uses two attributes for atomic operations:
- Memory Order: Defines the ordering semantics of an atomic operation.
- Memory Scope: Defines the set of
blocks that participate in the ordering.
Synchronization in cuTile is performed at a per-element granularity, meaning each element in an array participates in the memory model independently.