|
Intel HEXL for FPGA
Intel Homomorphic Encryption FPGA Acceleration Library, accelerating the modular arithmetic operations used in homomorphic encryption.
|
Classes | |
| struct | moduli_info_t |
| Struct moduli_info_t. More... | |
| struct | Object |
| Struct Object. More... | |
| struct | Object_NTT |
| Struct Object NTT Stores the Number Theoretic Transform parameters. More... | |
| struct | Object_INTT |
| Struct Object INTT Stores the Inverse Number Theoretic Transform parameters. More... | |
| struct | Object_DyadicMultiply |
| struct Object_DyadicMultiply Stores the parameters for the multiplication More... | |
| class | Buffer |
| Struct Buffer Structure containing information for the polynomial operations. More... | |
| struct | FPGAObject |
| Parent Struct FPGAObject stores the blob of objects to be transfered to the FPGA. More... | |
| struct | FPGAObject_NTT |
| Struct FPGAObject_NTT stores the NTT blob of objects to be transfered to the FPGA. More... | |
| struct | FPGAObject_INTT |
| Struct FPGAObject_INTT stores the INTT blob of objects to be transfered to the FPGA. More... | |
| struct | FPGAObject_DyadicMultiply |
| Struct FPGAObject_DyadicMultiply Stores the multiplication blob of objects to be transfered to the FPGA. More... | |
| class | Device |
| Class Device. More... | |
| class | DevicePool |
| Class DevicePool. More... | |
| class | StackTrace |
| Class StackTrace Allows the investigation of the traces dump Dumps the traces. More... | |
Enumerations | |
| enum | DEV_TYPE { NONE = 0, EMU, FPGA } |
| enum DEV_TYPE Lists the available device mode: CPU, emulation mode, FPGA More... | |
Functions | |
| void | set_worksize_DyadicMultiply (uint64_t ws) |
| function set_worksize_DyadicMultiply 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 Implements the multiplication of two ciphertexts More... | |
| bool | DyadicMultiplyCompleted () |
| DyadicMultiplyCompleted Executed after the multiplication to wrap up the operation More... | |
| void | set_worksize_DyadicMultiply_int (uint64_t n) |
| set_worksize_DyadicMultiply_int Sets the worksize for the multiplication More... | |
| void | DyadicMultiply_int (uint64_t *results, const uint64_t *operand1, const uint64_t *operand2, uint64_t n, const uint64_t *moduli, uint64_t n_moduli) |
| DyadicMultiply_int Internal implementation of the DyadicMultiply function call More... | |
| bool | DyadicMultiplyCompleted_int () |
| DyadicMultiplyCompleted_int Internal implementation of the DyadicMultiplyCompleted function. Called after completion of the multiplication operation More... | |
| void | attach_fpga_pooling () |
| attach_fpga_pooling Attach a device to this thread More... | |
| void | detach_fpga_pooling () |
| detach_fpga_pooling Detach a device from this thread More... | |
| void | acquire_FPGA_resources () |
| acquire_FPGA_resources Called at the beginning of the workload to acquire the usage of an FPGA More... | |
| void | release_FPGA_resources () |
| release_FPGA_resources Called at the end of the workload to release the FPGA More... | |
| void | set_worksize_INTT (uint64_t ws) |
| set_worksize_INTT Sets the work size of the INTT operation More... | |
| void | INTT (uint64_t *coeff_poly, 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) |
| INTT Calls the Inverse Number Theoretic Transform More... | |
| bool | INTTCompleted () |
| INTTCompleted Called after the completion of the INTT operation More... | |
| void | set_worksize_INTT_int (uint64_t n) |
| set_worksize_INTT_int Internal implementation. Sets the work size of the INTT operation More... | |
| void | INTT_int (uint64_t *coeff_poly, 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) |
| INTT Calls the Inverse Number Theoretic Transform More... | |
| bool | INTTCompleted_int () |
| INTTCompleted_int Called after the completion of the INTT operation. Internal implementation. More... | |
| void | set_worksize_NTT (uint64_t ws) |
| set_worksize_NTT Sets the work size for NTT More... | |
| void | NTT (uint64_t *coeff_poly, const uint64_t *root_of_unity_powers, const uint64_t *precon_root_of_unity_powers, uint64_t coeff_modulus, uint64_t n) |
| NTT Calls the Number Theorectic Transform More... | |
| bool | NTTCompleted () |
| NTTCompleted Called after completion of the Number Theoretic Transform More... | |
| void | set_worksize_NTT_int (uint64_t n) |
| set_worksize_NTT_int Sets the work size for NTT. Internal implementation. More... | |
| void | NTT_int (uint64_t *coeff_poly, const uint64_t *root_of_unity_powers, const uint64_t *precon_root_of_unity_powers, uint64_t coeff_modulus, uint64_t n) |
| NTT_int Calls the Number Theorectic Transform. Internal implementation. More... | |
| bool | NTTCompleted_int () |
| NTTCompleted_int Called after completion of the Number Theoretic Transform. Internal implementation. More... | |
Variables | |
| __extension__ typedef unsigned __int128 | fpga_uint128_t |
| void intel::hexl::fpga::acquire_FPGA_resources | ( | ) |
acquire_FPGA_resources Called at the beginning of the workload to acquire the usage of an FPGA
| void intel::hexl::fpga::attach_fpga_pooling | ( | ) |
attach_fpga_pooling Attach a device to this thread
| void intel::hexl::fpga::detach_fpga_pooling | ( | ) |
detach_fpga_pooling Detach a device from this thread
| void intel::hexl::fpga::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 Implements the multiplication of two ciphertexts
| [out] | results | stores the result of the multiplication |
| [in] | operand1 | vector of polynomial coefficients |
| [in] | operand2 | vector of polynomial coefficients |
| [in] | n | polynomial size |
| [in] | moduli | vector of modulus |
| [in] | n_moduli | number of modulus in the vector of modulus |
| void intel::hexl::fpga::DyadicMultiply_int | ( | uint64_t * | results, |
| const uint64_t * | operand1, | ||
| const uint64_t * | operand2, | ||
| uint64_t | n, | ||
| const uint64_t * | moduli, | ||
| uint64_t | n_moduli | ||
| ) |
DyadicMultiply_int Internal implementation of the DyadicMultiply function call
| [out] | results | stores the output of the multiplication |
| [in] | operand1 | vector of polynomial coefficients |
| [in] | operand2 | vector of polynomial coefficients |
| [in] | n | polynomial size |
| [in] | moduli | vector of coefficient modulus |
| [in] | n_moduli | number of modulus in the vector of modulus |
| bool intel::hexl::fpga::DyadicMultiplyCompleted | ( | ) |
DyadicMultiplyCompleted Executed after the multiplication to wrap up the operation
| bool intel::hexl::fpga::DyadicMultiplyCompleted_int | ( | ) |
DyadicMultiplyCompleted_int Internal implementation of the DyadicMultiplyCompleted function. Called after completion of the multiplication operation
| void intel::hexl::fpga::INTT | ( | uint64_t * | coeff_poly, |
| 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 | ||
| ) |
INTT Calls the Inverse Number Theoretic Transform
| [out] | coef_poly | vector of polynomial coefficients |
| [in] | coef_poly | vector of polynomial coefficients |
| [in] | inv_root_of_unity_powers | vector of twiddle factors |
| [in] | precon_inv_root_of_unity_powers | vector of twiddle factors for the constant |
| [in] | coeff_modulus | coefficient modulus |
| [in] | inv_n | normalization factor |
| [in] | inv_n_w | normalization factor for the constant |
| [in] | n | polynomial size |
| void intel::hexl::fpga::INTT_int | ( | uint64_t * | coeff_poly, |
| 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 | ||
| ) |
INTT Calls the Inverse Number Theoretic Transform
| [out] | coef_poly | vector of polynomial coefficients |
| [in] | coef_poly | vector of polynomial coefficients |
| [in] | inv_root_of_unity_powers | vector of twiddle factors |
| [in] | precon_inv_root_of_unity_powers | vector of twiddle factors for the constant |
| [in] | coeff_modulus | coefficient modulus |
| [in] | inv_n | normalization factor |
| [in] | inv_n_w | normalization factor for the constant |
| [in] | n | polynomial size |
| bool intel::hexl::fpga::INTTCompleted | ( | ) |
INTTCompleted Called after the completion of the INTT operation
| bool intel::hexl::fpga::INTTCompleted_int | ( | ) |
INTTCompleted_int Called after the completion of the INTT operation. Internal implementation.
| void intel::hexl::fpga::NTT | ( | uint64_t * | coeff_poly, |
| const uint64_t * | root_of_unity_powers, | ||
| const uint64_t * | precon_root_of_unity_powers, | ||
| uint64_t | coeff_modulus, | ||
| uint64_t | n | ||
| ) |
NTT Calls the Number Theorectic Transform
| [in] | coeff_poly | vector of polynomial coefficients |
| [out] | coeff_poly | vector of polynomial coefficients |
| [in] | root_of_unity_powers | vector of twiddle factors |
| [in] | precon_root_of_unity_power | vector of twiddle factors for the constant |
| [in] | coeff_modulus | stores the coefficient modulus |
| [in] | n | stores the polynomial size |
| void intel::hexl::fpga::NTT_int | ( | uint64_t * | coeff_poly, |
| const uint64_t * | root_of_unity_powers, | ||
| const uint64_t * | precon_root_of_unity_powers, | ||
| uint64_t | coeff_modulus, | ||
| uint64_t | n | ||
| ) |
NTT_int Calls the Number Theorectic Transform. Internal implementation.
| [in] | coeff_poly | vector of polynomial coefficients |
| [out] | coeff_poly | vector of polynomial coefficients |
| [in] | root_of_unity_powers | vector of twiddle factors |
| [in] | precon_root_of_unity_power | vector of twiddle factors for the constant |
| [in] | coeff_modulus | stores the coefficient modulus |
| [in] | n | stores the polynomial size |
| bool intel::hexl::fpga::NTTCompleted | ( | ) |
NTTCompleted Called after completion of the Number Theoretic Transform
| bool intel::hexl::fpga::NTTCompleted_int | ( | ) |
NTTCompleted_int Called after completion of the Number Theoretic Transform. Internal implementation.
| void intel::hexl::fpga::release_FPGA_resources | ( | ) |
release_FPGA_resources Called at the end of the workload to release the FPGA
| void intel::hexl::fpga::set_worksize_DyadicMultiply | ( | uint64_t | ws | ) |
function set_worksize_DyadicMultiply
| [in] | ws | work size |
| void intel::hexl::fpga::set_worksize_DyadicMultiply_int | ( | uint64_t | n | ) |
set_worksize_DyadicMultiply_int Sets the worksize for the multiplication
| [in] | n | work size |
| void intel::hexl::fpga::set_worksize_INTT | ( | uint64_t | ws | ) |
set_worksize_INTT Sets the work size of the INTT operation
| void intel::hexl::fpga::set_worksize_INTT_int | ( | uint64_t | n | ) |
set_worksize_INTT_int Internal implementation. Sets the work size of the INTT operation
| void intel::hexl::fpga::set_worksize_NTT | ( | uint64_t | ws | ) |
set_worksize_NTT Sets the work size for NTT
| [in] | ws | stores the worksize of the NTT |
| void intel::hexl::fpga::set_worksize_NTT_int | ( | uint64_t | n | ) |
set_worksize_NTT_int Sets the work size for NTT. Internal implementation.
| [in] | ws | stores the worksize of the NTT |
| __extension__ typedef unsigned __int128 intel::hexl::fpga::fpga_uint128_t |
1.8.5