Files
concrete/docs/howto/configure.md
2022-06-24 19:25:25 +03:00

2.4 KiB

Configure

Behavior of Concrete Numpy can be customized using Configurations:

import concrete.numpy as cnp
import numpy as np

configuration = cnp.Configuration(p_error=0.01, loop_parallelize=True)

@cnp.compiler({"x": "encrypted"})
def f(x):
    return x + 42

inputset = range(10)
circuit = f.compile(inputset, configuration=configuration)

Alternatively, you can overwrite individual options as kwargs to compile method:

import concrete.numpy as cnp
import numpy as np

@cnp.compiler({"x": "encrypted"})
def f(x):
    return x + 42

inputset = range(10)
circuit = f.compile(inputset, p_error=0.01, loop_parallelize=True)

Or you can combine both:

import concrete.numpy as cnp
import numpy as np

configuration = cnp.Configuration(p_error=0.01)

@cnp.compiler({"x": "encrypted"})
def f(x):
    return x + 42

inputset = range(10)
circuit = f.compile(inputset, configuration=configuration, loop_parallelize=True)

{% hint style="info" %} Additional kwarg to compile function have higher precedence. So if you set an option in both configuration and in compile method, the value in the compile method will be used. {% endhint %}

Options

  • show_graph: bool = False

    • Whether to print computation graph during compilation.
  • show_mlir: bool = False

    • Whether to print MLIR during compilation.
  • verbose: bool = False

    • Whether to print computation graph and MLIR during compilation.
  • dump_artifacts_on_unexpected_failures: bool = True

    • Whether to export debugging artifacts automatically on compilation failures.
  • p_error: float = 0.000063342483999973

    • Error probability for table lookups.
  • jit: bool = False

    • Whether to use JIT compilation.
  • loop_parallelize: bool = True

    • Whether to enable loop parallelization in the compiler.
  • dataflow_parallelize: bool = False

    • Whether to enable dataflow parallelization in the compiler.
  • auto_parallelize: bool = False

    • Whether to enable auto parallelization in the compiler.
  • enable_unsafe_features: bool = False

    • Whether to enable unsage features.
  • virtual: bool = False (Unsafe)

    • Whether to create a virtual circuit.
  • use_insecure_key_cache: bool = False (Unsafe)

    • Whether to use the insecure key cache.
  • insecure_key_cache_location: Optional[Union[Path, str]] = None

    • Location of insecure key cache.