ENCRYPT Blog Series #11: Hardware Acceleration for FHE

Hardware Acceleration for FHE

by Orion Papadakis, Thanos Stratikopoulos, Michalis Papadimitriou, Mary Xekalaki, Juan Fumero, Christos Kotselidis
University of Manchester

Introduction: The ENCRYPT platform includes a hardware acceleration module in order to boost performance for applications that will employ ENCRYPT’s privacy preserving mechanisms. Hardware acceleration has been employed in various application domains to increase performance by offloading parts of the algorithms from the main CPU onto specialised hardware co-processors, such as Graphics Processing Units (GPUs), Field Programmable Arrays (FPGAs), Tensor Processing Units (TPUs), etc.

In the context of ENCRYPT, the hardware acceleration module provides support for GPU acceleration. Its objective is to enhance the efficiency of performing data processing via privacy-preserving technologies, such as Fully Homomorphic Encryption (FHE). FHE has been a topic of significant research interest recently, thereby leading in numerous libraries that incorporate multiple schemes implemented in different programming languages. The tables below presents an overview of some of those libraries and highlights their hardware acceleration support, if any.

Computational Model Library Scheme Language Acceleration Open source
Boolean TFHE tFHE C/C++ GPU by nuFHE Y
nuFHE tFHE Python GPU Y
PALISADE (now in OpenFHE) tFHE C++, Javascript FPGA N
cuFHE tFHE C++, Python GPU Y
Hardware Acceleration for “Boolean” Computational Models
Computational Model Library Scheme Language Acceleration Open source
Modular Arithmetic HELib (now in OpenFHE) BFV C++ GPU N
Lattigo BFV Go
Hardware Acceleration for “Modular Arithmetic” Computational Models
Computational Model Library Scheme Language Acceleration Open source
Floating Point Arithmetic SEAL CKKS C/C++ .NET GPU N
Lattigo CKKS Go
PALISADE (now in OpenFHE) CKKS C++, Javascript FPGA, more? N
Hardware Acceleration for “Floating Point Arithmetic” Computational Models

To explore the hardware acceleration support for FHE libraries, it is necessary to undertake three steps:

  1. Performance analysis of the ENCRYPT FHE library (i.e., OpenFHE) as well as the BGV FHE scheme (i.e., selected based on the ENCRYPT use case requirements). The performance analysis has been performed by profilers that identify the code segments that are candidates for GPU acceleration.
  2. Design and implementation of a GPU kernel (e.g., OpenCL, CUDA) for each function.
  3. Deployment of the implemented kernels instead of the original implementation of the functions.

Stay tuned for more!