Files
concrete/docs/howto/configure.md

102 lines
2.7 KiB
Markdown

# Configure
The behavior of **Concrete-Numpy** can be customized using `Configuration`s:
```python
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:
```python
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:
```python
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` methods, 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.
* **show\_optimizer**: bool = False
* Whether to print optimizer output 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.
* **auto_adjust_rounders**: bool = False
* Whether to adjust rounders automatically.
* **p_error**: Optional[float] = None
* Error probability for individual table lookups. Overwrites **global_p_error** if set.
* **global_p_error**: float = (1 / 100_000)
* Global error probability 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.
* **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.