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

1.1 KiB

'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
«unnamed» any type