Skip to main content

Mojo struct

InputConsumer

struct InputConsumer[origin: MutOrigin, Payload: TilePayload, num_group_stages: Int, k_group_size: Int]

Consumer view for MMA warp. Use acquire() to get stages.

Fields

  • pipeline_ptr (Pointer[InputConsumer[origin, Payload, num_group_stages, k_group_size].PipelineType, origin]):

Implemented traits

AnyType, Copyable, ImplicitlyCopyable, ImplicitlyDestructible, Movable, RegisterPassable, TrivialRegisterPassable

comptime members

PipelineType

comptime PipelineType = InputTilePipeline[Payload, num_group_stages, k_group_size]

Methods

__enter__

__enter__(mut self) -> Self

__exit__

__exit__(mut self)

acquire

acquire(mut self) -> ConsumerTiles[origin, Payload, num_group_stages, k_group_size]

Acquire next stage, waiting for tiles to be ready.

Returns a context manager for processing tiles.

Returns:

ConsumerTiles

acquire_stage

acquire_stage(mut self) -> InputConsumerStage[origin, Payload, num_group_stages, k_group_size]

Acquire next stage as a linear type, waiting for tiles to be ready.

Returns a compiler-enforced linear type that must be explicitly released via tiles^.release().

Returns:

InputConsumerStage

try_acquire

try_acquire(mut self) -> Bool

Non-blocking check if next consumer stage has data.

Use with acquire_if_needed() for the try-acquire pattern:

var ready = consumer.try_acquire()
# ... do other work ...
with consumer.acquire_if_needed(ready) as tiles:
    process_tiles()

Returns:

Bool: True if the stage has data, False if waiting is needed.

acquire_if_needed

acquire_if_needed(mut self, already_ready: Bool) -> ConsumerTiles[origin, Payload, num_group_stages, k_group_size]

Acquire stage, only waiting if not already ready.

Args:

  • already_ready (Bool): Result from try_acquire(). Skips wait if True.

Returns:

ConsumerTiles: Context manager wrapping the consumer stage.

Was this page helpful?