Skip to content
This repository has been archived by the owner on Nov 21, 2023. It is now read-only.

v0.0.2

Compare
Choose a tag to compare
@fjarri fjarri released this 14 Feb 10:21
· 19 commits to master since this release
  • CHANGED: a PerformanceParameters object needs to be specialized for the device used (by calling its for_device() method) before passing it to gates.

  • CHANGED: instead of using numpy.random.RandomState for key generation and encryption, DeterministicRNG and SecureRNG are available instead. The former is the wrapped RandomState, fast, but not cryptographically secure; the latter is the secure random source provided by the OS, which can be rather slow.

  • ADDED: a high-level API hiding the Reikna details and removing some boilerplate.

  • ADDED: shape checks in gate functions that take into account possible broadcasting.

  • ADDED: dumps() and loads() methods for NuFHESecretKey, NuFHECloudKey and LweSampleArray for serializing to/from bytestrings. The Context's load_secret_key, load_cloud_key and load_ciphertext also take bytestrings as arguments.

  • ADDED: exposed clear_computation_cache() which helps release the resources associated with a GPU context (the NuFHE Context objects call it automatically on destruction).

  • ADDED: a find_devices() function to help with using multiple computation devices, and a corresponding keyword device_id for Context class constructor that uses its return values.

  • ADDED: an example of multi-threaded multi-GPU usage.

  • FIXED: a bug in tlwe_noiseless_trivial() occasionally leading to memory corruption.

  • FIXED: a bug where PerformanceParameters and PerformanceParametersForDevice objects did not have a correct equality implementation, leading to unnecessary re-compilation of kernels.

  • FIXED: compilation failing when transforms_per_block in PerformanceParameters is set too high.