Releases: lightbulb128/troy-nova
v0.3
Support batched operations for most of the HE operations, encoding, and encryption. See added example for a simple usage.
Although there is still some work to do: adding batched benchmarking and corresponding python bindings, this is released because of some of the bugfixes could seem necessary.
v0.2.1
Bugfix: safe memory pool shared by multiple threads.
Took me a while to fix this... When Thread A returns a no-longer-needed piece of memory to the pool, there might still be some kernel running to write it, which is executed by the default stream of Thread A, but immediately it may be given to Thread B, so when Thread B try to write/read it, there will be data racing. The solution is to record which thread last used this piece of memory when it is returned, and when it is going to be given to another thread, call cudaDeviceSynchronize()
.
v0.2.0
Support multiple pools for multithreading and using multiple GPU devices.
- Add full support for multiple memory pools. Users could create multiple pools for single/multiple devices, or they can just use the default pool on device 0.
- Examples are introduced showing how to use multiple pools.
- Benchmark supports arguments to use (host, single thread) | (host, multiple threads) | (device, single thread) | (device, multiple threads, single pool) | (device, multiple threads, multiple devices)
v0.1.0
- Supports BFV, BGV and CKKS schemes. CKKS, BGV ciphertexts are stored in RNS-NTT form.