Files
concrete/docs/dev/compilation/OptimizerDialect.md
Andi Drebes 8e660e2f75 feat(compiler): Add dialect with operations related to the optimizer
This adds a new dialect called `Optimizer` with operations related to
the Concrete Optimizer. Currently, there is only one operation
`optimizer.partition_frontier` that can be inserted between a producer
and a consumer which belong to different partitions computed by the
optimizer. The purpose of this operation is to preserve explicit key
changes from the invocation of the optimizer on high-level dialects
(i.e., FHELinalg / FHE) until the IR is provided with actual
references to keys in low-level dialects (i.e., TFHE).
2024-03-06 14:50:27 +01:00

43 lines
1.1 KiB
Markdown

<!-- Autogenerated by mlir-tblgen; don't manually edit -->
# 'Optimizer' Dialect
Auxiliary operations for the interaction with the optimizer
## Operation definition
### `Optimizer.partition_frontier` (::mlir::concretelang::Optimizer::PartitionFrontierOp)
Models an explicit edge between two partitions
Models an explicit edge between two partitions in the solution
determined by the optimizer requiring a key change between the
encrypted values of the operand and the encrypted values of
the result.
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
#### Attributes:
| Attribute | MLIR Type | Description |
| :-------: | :-------: | ----------- |
| `inputKeyID` | ::mlir::IntegerAttr | 64-bit signless integer attribute
| `outputKeyID` | ::mlir::IntegerAttr | 32-bit signless integer attribute
#### Operands:
| Operand | Description |
| :-----: | ----------- |
| `input` | any type
#### Results:
| Result | Description |
| :----: | ----------- |
&laquo;unnamed&raquo; | any type