Mojo struct
InputConsumer
@register_passable(trivial)
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
__copyinit__is_trivial
comptime __copyinit__is_trivial = True
__del__is_trivial
comptime __del__is_trivial = True
__moveinit__is_trivial
comptime __moveinit__is_trivial = True
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) -> InputConsumerStage[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:
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) -> InputConsumerStage[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:
InputConsumerStage: The consumer stage for processing tiles.
Was this page helpful?
Thank you! We'll create more content like this.
Thank you for helping us improve!