Hello everyone

I am a student with an experimental project to build some numerical simulations (PDE solution) over ciphertext. I am trying to analyze the effectiveness of my simulations using OpenFHE wrapped in Julia, comparing them with simulations over plaintext. For this purpose, I’m running some tests to measure time consumption of basic operations like `EvalMult`

and `Relinearize`

. I have uploaded images with time measurements of the ciphertext `EvalMultNoRelin`

and `Relinearize`

(3-element-ciphertext convert to 2-element-ciphertext) in a log scale for different ring dimensions. It turns out that `Relinearize`

is something like 10 times slower than `EvalMultNoRelin`

. As long as I understand with evaluated key one only needs to do several element multiplications and additions in `Relinearize`

, that should be comparable with number of element multiplications and additions in `EvalMultNoRelin`

. Could someone help find the reason for such poor performance of Relinearize? It looks like this is a memory-constrained calculation, if I’m right, could someone give me a hint where in the `Relinearize`

code so many memory accesses are performed. Maybe there are already some publications explaining performance of OpenFHE arithmetical operations?

Thank you in advance!

All experiments are performed with single OMP thread.

Used parameters, code is in Julia, but with exactly same function names as in C++. `ring_dim`

is shown in the plots.

```
parameters = CCParams{CryptoContextCKKSRNS}()
secret_key_distribution = UNIFORM_TERNARY
SetSecretKeyDist(parameters, secret_key_distribution)
SetSecurityLevel(parameters, HEStd_NotSet)
SetRingDim(parameters, ring_dim)
SetBatchSize(parameters, div(ring_dim,2))
rescale_technique = FLEXIBLEAUTO
dcrt_bits = 59;
first_modulus = 60;
SetScalingModSize(parameters, dcrt_bits)
SetScalingTechnique(parameters, rescale_technique)
SetFirstModSize(parameters, first_modulus)
SetMultiplicativeDepth(parameters, 30)
cc = GenCryptoContext(parameters)
Enable(cc, PKE)
Enable(cc, KEYSWITCH)
Enable(cc, LEVELEDSHE)
Enable(cc, ADVANCEDSHE)
Enable(cc, FHE)
```