Releases: zama-ai/tfhe-rs
tfhe-zk-pok 0.7.2
Description
This release fixes some corner cases in the four_squares
algorithm used by pkev2.
tfhe-zk-pok 0.7.1
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
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
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
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
Fixes
Fix a compilation error related to the use of nvToolsExt.h.
TFHE-rs v1.2.0
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 genericAtomicPatternServerKey
object which allows to customize the content of the key materials. - The conformance parameters for the integer
ServerKey
are now wrapped insideAtomicPatternParameters
.
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
Summary
This release adds the noise_squashing_key
accessor on tfhe::ServerKey
to allow access to the underlying NoiseSquashingKey
TFHE-rs v1.1.2
Summary
This release adds from_raw_parts
and into_raw_parts
for NoiseSquashingPrivateKey
TFHE-rs v1.1.1
Summary
This release adds from_raw_parts
and into_raw_parts
to the shortint NoiseSquashingKey