Skip to content

Releases: lightbulb128/troy-nova

v0.3

16 Oct 10:34
3354734
Compare
Choose a tag to compare

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

17 Jul 10:30
Compare
Choose a tag to compare

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

11 Jul 06:48
Compare
Choose a tag to compare

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

03 Jul 03:29
Compare
Choose a tag to compare
  • Supports BFV, BGV and CKKS schemes. CKKS, BGV ciphertexts are stored in RNS-NTT form.