Files
concrete/docs/dev/api/concrete.fhe.compilation.module.md

12 KiB

module concrete.fhe.compilation.module

Declaration of FheModule classes.


class ExecutionRt

Runtime object class for execution.


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,
    runtime: Union[ExecutionRt, 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, ]]
)  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, ]]

Evaluate the function.

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 client object tied to the module if not in simulation mode.


property complexity

Get complexity of 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 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
)

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