Skip to content

Releases: zama-ai/tfhe-rs

tfhe-zk-pok 0.7.2

08 Sep 07:45
tfhe-zk-pok-0.7.2
Compare
Choose a tag to compare

Description

This release fixes some corner cases in the four_squares algorithm used by pkev2.

tfhe-zk-pok 0.7.1

21 Aug 08:06
tfhe-zk-pok-0.7.1
Compare
Choose a tag to compare

Summary

This release adds a new type, curve_446::zp::ZeroizeZp that is similar to curve_446::zp::Zp but derives ZeroizeOnDrop at the cost of not being Copy.

TFHE-rs 1.3.3 and tfhe-versionable 0.6.1

11 Aug 15:15
tfhe-rs-1.3.3
Compare
Choose a tag to compare

Summary

This release adds some missing API:

TFHE-rs 1.3.3

Add into/from_raw_parts functions for compressed KSK material

tfhe-versionable 0.6.1

Implement Versionize/Unversionize for BTreeSet/BTreeMap

TFHE-rs 1.3.2

18 Jul 12:41
tfhe-rs-1.3.2
Compare
Choose a tag to compare

Summary

This release adds some missing API to TFHE-rs v1.3:

  • from/into_raw_parts for the NoiseSquashingCompressionKey and NoiseSquashingCompressionPrivateKey
  • a getter for the PbsOrder of the AtomicPatternKind

TFHE-rs v1.3.0

16 Jul 12:33
tfhe-rs-1.3.0
Compare
Choose a tag to compare

Summary

TFHE-rs v1.3.0 introduces several new features both focused on performance and on the usability of the library. The HPU now supports more operations and now has a parameter set matching the CPU and GPU in terms of computation probability of error.

What's Changed

New features

HPU

  • Add modulus-switch noise reduction (centered binary)
  • Update HPU parameter set to reach a 2^-128 probability of failure, as on CPU & GPU
  • Add support of most of the missing operations: div, max/min, shift, rot, leading/trailing zeros/ones
  • Simplify & accelerate FPGA loading by using PCIe instead of loading flash at each bitstream update

CPU

  • Add chunked generation for the LweKeyswitchKey
  • Add multi bit PBS for 128 bits moduli
  • Add Atomic Pattern support at the ClientKey level
  • Add OverflowingNeg in the High Level API
  • Add compression support after noise squashing
  • Add modulus switch noise compensation technique and centering
  • Add a different hashing mode for ZK v2 allowing for faster verification
  • Add a more granular conformance check for ZK proofs
  • Add a "key chain" mechanism to update old ciphertexts parameters to newer ones

GPU

  • All operations now come with a utility function to query how much memory that function will require on GPU:
    • All integer operations (bitwise operations, comparisons, shift/rotate, cmux, addition, subtraction, multiplication, division, etc.)
    • Operations on booleans
    • Compression/decompression
    • Encrypted random generation
  • Add support for GPU-accelerated expand on the HL Api
  • Allow a user to perform computation on multi-gpu using a custom selection of GPUs
  • Add squash noise in the high level API
  • Add support to GPU-accelerated expand to CompactCiphextList
  • Add cuda debug target for integer tests via a Cargo feature
  • Add move_to_current_device for booleans

Fixes

GPU

  • Fix degrees after abs
  • Allow to build with both GPU & HPU features enabled
  • Add indexes to modulus switch noise reduction
  • Add missing error checks after some kernels
  • Fix a linking problem on Hopper GPUs
  • Fix hardcoded use of message modulus in some operations
  • Fix degrees after bitxor
  • Prevent nvToolsExt inclusion when not profiling
  • Fix degrees after scalar bitxor
  • Fix race condition on expand when on multi-gpu
  • Fix the packing keyswitch buffer not being allocated on large parameter sets

Performance improvements

CPU

  • New algorithm for division, 36% improvement for 64 bits division with default parameters, now run in 5.5s vs 8.6s

GPU

  • Use cooperative groups based PBS on H100s when possible on large batches
  • Optimize sum_ciphertexts in cuda backend (ilog2 and scalar div got significant performance improvements thanks to this)
  • Increase keyswitch occupancy to 100%

TFHE-cuda-backend 0.10.1

16 Jun 16:09
tfhe-cuda-backend-0.10.1
Compare
Choose a tag to compare

Fixes

Fix a compilation error related to the use of nvToolsExt.h.

TFHE-rs v1.2.0

20 May 14:17
tfhe-rs-1.2.0
Compare
Choose a tag to compare

Summary

TFHE-rs v1.2.0 introduces the new HPU backend. The HPU (Homorphic Processing Unit) is a hardware accelerator for FHE operations.

What's Changed

Breaking changes

Warning

  • The shortint ServerKey does not directly hold the bootstrapping and keyswitch keys anymore. Instead, they are stored inside a generic AtomicPatternServerKey object which allows to customize the content of the key materials.
  • The conformance parameters for the integer ServerKey are now wrapped inside AtomicPatternParameters.

New features

HPU

  • Add Hpu backend implementation

CPU

  • Add back&forth NTT implementation
  • Add support for dynamic atomic pattern at the shortint level. They allow to customize how lookup tables are evaluated.
  • Add the KeySwitch32 atomic pattern
  • Enable custom modulus generation for TUniform
  • Add AsRef implementation on ServerKey to access NoiseSquashingKey
  • Run ZK verification inside dedicated thread pools to redcuce the latency

GPU

  • Implement ZK's expand
  • Implement 128 bit classic CG PBS
  • Add memory tracking functions for add, subtract, scalar add and scalar subtract
  • Add necessary entry points for 128 bit compression
  • Add circulant matrix for one vs many poly product

Fixes

CPU

  • Fix success probability for Ternary Uniform generation
  • Remove additional body coeff in multi bit ms compression
  • Check that crs group element at index n is 0

GPU

  • Update panic condition on upper bound for the number of cuda blocks to apply only to Thread Block Clusters
  • Fix multi device execution with drift

TFHE-rs v1.1.3

16 Apr 13:42
tfhe-rs-1.1.3
Compare
Choose a tag to compare

Summary

This release adds the noise_squashing_key accessor on tfhe::ServerKey to allow access to the underlying NoiseSquashingKey

TFHE-rs v1.1.2

14 Apr 12:18
tfhe-rs-1.1.2
Compare
Choose a tag to compare

Summary

This release adds from_raw_parts and into_raw_parts for NoiseSquashingPrivateKey

TFHE-rs v1.1.1

14 Apr 07:51
tfhe-rs-1.1.1
Compare
Choose a tag to compare

Summary

This release adds from_raw_parts and into_raw_parts to the shortint NoiseSquashingKey