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
ProducerStage
struct ProducerStage[pipeline_origin: MutOrigin, num_stages: Int, Backend: PipelineBackend = NvidiaMbarBackend[num_stages]]
Unified handle for producing to a pipeline stage.
Works as both a linear type (direct use) and within context managers.
Lifecycle:
- Created via
pipeline.acquire_producer()or context manager - Use
index()andmbar()for production - Must call
release()to advance stage (compiler-enforced)
Parameters
- pipeline_origin (
MutOrigin): Origin of the pipeline reference. - num_stages (
Int): Number of pipeline stages. - Backend (
PipelineBackend): The synchronization backend (seeProducerConsumerPipeline).
Fields
- pipeline (
Pointer[ProducerConsumerPipeline[num_stages, Backend], pipeline_origin]):
Implemented traits
Methods
__init__
def __init__(out self, pipeline: Pointer[ProducerConsumerPipeline[num_stages, Backend], pipeline_origin], index: UInt32)
index
mbar
def mbar(self) -> Backend.Handle
Get the barrier to signal when production is complete.
Caller is responsible for signaling via mma_arrive or similar.
Returns:
Backend.Handle
release
def release(deinit self)
Advance producer to next stage.
This is the only way to destroy this linear type. The compiler will error if you don't call this.