Links

Configure

The 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)
Additional kwarg to compile function have higher precedence. So if you set an option in both configuration and in compile methods, the value in the compile method will be used.

Options

  • show_graph: Optional[bool] = None
    • Whether to print computation graph during compilation. True means always to print, False means always to not print, None means print depending on verbose configuration below.
  • show_mlir: Optional[bool] = None
    • Whether to print MLIR during compilation. True means always to print, False means always to not print, None means print depending on verbose configuration below.
  • show_optimizer: Optional[bool] = None
    • Whether to print optimizer output during compilation. True means always to print, False means always to not print, None means print depending on verbose configuration below.
  • verbose: bool = False
    • Whether to print details related to compilation.
  • dump_artifacts_on_unexpected_failures: bool = True
    • Whether to export debugging artifacts automatically on compilation failures.
  • auto_adjust_rounders: bool = False
    • Whether to adjust rounders automatically.
  • p_error: Optional[float] = None
    • Error probability for individual table lookups. If set, all table lookups will have the probability of non-exact result smaller than the set value. See Exactness to learn more.
  • global_p_error: Optional[float] = None
    • Global error probability for the whole circuit. If set, the whole circuit will have the probability of non-exact result smaller than the set value. See Exactness to learn more.
  • 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 unsafe 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.