Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhance the performance of the TFHE-rs library #126

Closed
zaccherinij opened this issue Jun 5, 2024 · 0 comments
Closed

Enhance the performance of the TFHE-rs library #126

zaccherinij opened this issue Jun 5, 2024 · 0 comments
Labels
🎯 Bounty This bounty is currently open 📁 TFHE-rs library targeted: TFHE-rs

Comments

@zaccherinij
Copy link
Collaborator

zaccherinij commented Jun 5, 2024

Overview

The goal of this bounty is to enhance the performances of the TFHE-rs library using any optimizations, including cryptographic or algorithmic tricks.

The focus of the optimization should be on:

  • Cryptographic primitives: Programmable bootstrapping or keyswitch.
  • Integer operations: Any operations, with a special interest in addition, multiplication, or division for integers larger than or equal to 64 bits. These could target scenarios where both inputs are encrypted or only one is encrypted while the other is in clear text (also called scalar).

What we expect

In your optimization, you should consider the following constraints.:

  1. Cryptographic parameters: These can be adjusted, but the security must be at least 128 bits, and the error probability should be at most 2^(−40) for the entire process, including linear operations, a keyswitch, and a programmable bootstrapping. If any new cryptographic techniques are introduced, proofs that these constraints are met must be explicitly provided.

  2. Compatibility with other operations: The newly introduced methods should not degrade existing features. For instance, if a new encoding accelerating multiplication is provided, a casting method must be available to convert between the new and classical encoding. Any overhead related to the new methods should be explicitly stated and properly benchmarked. Generally, all tests must be run to prove that correctness is verified.

In the end, benchmarks will be run on an AWS hpc7a.96xlarge instance.

For integer operations, the command is:

RUSTFLAGS="-C target-cpu=native" __TFHE_RS_BENCH_OP_FLAVOR=DEFAULT __TFHE_RS_FAST_BENCH=FALSE cargo +nightly-2024-04-29 bench --bench integer-bench --features=x86_64-unix,integer,internal-keycache,nightly-avx512 -p tfhe -- mul_parallelized::PARAM_MESSAGE_2_CARRY_2_KS_PBS::64_bits

This command must be adjusted depending on the operation, for example, for division it becomes:

RUSTFLAGS="-C target-cpu=native" __TFHE_RS_BENCH_OP_FLAVOR=DEFAULT __TFHE_RS_FAST_BENCH=FALSE cargo +nightly-2024-04-29 bench --bench integer-bench --features=x86_64-unix,integer,internal-keycache,nightly-avx512 -p tfhe -- div_rem_parallelized::PARAM_MESSAGE_2_CARRY_2_KS_PBS::64_bits

Reward

🥇Best submission: up to €5,000.

To be considered best submission, a solution must be efficient, effective and demonstrate a deep understanding of the core problem. Alongside the technical correctness, it should also be submitted with a clean code, clear explanations and a complete documentation.

🥈Second-best submission: up to €3,000.

For a solution to be considered the second best submission, it should be both efficient and effective. The code should be neat and readable, while its documentation might not be as exhaustive as the best submission, it should cover the key aspects of the solution.

🥉Third-best submission: up to €2,000.

The third best submission is one that presents a solution that effectively tackles the challenge at hand, even if it may have certain areas of improvement in terms of efficiency or depth of understanding. Documentation should be present, covering the essential components of the solution.

Reward amounts are decided based on code quality, model accuracy scores and speed performance on a m6i.metal AWS server. When multiple solutions of comparable scope are submitted they are compared based on the accuracy metrics and computation times.

Related links and references

👉 Register

Step 1: Registration

Click here to register for the TFHE-rs Bounty. Fill out the registration form with your information. Once you fill out the form, you will receive a confirmation email with a link to the submission portal for when you are ready to submit your code.

Note

Check your spam folder in case you don't receive the confirmation email. If you haven't received it within 24 hour, please contact us by email at [email protected].

Step 2: Work on the Challenge

Read through the Bounty details and requirements carefully. Use the provided resources and create your own GitHub repository to store your code.
If you have any questions during your work, feel free to comment directly in the Bounty issue and our team will be happy to assist you.

Step 3: Submission

Once you have completed your work, upload your completed work to the submission portal using the link provided in the confirmation email.

Note

The deadline for submission is September, 8th 2024 (23:59, Anywhere On Earth). Late submissions will not be considered.

We wish you the best of luck with the challenge!

✅ Support

  • Comment on this issue with any questions regarding this bounty.
  • Email for private questions: [email protected].
  • Join the Zama community channels here.
@zaccherinij zaccherinij added 🎯 Bounty This bounty is currently open 📁 TFHE-rs library targeted: TFHE-rs labels Jun 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🎯 Bounty This bounty is currently open 📁 TFHE-rs library targeted: TFHE-rs
Projects
None yet
Development

No branches or pull requests

1 participant