# module `concrete.fhe.compilation.module` Declaration of `FheModule` classes. --- ## class `ExecutionRt` Runtime object class for execution. ### method `__init__` ```python __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__` ```python __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` ```python 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` ```python 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` ```python 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` ```python 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` ```python 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` ```python 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` ```python 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` ```python 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__` ```python __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` ```python cleanup() ``` Cleanup the temporary library output directory. --- ### method `functions` ```python functions() → Dict[str, FheFunction] ``` Return a dictionnary containing all the functions of the module. --- ### method `keygen` ```python 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