Configure
Concrete can be customized using Configuration
s:
from concrete import fhe
import numpy as np
configuration = fhe.Configuration(p_error=0.01, dataflow_parallelize=True)
@fhe.compiler({"x": "encrypted"})
def f(x):
return x + 42
inputset = range(10)
circuit = f.compile(inputset, configuration=configuration)
You can overwrite individual options as kwargs to the compile
method:
from concrete import fhe
import numpy as np
@fhe.compiler({"x": "encrypted"})
def f(x):
return x + 42
inputset = range(10)
circuit = f.compile(inputset, p_error=0.01, dataflow_parallelize=True)
Or you can combine both:
from concrete import fhe
import numpy as np
configuration = fhe.Configuration(p_error=0.01)
@fhe.compiler({"x": "encrypted"})
def f(x):
return x + 42
inputset = range(10)
circuit = f.compile(inputset, configuration=configuration, loop_parallelize=True)
Options
show_graph: Optional[bool] = None
Whether to print computation graph during compilation.
True
means always print,False
means never print,None
means print depending on verbose configuration below.
show_mlir: Optional[bool] = None
Whether to print MLIR during compilation.
True
means always print,False
means never print,None
means print depending on verbose configuration below.
show_optimizer: Optional[bool] = None
Whether to print optimizer output during compilation.
True
means always print,False
means never 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 a 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 a non-exact result smaller than the set value. See Exactness to learn more.
single_precision: bool = True
Whether to use single precision for the whole circuit.
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.
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.
Last updated
Was this helpful?