IMPORTANT: To view this page as Markdown, append `.md` to the URL (e.g. /get-started.md). For the complete documentation index, see llms.txt.
Skip to main content
For the complete documentation index, see llms.txt. Markdown versions of all pages are available by appending .md to any URL (e.g. /get-started.md).

Mojo struct

ConsumerView

struct ConsumerView[origin: MutOrigin, ring_buffer_type: AnyStruct[RingBuffer[ring_buffer_type.dtype, ring_buffer_type.layout, ring_buffer_type.pipeline_stages, ring_buffer_type.block_rows, ring_buffer_type.block_cols, ring_buffer_type.warp_rows, ring_buffer_type.warp_cols, ring_buffer_type.reads_per_warp_block, ring_buffer_type.tile_buffers, ring_buffer_type.sync_strategy_type]], warps_computed_per_consumer: Int]

Consumer view of the unified ring buffer.

Parameters

  • origin (MutOrigin): Memory origin for pointers to the underlying ring buffer.
  • ring_buffer_type (AnyStruct[RingBuffer[ring_buffer_type.dtype, ring_buffer_type.layout, ring_buffer_type.pipeline_stages, ring_buffer_type.block_rows, ring_buffer_type.block_cols, ring_buffer_type.warp_rows, ring_buffer_type.warp_cols, ring_buffer_type.reads_per_warp_block, ring_buffer_type.tile_buffers, ring_buffer_type.sync_strategy_type]]): The RingBuffer type accessed through this view.
  • warps_computed_per_consumer (Int): Number of warps each consumer computes per pipeline stage.

Fields

  • ring_buffer_ptr (ConsumerView[origin, ring_buffer_type, warps_computed_per_consumer].RingBufferPtrType):
  • phases (StaticTuple[Int32, (pipeline_stages * warps_computed_per_consumer)]):

Implemented traits

AnyType, Copyable, Deinitable, ImplicitlyCopyable, Movable, RegisterPassable, TrivialRegisterPassable

comptime members

ConsumerTileType

comptime ConsumerTileType = ConsumerTile[origin, ring_buffer_type, warps_computed_per_consumer]

RingBufferPtrType

comptime RingBufferPtrType = Pointer[ring_buffer_type, origin]

Methods

__init__

def __init__(ring_buffer_ptr: Pointer[ring_buffer_type, origin]) -> Self

__enter__

def __enter__(mut self) -> Self

Context manager entry.

__exit__

def __exit__(mut self)

Context manager exit.

acquire_tiles

def acquire_tiles(mut self, stage: Int, consumer_iteration: Int, warp_tile_idx: Int) -> ring_buffer_type.WarpTileTupleType

Acquire tiles for reading by this consumer.

Args:

  • stage (Int): Pipeline stage to read from.
  • consumer_iteration (Int): Which iteration this consumer is on (0 to warps_computed_per_consumer-1).
  • warp_tile_idx (Int): Which tile this consumer wants to read.

Returns:

ring_buffer_type.WarpTileTupleType

release_tiles

def release_tiles(mut self, stage: Int, warp_tile_idx: Int)

Signal to producers that tile is free.

Args:

  • stage (Int): Pipeline stage of the tile to release.
  • warp_tile_idx (Int): Index of the warp tile within the stage to release.

get_tile

def get_tile(mut self, stage: Int, consumer_iteration: Int, warp_tile_idx: Int) -> Self.ConsumerTileType

Get a context manager for accessing a tile.

Args:

  • stage (Int): Pipeline stage.
  • consumer_iteration (Int): Current iteration of this consumer.
  • warp_tile_idx (Int): Which tile to access.

Returns:

Self.ConsumerTileType