Intel HEXL for FPGA
Intel Homomorphic Encryption FPGA Acceleration Library, accelerating the modular arithmetic operations used in homomorphic encryption.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Namespaces | Functions
intel::hexl Namespace Reference

Namespaces

 fpga
 

Functions

void acquire_FPGA_resources ()
 Function acquire_FPGA_resources Called without any parameter, reserves the FPGA hardware resources. More...
 
void release_FPGA_resources ()
 Function release_FPGA_resources Called without any parameter, releases the FPGA hardware resources once we are done. More...
 
void set_worksize_DyadicMultiply (uint64_t ws)
 Function set_worksize_DyadicMultiply Reserves software resources for the multiplication. More...
 
void DyadicMultiply (uint64_t *results, const uint64_t *operand1, const uint64_t *operand2, uint64_t n, const uint64_t *moduli, uint64_t n_moduli)
 Function DyadicMultiply Executes ciphertext ciphertext multiplication. More...
 
bool DyadicMultiplyCompleted ()
 Function DyadicMultiplyCompleted Executed after ciphertext ciphertext multiplication to wrap up the task. More...
 
void set_worksize_NTT (uint64_t ws)
 Function set_worksize_NTT Reserves software resources for the Number Theoretic Transform. More...
 
void NTT (uint64_t *operand, const uint64_t *root_of_unity_powers, const uint64_t *precon_root_of_unity_powers, uint64_t coeff_modulus, uint64_t n)
 Function NTT Executes in place the Number Theoretic Transform. More...
 
bool NTTCompleted ()
 Function NTTCompleted Executed after the NTT to wrap up the computation No parameters. More...
 
void set_worksize_INTT (uint64_t ws)
 Function set_worksize_INTT Reserves software resources for the inverse Number Theoretic Transform. More...
 
void INTT (uint64_t *operand, const uint64_t *inv_root_of_unity_powers, const uint64_t *precon_inv_root_of_unity_powers, uint64_t coeff_modulus, uint64_t inv_n, uint64_t inv_n_w, uint64_t n)
 Function INTT Executes in place the inverse Number Theoretic Transform. More...
 
bool INTTCompleted ()
 Function INTTCompleted Executed after the INTT to wrap up the computation No parameters. More...
 

Function Documentation

void intel::hexl::acquire_FPGA_resources ( )

Function acquire_FPGA_resources Called without any parameter, reserves the FPGA hardware resources.

void intel::hexl::DyadicMultiply ( uint64_t *  results,
const uint64_t *  operand1,
const uint64_t *  operand2,
uint64_t  n,
const uint64_t *  moduli,
uint64_t  n_moduli 
)

Function DyadicMultiply Executes ciphertext ciphertext multiplication.

Parameters
[out]resultsstores the multiplication results
[in]operand1stores the input ciphertext 1
[in]operand2stores the input ciphertext 2
[in]nstores polynomial size
[in]modulistores modulus size
[in]n_modulistores the number of moduli
bool intel::hexl::DyadicMultiplyCompleted ( )

Function DyadicMultiplyCompleted Executed after ciphertext ciphertext multiplication to wrap up the task.

void intel::hexl::INTT ( uint64_t *  operand,
const uint64_t *  inv_root_of_unity_powers,
const uint64_t *  precon_inv_root_of_unity_powers,
uint64_t  coeff_modulus,
uint64_t  inv_n,
uint64_t  inv_n_w,
uint64_t  n 
)

Function INTT Executes in place the inverse Number Theoretic Transform.

Parameters
[in]operandinput ciphertext. This is also the output result since the transform is in place.
[out]operandoutput ciphertext. This is also the input result since the transform is in place.
[in]inv_root_of_unity_powersvector of twiddle factors
[in]precon_inv_root_of_unity_powersvector of precomputed inverse twiddle factors
[in]coeff_modulusstores the modulus
[in]inv_nstores the normalization factor for the inverse transform. Inverse of the polynomial size ( 1/n)
[in]inv_n_wstores the normalization factor for the constant.
[in]nstores the size of the Number Theoretic Transform
bool intel::hexl::INTTCompleted ( )

Function INTTCompleted Executed after the INTT to wrap up the computation No parameters.

void intel::hexl::NTT ( uint64_t *  operand,
const uint64_t *  root_of_unity_powers,
const uint64_t *  precon_root_of_unity_powers,
uint64_t  coeff_modulus,
uint64_t  n 
)

Function NTT Executes in place the Number Theoretic Transform.

Parameters
[in]operandinput ciphertext. This is also the output result since the transform is in place.
[out]operandoutput ciphertext. This is also the input result since the transform is in place.
[in]root_of_unity_powersvector of twiddle factors
[in]precon_root_of_unity_powersvector of precomputed inverse twiddle factors
[in]coeff_modulusstores the modulus
[in]nstores the size of the Number Theoretic Transform
bool intel::hexl::NTTCompleted ( )

Function NTTCompleted Executed after the NTT to wrap up the computation No parameters.

void intel::hexl::release_FPGA_resources ( )

Function release_FPGA_resources Called without any parameter, releases the FPGA hardware resources once we are done.

void intel::hexl::set_worksize_DyadicMultiply ( uint64_t  ws)

Function set_worksize_DyadicMultiply Reserves software resources for the multiplication.

Parameters
wsinteger storing the worksize
void intel::hexl::set_worksize_INTT ( uint64_t  ws)

Function set_worksize_INTT Reserves software resources for the inverse Number Theoretic Transform.

Parameters
wsinteger storing the worksize
void intel::hexl::set_worksize_NTT ( uint64_t  ws)

Function set_worksize_NTT Reserves software resources for the Number Theoretic Transform.

Parameters
wsinteger storing the worksize