Operations on clears

Hello, I’m playing around with concrete-numpy, trying to implement left_shift operation.
Inability to perform “clear computations” in circuit (getting one of the operands must be encrypted) greatly reduces options to implement it.
One can’t substitute enc << clearenc * (2 ** clear).

Assuming that MLIR/Sever execution limitation is hard to overcome. It can be handled in concrete-numpy code by splitting circuit graph into “clear” and “encrypted” subgraphs, execute “clear” ones on client side while MLIR-compile and send to server “encrypted” subgraph.

It’s fairly large change, I would like to probe in advance if this kind of contribution is of interest, have a chance to be accepted into the trunk.

Hello @orlov,

You are right that clear operation support is not the best at the moment. It’s possible to improve support in the compiler directly, which is much better to do compared to changing the architecture of Concrete Numpy.

Luckily, Concrete Compiler will be open sourced soon! New clear operations could be interesting contributions to Concrete Compiler. Let’s talk again after Concrete Compiler is open sourced!