Mojo trait
BarrierHandler
Handles barrier lifecycle for different transfer mechanisms.
Separates barrier management from tile loading:
- prepare_stage: Called once before loading tiles for a stage.
- complete_stage: Called once after all tiles for a stage are loaded.
TMA: prepare sets expected bytes, complete is noop (hardware signals). cp.async: prepare is noop, complete commits copies and signals arrival.
Implemented traits
AnyType,
Copyable,
ImplicitlyCopyable,
ImplicitlyDestructible,
Movable,
RegisterPassable,
TrivialRegisterPassable
Required methods
__init__
__init__(out self: _Self, *, copy: _Self)
Create a new instance of the value by copying an existing one.
Args:
- copy (
_Self): The value to copy.
Returns:
_Self
__init__(out self: _Self, *, deinit take: _Self)
Create a new instance of the value by moving the value of another.
Args:
- take (
_Self): The value to move.
Returns:
_Self
prepare_stage
prepare_stage(self: _Self, mem_barrier: UnsafePointer[SharedMemBarrier, MutAnyOrigin, address_space=AddressSpace.SHARED])
Prepare barrier for incoming transfers.
For TMA: sets expected transaction bytes. For cp.async: noop.
Args:
- mem_barrier (
UnsafePointer): The stage's memory barrier.
complete_stage
complete_stage(self: _Self, mem_barrier: UnsafePointer[SharedMemBarrier, MutAnyOrigin, address_space=AddressSpace.SHARED])
Signal that all transfers for this stage are done.
For TMA: noop (hardware auto-signals). For cp.async: commits pending copies and signals thread arrival.
Args:
- mem_barrier (
UnsafePointer): The stage's memory barrier.
Provided methods
copy
copy(self: _Self) -> _Self
Explicitly construct a copy of self, a convenience method for Self(copy=self) when the type is inconvenient to write out.
Returns:
_Self: A copy of this value.
Was this page helpful?
Thank you! We'll create more content like this.
Thank you for helping us improve!