Version history¶
0.0.3 (19 Jul 2019)¶
- ADDED:
LweSampleArray.copy()
for cloning a ciphertext. - ADDED:
LweSampleArray.roll()
that cyclically shifts encrypted bits if a ciphertext. - ADDED:
thread
keyword parameter toContext
, allowing one to use an existing ReiknaThread
object to create a context. - ADDED:
concatenate()
forLweSampleArray
objects. - ADDED:
__setitem__()
functionality forLweSampleArray
objects (the source must be anotherLweSampleArray
). - ADDED: NTT transform now uses Montgomery multiplication for the cases where one of the factors can be prepared in advance, increasing performance (mostly for the multi-kernel bootstrap).
- FIXED: result shape derivation in gate methods of
VirtualMachine
, includingvm.gate_constant()
not accepting lists as arguments.
0.0.2 (14 Feb 2019)¶
- CHANGED: a
PerformanceParameters
object needs to be specialized for the device used (by calling itsfor_device()
method) before passing it to gates. - CHANGED: instead of using
numpy.random.RandomState
for key generation and encryption,DeterministicRNG
andSecureRNG
are available instead. The former is the wrappedRandomState
, 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()
andloads()
methods forNuFHESecretKey
,NuFHECloudKey
andLweSampleArray
for serializing to/from bytestrings. TheContext
’sload_secret_key
,load_cloud_key
andload_ciphertext
also take bytestrings as arguments. - ADDED: exposed
clear_computation_cache()
which helps release the resources associated with a GPU context (the NuFHEContext
objects call it automatically on destruction). - ADDED: a
find_devices()
function to help with using multiple computation devices, and a corresponding keyworddevice_id
forContext
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
andPerformanceParametersForDevice
objects did not have a correct equality implementation, leading to unnecessary re-compilation of kernels. - FIXED: compilation failing when
transforms_per_block
inPerformanceParameters
is set too high.
0.0.1 (12 Oct 2018)¶
Initial version.