Distributed Dialect Operations¶
distributed.consume_token (triton::distributed::ConsumeTokenOp)¶
Consumes a token and builds data dependency between wait ops and input.
Syntax:
operation ::= `distributed.consume_token` $input `,` $token `,`
attr-dict `:` type($input) `,` type($token) `->` type($result)
The operator creates a consume node that represents a data dependency between a wait node that produces a token and another node that uses the input data (e.g., load).
Example:
distributed.consume_token() {input, token}
Traits: Elementwise
Interfaces: InferTypeOpInterface, MemoryEffectOpInterface
Operands (distributed.consume_token)¶
Operand |
Description |
|---|---|
|
floating-point or ranked tensor of floating-point values or integer or ranked tensor of integer values or ptr or ranked tensor of ptr values or ptr or Tensor descriptor type ( |
|
integer or ranked tensor of integer values |
Results (distributed.consume_token)¶
Result |
Description |
|---|---|
|
floating-point or ranked tensor of floating-point values or integer or ranked tensor of integer values or ptr or ranked tensor of ptr values or ptr or Tensor descriptor type ( |
distributed.extern_call (triton::distributed::ExternCallOp)¶
Syntax:
operation ::= `distributed.extern_call` operands attr-dict `:` functional-type(operands, $result)
call an external function $symbol implemented in $libpath/$libname with $args return $libpath/$libname:$symbol($args…)
Interfaces: ConditionallySpeculatable, MemoryEffectOpInterface
Attributes (distributed.extern_call)¶
Attribute |
MLIR Type |
Description |
|---|---|---|
|
|
string attribute |
|
|
string attribute |
|
|
string attribute |
|
|
bool attribute |
Operands (distributed.extern_call)¶
Operand |
Description |
|---|---|
|
variadic of floating-point or ranked tensor of floating-point values or integer or ranked tensor of integer values or ptr or ranked tensor of ptr values or ptr |
Results (distributed.extern_call)¶
Result |
Description |
|---|---|
|
variadic of floating-point or ranked tensor of floating-point values or integer or ranked tensor of integer values or ptr or ranked tensor of ptr values or ptr |
distributed.get_num_ranks (triton::distributed::GetNumRanksOp)¶
Get the number of PEs running in the program.
Syntax:
operation ::= `distributed.get_num_ranks` $axis attr-dict `:` type($result)
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable, InferTypeOpInterface, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands (distributed.get_num_ranks)¶
Operand |
Description |
|---|---|
|
32-bit signless integer |
Results (distributed.get_num_ranks)¶
Result |
Description |
|---|---|
|
32-bit signless integer |
distributed.get_rank (triton::distributed::GetRankOp)¶
Rank of the calling PE.
Syntax:
operation ::= `distributed.get_rank` $axis attr-dict `:` type($result)
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable, InferTypeOpInterface, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands (distributed.get_rank)¶
Operand |
Description |
|---|---|
|
32-bit signless integer |
Results (distributed.get_rank)¶
Result |
Description |
|---|---|
|
32-bit signless integer |
distributed.notify (triton::distributed::NotifyOp)¶
Update sigAddr with signalVal using operation sigOp on the specified rank.
Interfaces: MemoryEffectOpInterface
Attributes (distributed.notify)¶
Attribute |
MLIR Type |
Description |
|---|---|---|
|
|
allowed 32-bit signless integer cases: 1, 2. Enum cases: set ( |
|
|
allowed 32-bit signless integer cases: 1, 2, 3. Enum cases: gpu ( |
Operands (distributed.notify)¶
Operand |
Description |
|---|---|
|
ptr |
|
64-bit signless integer |
|
32-bit signless integer |
distributed.symm_at (triton::distributed::SymmAtOp)¶
Obtain the symmetric address on the specified Rank.
Syntax:
operation ::= `distributed.symm_at` $symmAddr `,` $rank `,` attr-dict `:` qualified(type($symmAddr))
Interfaces: InferTypeOpInterface, MemoryEffectOpInterface
Operands (distributed.symm_at)¶
Operand |
Description |
|---|---|
|
ptr |
|
32-bit signless integer |
Results (distributed.symm_at)¶
Result |
Description |
|---|---|
|
ptr |
distributed.wait (triton::distributed::WaitOp)¶
Wait for a signal to be ready (becomes 1) and produce a token.
Syntax:
operation ::= `distributed.wait` $barrierPtr `,` $numBarriers `,` $waitValue `,`
`scope` `=` $scope `semantic` `=` $semantic
attr-dict `:` type($barrierPtr) `,` type($numBarriers) `,` type($waitValue) `->` type($token)
The operator creates a wait node that represents a spin lock waiting
for a list of signals pointed by the barrierPtr to be set ready (set to 1).
Example:
token = distributed.wait() {barrierPtr, num_barriers, scope = 1 : i32, semantic = 0 : i32}
Interfaces: MemoryEffectOpInterface
Attributes (distributed.wait)¶
Attribute |
MLIR Type |
Description |
|---|---|---|
|
|
allowed 32-bit signless integer cases: 1, 2, 3. Enum cases: gpu ( |
|
|
allowed 32-bit signless integer cases: 1, 2, 3, 4. Enum cases: relaxed ( |
Operands (distributed.wait)¶
Operand |
Description |
|---|---|
|
ptr or ranked tensor of ptr values |
|
integer or ranked tensor of integer values |
|
integer |
Results (distributed.wait)¶
Result |
Description |
|---|---|
|
integer or ranked tensor of integer values |