Skip to main content

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:

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:

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?