I am trying to understand how SEAL-CKKS scheme works and I wonder what multiplication level can we achieve using this scheme?
Like 100 possible?
I am trying to understand how SEAL-CKKS scheme works and I wonder what multiplication level can we achieve using this scheme?
Like 100 possible?
Most high-accuracy applications using CKKS are likely to stay well below level 20. Anything higher than that is extremely high in my opinion, and would make me think of alternative approaches.
Level 100 is in principle possible but unlikely to be practical due to the enormous parameter size it would require. By default SEAL does have a relatively low cap on the poly_modulus_degree
, but this should be possible to increase. There is also a cap on the number of coeff_modulus
primes, but there isn't any really fundamental reason for these bounds and you will probably be able to increase them without trouble.
Note that you'll need to do security estimates yourself for such a large coeff_modulus
and poly_modulus_degree
and if you use SEAL 3.3 you'll need to disable security checks by passing sec_level_type::none
to SEALContext::Create
.
To increase the caps, edit SEAL_POLY_MOD_DEGREE_MAX
and SEAL_COEFF_MOD_COUNT_MAX
in native/src/seal/util/defines.h
.
It is also possible that in the future SEAL will implement some form of bootstrapping for the CKKS scheme, which would then allow such computations but possibly only with very low precision.