transport.await (::catalyst::transport::AwaitOp)

Await an asynchronous bring-up step.

Syntax:

operation ::= `transport.await` $token attr-dict `:` type($token)

Interfaces: MemoryEffectOpInterface (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

Operands:

Operand

Description

token

A handle to an in-flight asynchronous step, awaited with transport.await.

transport.collect (::catalyst::transport::CollectOp)

Receive the current round’s reply.

Syntax:

operation ::= `transport.collect` $session (`,` $dest^)? attr-dict `:` qualified(type($session))
              (`,` type($dest)^)? (`->` type($result)^)?

Receives the current round’s reply in one of two forms: a value form that returns it as a tensor $result, or a destination-passing form that writes it into the $dest buffer. The buffer shape gives the expected reply size.

Interfaces: MemoryEffectOpInterface (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

Operands:

Operand

Description

session

An opaque transport session handle, tagged with its role.

dest

1D memref of 1-bit signless integer or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer or 64-bit signless integer or index values

Results:

Result

Description

result

1D tensor of 1-bit signless integer or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer or 64-bit signless integer or index values

transport.connect_async (::catalyst::transport::ConnectAsyncOp)

Non-blocking connect; await the token with transport.await.

Syntax:

operation ::= `transport.connect_async` $session attr-dict `:` qualified(type($session)) `->` type($token)

Interfaces: MemoryEffectOpInterface (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

Attributes:

AttributeMLIR TypeDescription
peer::mlir::StringAttrstring attribute
oob_port::mlir::IntegerAttr16-bit unsigned integer attribute

Operands:

Operand

Description

session

An opaque transport session handle, tagged with its role.

Results:

Result

Description

token

A handle to an in-flight asynchronous step, awaited with transport.await.

transport.connect (::catalyst::transport::ConnectOp)

Connect to the peer (blocking).

Syntax:

operation ::= `transport.connect` $session attr-dict `:` qualified(type($session))

Interfaces: MemoryEffectOpInterface (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

Attributes:

AttributeMLIR TypeDescription
peer::mlir::StringAttrstring attribute
oob_port::mlir::IntegerAttr16-bit unsigned integer attribute

Operands:

Operand

Description

session

An opaque transport session handle, tagged with its role.

transport.create (::catalyst::transport::CreateOp)

Create a transport session for a role.

Syntax:

operation ::= `transport.create` attr-dict `->` qualified(type($session))

Creates a session on the backend selected by backend_lib and config; the result type’s role picks controller or coprocessor. When key is set, the session is registered under it so transport.get_session can resolve it from another function.

Interfaces: MemoryEffectOpInterface (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

Attributes:

AttributeMLIR TypeDescription
backend_lib::mlir::StringAttrstring attribute
config::mlir::StringAttrstring attribute
key::mlir::StringAttrstring attribute

Results:

Result

Description

session

An opaque transport session handle, tagged with its role.

transport.destroy (::catalyst::transport::DestroyOp)

Destroy the session and release it.

Syntax:

operation ::= `transport.destroy` $session attr-dict `:` qualified(type($session))

Interfaces: MemoryEffectOpInterface (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

Operands:

Operand

Description

session

An opaque transport session handle, tagged with its role.

transport.establish_channel (::catalyst::transport::EstablishChannelOp)

Arm the channel for the given transport.

Syntax:

operation ::= `transport.establish_channel` $session $transport attr-dict `:` qualified(type($session))

Prepares the channel selected by transport for the rounds that follow. Runs after exchange_keys and before post/collect.

Interfaces: MemoryEffectOpInterface (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

Attributes:

AttributeMLIR TypeDescription
transport::mlir::StringAttrstring attribute

Operands:

Operand

Description

session

An opaque transport session handle, tagged with its role.

transport.exchange_keys_async (::catalyst::transport::ExchangeKeysAsyncOp)

_Non-blocking exchangekeys; await the token with transport.await.

Syntax:

operation ::= `transport.exchange_keys_async` $session attr-dict `:` qualified(type($session)) `->` type($token)

Interfaces: MemoryEffectOpInterface (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

Operands:

Operand

Description

session

An opaque transport session handle, tagged with its role.

Results:

Result

Description

token

A handle to an in-flight asynchronous step, awaited with transport.await.

transport.exchange_keys (::catalyst::transport::ExchangeKeysOp)

Exchange memory-region handles with the peer (blocking).

Syntax:

operation ::= `transport.exchange_keys` $session attr-dict `:` qualified(type($session))

Interfaces: MemoryEffectOpInterface (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

Operands:

Operand

Description

session

An opaque transport session handle, tagged with its role.

transport.get_session (::catalyst::transport::GetSessionOp)

Resolve a session by role and key.

Syntax:

operation ::= `transport.get_session` attr-dict `:` qualified(type($session))

Returns the session that transport.create registered under (role, key), where the role is taken from the result type. Lets a session created in one function be used in another without passing it as a value.

Interfaces: MemoryEffectOpInterface (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

Attributes:

AttributeMLIR TypeDescription
key::mlir::StringAttrstring attribute

Results:

Result

Description

session

An opaque transport session handle, tagged with its role.

transport.last_rtt_ns (::catalyst::transport::LastRttNsOp)

Round-trip time of the last round, in nanoseconds.

Syntax:

operation ::= `transport.last_rtt_ns` $session attr-dict `:` qualified(type($session)) `->` type($rtt_ns)

Interfaces: MemoryEffectOpInterface (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

Operands:

Operand

Description

session

An opaque transport session handle, tagged with its role.

Results:

Result

Description

rtt_ns

64-bit signless integer

transport.post (::catalyst::transport::PostOp)

Post this round’s payload (controller).

Syntax:

operation ::= `transport.post` $session attr-dict `:` qualified(type($session))

Transmits the payload transport.stage_payload put in the request slot.

Interfaces: MemoryEffectOpInterface (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

Attributes:

AttributeMLIR TypeDescription
work_item_idx::mlir::IntegerAttr32-bit signless integer attribute

Operands:

Operand

Description

session

controller transport session

transport.reply_slot (::catalyst::transport::ReplySlotOp)

This round’s slot in the transport-owned reply ring (controller).

Syntax:

operation ::= `transport.reply_slot` $session attr-dict `:` qualified(type($session)) `->` type($slot)

The peer writes its reply here. Handing this to transport.collect. The slot is reused every ring wrap, so a consumer has to read it before the next round.

Interfaces: MemoryEffectOpInterface (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

Operands:

Operand

Description

session

controller transport session

Results:

Result

Description

slot

1D memref of 1-bit signless integer or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer or 64-bit signless integer or index values

transport.set_coprocessor_fn (::catalyst::transport::SetCoprocessorFnOp)

Bind the function the coprocessor runs.

Syntax:

operation ::= `transport.set_coprocessor_fn` $session attr-dict `:` qualified(type($session))

Binds the function the coprocessor applies to received messages before replying. symbol is the name the coprocessor resolves and invokes; an empty symbol selects a default.

Whether that function is invoked per message or once at start to launch a persistent engine belongs to the backend. The runtime binds through whichever of the two the backend implements.

Interfaces: MemoryEffectOpInterface (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

Attributes:

AttributeMLIR TypeDescription
symbol::mlir::StringAttrstring attribute

Operands:

Operand

Description

session

coprocessor transport session

transport.set_message_sizes (::catalyst::transport::SetMessageSizesOp)

Declare how big a round’s request and reply are (controller).

Syntax:

operation ::= `transport.set_message_sizes` $session attr-dict `:` qualified(type($session))

Called once at bring-up. work_item_idx selects which of the backend’s pre-programmed transfer descriptors this describes

Interfaces: MemoryEffectOpInterface (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

Attributes:

AttributeMLIR TypeDescription
work_item_idx::mlir::IntegerAttr32-bit signless integer attribute
in_bytes::mlir::IntegerAttr64-bit signless integer attribute
out_bytes::mlir::IntegerAttr64-bit signless integer attribute

Operands:

Operand

Description

session

controller transport session

transport.stage_payload (::catalyst::transport::StagePayloadOp)

Stage a payload into this round’s request slot (controller).

Syntax:

operation ::= `transport.stage_payload` $session `,` $payload attr-dict `:` qualified(type($session)) `,` type($payload)

Writes through the backend, which knows how its slot memory has to be written.

decoder_id addresses the round at one of the peer’s decoders. It travels in the frame beside the payload, so it is staged with the payload rather than given to the send.

Interfaces: MemoryEffectOpInterface (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

Attributes:

AttributeMLIR TypeDescription
decoder_id::mlir::IntegerAttr32-bit signless integer attribute

Operands:

Operand

Description

session

controller transport session

payload

1D memref of 1-bit signless integer or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer or 64-bit signless integer or index values or 1D tensor of 1-bit signless integer or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer or 64-bit signless integer or index values

transport.start (::catalyst::transport::StartOp)

Start the session; runs until stop (non-blocking).

Syntax:

operation ::= `transport.start` $session attr-dict `:` qualified(type($session))

Interfaces: MemoryEffectOpInterface (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

Operands:

Operand

Description

session

An opaque transport session handle, tagged with its role.

transport.stop (::catalyst::transport::StopOp)

Stop the session (idempotent).

Syntax:

operation ::= `transport.stop` $session attr-dict `:` qualified(type($session))

Interfaces: MemoryEffectOpInterface (MemoryEffectOpInterface)

Effects: MemoryEffects::Effect{MemoryEffects::Write on ::mlir::SideEffects::DefaultResource}

Operands:

Operand

Description

session

An opaque transport session handle, tagged with its role.