14 KiB
module concrete.fhe.compilation.module
Declaration of FheModule classes.
class ExecutionRt
Runtime object class for execution.
method __init__
__init__(client, server, auto_schedule_run)
class SimulationRt
Runtime object class for simulation.
class FheFunction
Fhe function class, allowing to run or simulate one function of an fhe module.
method __init__
__init__(
name: str,
execution_runtime: Lazy[ExecutionRt],
simulation_runtime: Lazy[SimulationRt],
graph: Graph,
configuration: Configuration
)
property clear_addition_count
Get the number of clear additions in the function.
property clear_addition_count_per_parameter
Get the number of clear additions per parameter in the function.
property clear_addition_count_per_tag
Get the number of clear additions per tag in the function.
property clear_addition_count_per_tag_per_parameter
Get the number of clear additions per tag per parameter in the function.
property clear_multiplication_count
Get the number of clear multiplications in the function.
property clear_multiplication_count_per_parameter
Get the number of clear multiplications per parameter in the function.
property clear_multiplication_count_per_tag
Get the number of clear multiplications per tag in the function.
property clear_multiplication_count_per_tag_per_parameter
Get the number of clear multiplications per tag per parameter in the function.
property encrypted_addition_count
Get the number of encrypted additions in the function.
property encrypted_addition_count_per_parameter
Get the number of encrypted additions per parameter in the function.
property encrypted_addition_count_per_tag
Get the number of encrypted additions per tag in the function.
property encrypted_addition_count_per_tag_per_parameter
Get the number of encrypted additions per tag per parameter in the function.
property encrypted_negation_count
Get the number of encrypted negations in the function.
property encrypted_negation_count_per_parameter
Get the number of encrypted negations per parameter in the function.
property encrypted_negation_count_per_tag
Get the number of encrypted negations per tag in the function.
property encrypted_negation_count_per_tag_per_parameter
Get the number of encrypted negations per tag per parameter in the function.
property key_switch_count
Get the number of key switches in the function.
property key_switch_count_per_parameter
Get the number of key switches per parameter in the function.
property key_switch_count_per_tag
Get the number of key switches per tag in the function.
property key_switch_count_per_tag_per_parameter
Get the number of key switches per tag per parameter in the function.
property packing_key_switch_count
Get the number of packing key switches in the function.
property packing_key_switch_count_per_parameter
Get the number of packing key switches per parameter in the function.
property packing_key_switch_count_per_tag
Get the number of packing key switches per tag in the function.
property packing_key_switch_count_per_tag_per_parameter
Get the number of packing key switches per tag per parameter in the function.
property programmable_bootstrap_count
Get the number of programmable bootstraps in the function.
property programmable_bootstrap_count_per_parameter
Get the number of programmable bootstraps per bit width in the function.
property programmable_bootstrap_count_per_tag
Get the number of programmable bootstraps per tag in the function.
property programmable_bootstrap_count_per_tag_per_parameter
Get the number of programmable bootstraps per tag per bit width in the function.
property size_of_inputs
Get size of the inputs of the function.
property size_of_outputs
Get size of the outputs of the function.
property statistics
Get all statistics of the function.
method decrypt
decrypt(
*results: Union[Value, Tuple[Value, ], Awaitable[Union[Value, Tuple[Value, ]]]]
) → Union[int, ndarray, Tuple[Union[int, ndarray, NoneType], ], NoneType]
Decrypt result(s) of evaluation.
Args: *results (Union[Value, Tuple[Value, ...]]): result(s) of evaluation
Returns: Optional[Union[int, np.ndarray, Tuple[Optional[Union[int, np.ndarray]], ...]]]: decrypted result(s) of evaluation
method draw
draw(
horizontal: bool = False,
save_to: Optional[Path, str] = None,
show: bool = False
) → Path
Draw the graph of the function.
That this function requires the python pygraphviz package which itself requires the installation of graphviz packages
(see https://pygraphviz.github.io/documentation/stable/install.html)
Args: horizontal (bool, default = False): whether to draw horizontally
save_to (Optional[Path], default = None): path to save the drawing a temporary file will be used if it's None
show (bool, default = False): whether to show the drawing using matplotlib
Returns: Path: path to the drawing
method encrypt
encrypt(
*args: Optional[int, ndarray, List]
) → Union[Value, Tuple[Optional[Value], ], NoneType]
Encrypt argument(s) to for evaluation.
Args: *args (Optional[Union[int, numpy.ndarray, List]]): argument(s) for evaluation
Returns: Optional[Union[Value, Tuple[Optional[Value], ...]]]: encrypted argument(s) for evaluation
method encrypt_run_decrypt
encrypt_run_decrypt(*args: Any) → Any
Encrypt inputs, run the function, and decrypt the outputs in one go.
Args: *args (Union[int, numpy.ndarray]): inputs to the function
Returns: Union[int, np.ndarray, Tuple[Union[int, np.ndarray], ...]]: clear result of homomorphic evaluation
method run
run(
*args: Optional[Value, Tuple[Optional[Value], ]]
) → Union[Value, Tuple[Value, ], Awaitable[Union[Value, Tuple[Value, ]]]]
Evaluate the function.
Args: *args (Value): argument(s) for evaluation
Returns: Union[Value, Tuple[Value, ...], Awaitable[Union[Value, Tuple[Value, ...]]]]: result(s) of evaluation or future of result(s) of evaluation if configured with async_run=True
method run_async
run_async(
*args: Optional[Value, Tuple[Optional[Value], ]]
) → Union[Value, Tuple[Value, ], Awaitable[Union[Value, Tuple[Value, ]]]]
Evaluate the function asynchronuously.
Args: *args (Value): argument(s) for evaluation
Returns: Union[Awaitable[Value], Awaitable[Tuple[Value, ...]]]: result(s) a future of the evaluation
method run_sync
run_sync(*args: Optional[Value, Tuple[Optional[Value], ]]) → Any
Evaluate the function synchronuously.
Args: *args (Value): argument(s) for evaluation
Returns: Union[Value, Tuple[Value, ...]]: result(s) of evaluation
method simulate
simulate(*args: Any) → Any
Simulate execution of the function.
Args: *args (Any): inputs to the function
Returns: Any: result of the simulation
class FheModule
Fhe module class, to combine computation graphs, mlir, runtime objects into a single object.
method __init__
__init__(
graphs: Dict[str, Graph],
mlir: Module,
compilation_context: CompilationContext,
configuration: Optional[Configuration] = None,
composition_rules: Optional[Iterable[CompositionRule]] = None
)
property client
Returns the execution client object tied to the module.
property complexity
Get complexity of the module.
property function_count
Returns the number of functions in the module.
property global_p_error
Get the probability of having at least one simple TLU error during the entire execution.
property keys
Get the keys of the module.
property mlir
Textual representation of the MLIR module.
Returns:
str: textual representation of the MLIR module
property p_error
Get probability of error for each simple TLU (on a scalar).
property server
Get the execution server object tied to the module.
property simulator
Returns the simulation server object tied to the module.
property size_of_bootstrap_keys
Get size of the bootstrap keys of the module.
property size_of_keyswitch_keys
Get size of the key switch keys of the module.
property size_of_secret_keys
Get size of the secret keys of the module.
property statistics
Get all statistics of the module.
method cleanup
cleanup()
Cleanup the temporary library output directory.
method functions
functions() → Dict[str, FheFunction]
Return a dictionnary containing all the functions of the module.
method keygen
keygen(
force: bool = False,
seed: Optional[int] = None,
encryption_seed: Optional[int] = None,
initial_keys: Optional[Dict[int, LweSecretKey]] = None
)
Generate keys required for homomorphic evaluation.
Args: force (bool, default = False): whether to generate new keys even if keys are already generated
seed (Optional[int], default = None): seed for private keys randomness
encryption_seed (Optional[int], default = None): seed for encryption randomness
initial_keys (Optional[Dict[int, LweSecretKey]] = None): initial keys to set before keygen