Progress of scheme switching

Continuing the discussion from Status of the CKKS <-> DM/CGGI scheme switch:

Hi!
I’m a graduate student studying PL(programming language) and SE(Software Engineering). I’m working on FHE compiler that can help non-experts develop efficient FHE programs.

Currently, I’m interested in scheme switching that I think is very promising in that only the advantages of each scheme can be taken. And I expect a FHE compiler to analyze the input program and perform scheme switching automatically will be needed.

Unfortunately, as you know, scheme switching appears to be still in an immature stage(Pegasus). However, I’m glad to hear that you will soon support it in OpenFHE! May I ask if there is any progress or change of the plan? I’m really looking forward to it!

Or is there any problem I can help you with this project?
I’m a very beginner in this field, so any opinion will be of great help to me.

And thank you for developing such a wonderful library!

Thanks!

Hi , I am curious about your compiler – one big hurdle I see is that for efficiency, almost all applications use SIMD in their schemes (other than the DM family), and the vectors generally are quite large (ringsize/2).

So I would think a vectorizing compiler would be needed, or at the minimum a “library” of vectorized operations.

What would your thoughts be on this?
Dave

We are planning to add the scheme switching capability for CKKS <-> DM/CGGI in the next major version (v1.1). We have a working prototype of it but need to do a lot of SE redesigning/refactoring to properly integrate it into OpenFHE, e.g., normalize binfhe and pke to use the same design. We are starting this major effort now.

1 Like

Hi @dcousins!

Currently, we are in a very early stage, so we have only done research survey and do not have an implementation.

As you said, SIMD batching dramatically improves the computational efficiency of the FHE program, so I think that batching support is essential for practical compilers. As far as I know, there are two compilers that automatically perform batching for the convenience of programmers, by translating imperative programs to batch-optimized version: Porcupine and HECO

However, unlike the DM family, schemes that support SIMD batching are usually less expressive: hard to compute non-polynomial operation such as comparison. Therefore, our goal is to increase the expressiveness of batch compilers with the support of scheme switching. (or to increase the efficiency of compilers targeting DM family schemes, such as google transpiler.)

Hi @ypolyakov!

Thank you for sharing the detailed plan.
I’m looking forward to it so much!

Great, we’ve worked closely with the Google transpiler people, OpenFHE is a supported backend now. We’d love to follow your progress!
Dave

2 Likes

Thanks a lot!
If our work goes well, I’ll be happy to share it.
I’m looking forward to your works, too!

Jaeho

1 Like