Intel HE Acceleration Library for FPGAs
Intel Homomorphic Encryption Acceleration Library for FPGAs, accelerating the modular arithmetic operations used in homomorphic encryption on Intel FPGAs.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Classes | Namespaces | Macros | Enumerations | Functions | Variables
fpga.h File Reference
#include <atomic>
#include <condition_variable>
#include <deque>
#include <future>
#include <memory>
#include <mutex>
#include <thread>
#include <unordered_map>
#include <vector>
#include "CL/opencl.h"

Go to the source code of this file.

Classes

struct  intel::hexl::fpga::moduli_info_t
 Struct moduli_info_t. More...
 
struct  intel::hexl::fpga::KeySwitch_modulus_t
 Struct KeySwitch_moduli_t. More...
 
struct  intel::hexl::fpga::KeySwitch_invn_t
 Struct KeySwitch_invn_t. More...
 
struct  intel::hexl::fpga::__attribute__
 Struct DyadmultKeys1_t. More...
 
struct  intel::hexl::fpga::__attribute__
 Struct DyadmultKeys1_t. More...
 
struct  intel::hexl::fpga::__attribute__
 Struct DyadmultKeys1_t. More...
 
struct  intel::hexl::fpga::Object
 Struct Object. More...
 
struct  intel::hexl::fpga::Object_NTT
 Struct Object NTT Stores the Number Theoretic Transform parameters. More...
 
struct  intel::hexl::fpga::Object_INTT
 Struct Object INTT Stores the Inverse Number Theoretic Transform parameters. More...
 
struct  intel::hexl::fpga::Object_DyadicMultiply
 struct Object_DyadicMultiply Stores the parameters for the multiplication More...
 
struct  intel::hexl::fpga::Object_KeySwitch
 struct Object_KeySwitch Stores the parameters for the keyswitch More...
 
class  intel::hexl::fpga::Buffer
 Struct Buffer Structure containing information for the polynomial operations. More...
 
struct  intel::hexl::fpga::FPGAObject
 Parent Struct FPGAObject stores the blob of objects to be transfered to the FPGA. More...
 
struct  intel::hexl::fpga::FPGAObject_NTT
 Struct FPGAObject_NTT stores the NTT blob of objects to be transfered to the FPGA. More...
 
struct  intel::hexl::fpga::FPGAObject_INTT
 Struct FPGAObject_INTT stores the INTT blob of objects to be transfered to the FPGA. More...
 
struct  intel::hexl::fpga::FPGAObject_DyadicMultiply
 Struct FPGAObject_DyadicMultiply Stores the multiplication blob of objects to be transfered to the FPGA. More...
 
struct  intel::hexl::fpga::FPGAObject_KeySwitch
 Struct FPGAObject_KeySwitch Stores the keyswitch blob of objects to be transfered to the FPGA. More...
 
struct  intel::hexl::fpga::KeySwitchMemKeys
 
class  intel::hexl::fpga::Device
 Class Device. More...
 
class  intel::hexl::fpga::DevicePool
 Class DevicePool. More...
 

Namespaces

 intel
 
 intel::hexl
 
 intel::hexl::fpga
 

Macros

#define BIT_MASK(BITS)   ((1UL << BITS) - 1)
 
#define MAX_RNS_MODULUS_SIZE   7
 
#define RWMEM_FLAG   1
 

Enumerations

enum  intel::hexl::fpga::KeySwitch_Kernels { intel::hexl::fpga::KEYSWITCH_LOAD, intel::hexl::fpga::KEYSWITCH_STORE, intel::hexl::fpga::KEYSWITCH_NUM_KERNELS }
 
enum  intel::hexl::fpga::kernel_t {
  intel::hexl::fpga::NONE, intel::hexl::fpga::kernel_t::DYADIC_MULTIPLY, intel::hexl::fpga::kernel_t::NTT, intel::hexl::fpga::kernel_t::INTT,
  intel::hexl::fpga::kernel_t::KEYSWITCH, intel::hexl::fpga::kernel_t::DYADIC_MULTIPLY_KEYSWITCH
}
 
enum  intel::hexl::fpga::DEV_TYPE { intel::hexl::fpga::NONE = 0, intel::hexl::fpga::NONE, intel::hexl::fpga::EMU, intel::hexl::fpga::FPGA }
 enum DEV_TYPE Lists the available device mode: emulation mode, FPGA More...
 

Functions

void intel::hexl::fpga::attach_fpga_pooling ()
 attach_fpga_pooling Attach a device to this thread More...
 
void intel::hexl::fpga::detach_fpga_pooling ()
 detach_fpga_pooling Detach a device from this thread More...
 

Variables

__extension__ typedef unsigned
__int128 
intel::hexl::fpga::fpga_uint128_t
 

Macro Definition Documentation

#define BIT_MASK (   BITS)    ((1UL << BITS) - 1)
#define MAX_RNS_MODULUS_SIZE   7
#define RWMEM_FLAG   1