mirror of
https://github.com/zama-ai/concrete.git
synced 2026-01-09 12:57:55 -05:00
239 lines
5.4 KiB
Markdown
239 lines
5.4 KiB
Markdown
<!-- Autogenerated by mlir-tblgen; don't manually edit -->
|
|
# 'SDFG' Dialect
|
|
|
|
Dialect for the construction of static data flow graphs
|
|
A dialect for the construction of static data flow graphs. The
|
|
data flow graph is composed of a set of processes, connected
|
|
through data streams. Special streams allow for data to be
|
|
injected into and to be retrieved from the data flow graph.
|
|
|
|
|
|
|
|
## Operation definition
|
|
|
|
### `SDFG.get` (::mlir::concretelang::SDFG::Get)
|
|
|
|
Retrieves a data element from a stream
|
|
|
|
Retrieves a single data element from the specified stream
|
|
(i.e., an instance of the element type of the stream).
|
|
|
|
Example:
|
|
```mlir
|
|
"SDFG.get" (%stream) : (!SDFG.stream<1024xi64>) -> (tensor<1024xi64>)
|
|
```
|
|
|
|
#### Operands:
|
|
|
|
| Operand | Description |
|
|
| :-----: | ----------- |
|
|
| `stream` | An SDFG data stream
|
|
|
|
#### Results:
|
|
|
|
| Result | Description |
|
|
| :----: | ----------- |
|
|
| `data` | any type
|
|
|
|
### `SDFG.init` (::mlir::concretelang::SDFG::Init)
|
|
|
|
Initializes the streaming framework
|
|
|
|
Initializes the streaming framework. This operation must be
|
|
performed before control reaches any other operation from the
|
|
dialect.
|
|
|
|
Example:
|
|
```mlir
|
|
"SDFG.init" : () -> !SDFG.dfg
|
|
```
|
|
|
|
#### Results:
|
|
|
|
| Result | Description |
|
|
| :----: | ----------- |
|
|
«unnamed» | An SDFG data flow graph
|
|
|
|
### `SDFG.make_process` (::mlir::concretelang::SDFG::MakeProcess)
|
|
|
|
Creates a new SDFG process
|
|
|
|
Creates a new SDFG process and connects it to the input and
|
|
output streams.
|
|
|
|
Example:
|
|
```mlir
|
|
%in0 = "SDFG.make_stream" { type = #SDFG.stream_kind<host_to_device> }(%dfg) : (!SDFG.dfg) -> !SDFG.stream<tensor<1024xi64>>
|
|
%in1 = "SDFG.make_stream" { type = #SDFG.stream_kind<host_to_device> }(%dfg) : (!SDFG.dfg) -> !SDFG.stream<tensor<1024xi64>>
|
|
%out = "SDFG.make_stream" { type = #SDFG.stream_kind<device_to_host> }(%dfg) : (!SDFG.dfg) -> !SDFG.stream<tensor<1024xi64>>
|
|
"SDFG.make_process" { type = #SDFG.process_kind<add_eint> }(%dfg, %in0, %in1, %out) :
|
|
(!SDFG.dfg, !SDFG.stream<tensor<1024xi64>>, !SDFG.stream<tensor<1024xi64>>, !SDFG.stream<tensor<1024xi64>>) -> ()
|
|
```
|
|
|
|
#### Attributes:
|
|
|
|
| Attribute | MLIR Type | Description |
|
|
| :-------: | :-------: | ----------- |
|
|
| `type` | ::mlir::concretelang::SDFG::ProcessKindAttr | Process kind
|
|
|
|
#### Operands:
|
|
|
|
| Operand | Description |
|
|
| :-----: | ----------- |
|
|
| `dfg` | An SDFG data flow graph
|
|
| `streams` | An SDFG data stream
|
|
|
|
### `SDFG.make_stream` (::mlir::concretelang::SDFG::MakeStream)
|
|
|
|
Returns a new SDFG stream
|
|
|
|
Returns a new SDFG stream, transporting data either between
|
|
processes on the device, from the host to the device or from
|
|
the device to the host. All streams are typed, allowing data
|
|
to be read / written through `SDFG.get` and `SDFG.put` only
|
|
using the stream's type.
|
|
|
|
Example:
|
|
```mlir
|
|
"SDFG.make_stream" { name = "stream", type = #SDFG.stream_kind<host_to_device> }(%dfg)
|
|
: (!SDFG.dfg) -> !SDFG.stream<tensor<1024xi64>>
|
|
```
|
|
|
|
#### Attributes:
|
|
|
|
| Attribute | MLIR Type | Description |
|
|
| :-------: | :-------: | ----------- |
|
|
| `name` | ::mlir::StringAttr | string attribute
|
|
| `type` | ::mlir::concretelang::SDFG::StreamKindAttr | Stream kind
|
|
|
|
#### Operands:
|
|
|
|
| Operand | Description |
|
|
| :-----: | ----------- |
|
|
| `dfg` | An SDFG data flow graph
|
|
|
|
#### Results:
|
|
|
|
| Result | Description |
|
|
| :----: | ----------- |
|
|
«unnamed» | An SDFG data stream
|
|
|
|
### `SDFG.put` (::mlir::concretelang::SDFG::Put)
|
|
|
|
Writes a data element to a stream
|
|
|
|
Writes the input operand to the specified stream. The
|
|
operand's type must meet the element type of the stream.
|
|
|
|
Example:
|
|
```mlir
|
|
"SDFG.put" (%stream, %data) : (!SDFG.stream<1024xi64>, tensor<1024xi64>) -> ()
|
|
```
|
|
|
|
#### Operands:
|
|
|
|
| Operand | Description |
|
|
| :-----: | ----------- |
|
|
| `stream` | An SDFG data stream
|
|
| `data` | any type
|
|
|
|
### `SDFG.shutdown` (::mlir::concretelang::SDFG::Shutdown)
|
|
|
|
Shuts down the streaming framework
|
|
|
|
Shuts down the streaming framework. This operation must be
|
|
performed after any other operation from the dialect.
|
|
|
|
Example:
|
|
```mlir
|
|
"SDFG.shutdown" (%dfg) : !SDFG.dfg
|
|
```
|
|
|
|
#### Operands:
|
|
|
|
| Operand | Description |
|
|
| :-----: | ----------- |
|
|
| `dfg` | An SDFG data flow graph
|
|
|
|
### `SDFG.start` (::mlir::concretelang::SDFG::Start)
|
|
|
|
Finalizes the creation of an SDFG and starts execution of its processes
|
|
|
|
Finalizes the creation of an SDFG and starts execution of its
|
|
processes. Any creation of streams and processes must take
|
|
place before control reaches this operation.
|
|
|
|
Example:
|
|
```mlir
|
|
"SDFG.start"(%dfg) : !SDFG.dfg
|
|
```
|
|
|
|
#### Operands:
|
|
|
|
| Operand | Description |
|
|
| :-----: | ----------- |
|
|
| `dfg` | An SDFG data flow graph
|
|
|
|
## Attribute definition
|
|
|
|
### ProcessKindAttr
|
|
|
|
Process kind
|
|
|
|
Syntax:
|
|
|
|
```
|
|
#SDFG.process_kind<
|
|
::mlir::concretelang::SDFG::ProcessKind # value
|
|
>
|
|
```
|
|
|
|
|
|
#### Parameters:
|
|
|
|
| Parameter | C++ type | Description |
|
|
| :-------: | :-------: | ----------- |
|
|
| value | `::mlir::concretelang::SDFG::ProcessKind` | an enum of type ProcessKind |
|
|
|
|
### StreamKindAttr
|
|
|
|
Stream kind
|
|
|
|
Syntax:
|
|
|
|
```
|
|
#SDFG.stream_kind<
|
|
::mlir::concretelang::SDFG::StreamKind # value
|
|
>
|
|
```
|
|
|
|
|
|
#### Parameters:
|
|
|
|
| Parameter | C++ type | Description |
|
|
| :-------: | :-------: | ----------- |
|
|
| value | `::mlir::concretelang::SDFG::StreamKind` | an enum of type StreamKind |
|
|
|
|
## Type definition
|
|
|
|
### DFGType
|
|
|
|
An SDFG data flow graph
|
|
|
|
Syntax: `!SDFG.dfg`
|
|
|
|
A handle to an SDFG data flow graph
|
|
|
|
### StreamType
|
|
|
|
An SDFG data stream
|
|
|
|
An SDFG stream to connect SDFG processes.
|
|
|
|
#### Parameters:
|
|
|
|
| Parameter | C++ type | Description |
|
|
| :-------: | :-------: | ----------- |
|
|
| elementType | `Type` | |
|
|
|