v0.0.2
-
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.