This document explains the most common errors and provides solutions to fix them.
Error message: Could not find a version that satisfies the requirement concrete-python (from versions: none)
Cause: The installation does not work fine for you.
Possible solutions:
Be sure that you use a supported Python version (currently from 3.8 to 3.11, included).
Check that you have done pip install -U pip wheel setuptools
before.
Consider adding a --extra-index-url https://pypi.zama.ai/cpu/
.
Concrete requires glibc>=2.28, be sure to have a sufficiently recent version.
Error message: RuntimeError: Function you are trying to compile cannot be compiled
with extra information only integers are supported
Cause: Parts of your program contain graphs that are not from integer to integer
Possible solutions:
You can use floats as intermediate values (see the documentation). However, both inputs and outputs must be integers. Consider converting values to integers, such as .astype(np.uint64)
Error message: NoParametersFound
Cause: The optimizer can't find cryptographic parameters for the circuit that are both secure and correct.
Possible solutions:
Try to simplify your circuit.
Use smaller weights.
Add intermediate PBS to reduce the noise, with identity function fhe.univariate(lambda x: x)
.
Error message: RuntimeError: Function you are trying to compile cannot be compiled
, with extra information as this [...]-bit value is used as an input to a table lookup
with but only up to 16-bit table lookups are supported
Cause: The program uses a Table Lookup that contains oversized inputs exceeding the current 16-bit limit.
Possible solutions:
Try to simplify your circuit.
Use smaller weights.
Look to the graph to understand where this oversized input comes from and ensure that the input size for Table Lookup operations does not exceed 16 bits.
Use show_bit_width_constraints=True
to understand bit widths are assigned the way they are.
Error message: RuntimeError: A subgraph within the function you are trying to compile cannot be fused because it has multiple input nodes
Cause: A subgraph in your program uses two or more input nodes. It is impossible to fuse such a graph, meaning replace it by a table lookup. Concrete will indicate the input nodes with this is one of the input nodes printed
in the circuit.
Possible solutions:
Try to simplify your circuit.
Have a look to fhe.multivariate
.
Error message: RuntimeError: Function '[...]' is not supported
Cause: The function used is not currently supported by Concrete.
Possible solutions:
Try to change your program.
Check the corresponding documentation to see if there are ways to implement the function differently.
Post your issue in our community channels.
Error message: RuntimeError: Branching within circuits is not possible
Cause: Branching operations, such as if statements or non-constant loops, are not supported in Concrete's FHE programs.
Possible solutions:
Change your program.
Consider using tricks to replace ternary-if, as c ? t : f = f + c * (t-f)
.