Mamy Ratsimbazafy 1f4bb174a3
[Backend] Add support for Nvidia GPUs (#210)
* Add PoC of JIT exec on Nvidia GPUs [skip ci]

* Split GPU bindings into low-level (ABI) and high-level [skip ci]

* small typedef reorg [skip ci]

* refine LLVM IR/Nvidia GPU hello worlds

* [Nvidia GPU] PoC implementation of field addition [skip ci]

* prod-ready field addition + tests on Nvidia GPUs via LLVM codegen
2023-01-12 01:01:57 +01:00

684 B

GPU compilation targets

For CPUs, Constantine JIT-compiles the cryptographic kernels via LLVM.

This allows targeting several devices with a single frontend, the LLVM IR.

Current use-cases are large scale aggregations, large-scale multi-scalar-multiplications and large-scale FFTs.

Those are important primitives for:

  • aggregation of public keys or signatures from a large number of nodes
  • protocols based on polynomial commitments
  • zero-knowledge proof systems

Potential future use-cases include erasure coding and lattice-based cryptography acceleration.

⚠️ GPU usage is not constant-time and requires allocation of dynamic memory. It MUST NOT be used for secret data.