|
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.
|
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_KeySwitch (uint64_t ws) |
| Function set_worksize_KeySwitch Reserves software resources for the KeySwitch. More... | |
| void | KeySwitch (uint64_t *result, const uint64_t *t_target_iter_ptr, uint64_t n, uint64_t decomp_modulus_size, uint64_t key_modulus_size, uint64_t rns_modulus_size, uint64_t key_component_count, const uint64_t *moduli, const uint64_t **k_switch_keys, const uint64_t *modswitch_factors, const uint64_t *twiddle_factors=nullptr) |
| Function KeySwitch Executes KeySwitch operation. More... | |
| bool | KeySwitchCompleted () |
| Function KeySwitchCompleted Executed after KeySwitch to sync up the outstanding KeySwitch tasks. More... | |
| void | _set_worksize_NTT (uint64_t ws) |
| Function _set_worksize_NTT [[deprecated]] 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 [[deprecated]] Executes in place the Number Theoretic Transform. More... | |
| bool | _NTTCompleted () |
| Function _NTTCompleted [[deprecated]] Executed after the NTT to wrap up the computation No parameters. More... | |
| void | _set_worksize_INTT (uint64_t ws) |
| Function _set_worksize_INTT [[deprecated]] 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 [[deprecated]] Executes in place the inverse Number Theoretic Transform. More... | |
| bool | _INTTCompleted () |
| Function _INTTCompleted [[deprecated]] Executed after the INTT to wrap up the computation No parameters. More... | |
| 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 [[deprecated]] Executes in place the inverse Number Theoretic Transform.
| [in] | operand | input ciphertext. This is also the output result since the transform is in place. |
| [out] | operand | output ciphertext. This is also the input result since the transform is in place. |
| [in] | inv_root_of_unity_powers | vector of twiddle factors |
| [in] | precon_inv_root_of_unity_powers | vector of precomputed inverse twiddle factors |
| [in] | coeff_modulus | stores the modulus |
| [in] | inv_n | stores the normalization factor for the inverse transform. Inverse of the polynomial size ( 1/n) |
| [in] | inv_n_w | stores the normalization factor for the constant. |
| [in] | n | stores the size of the Number Theoretic Transform |
| bool intel::hexl::_INTTCompleted | ( | ) |
Function _INTTCompleted [[deprecated]] 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 [[deprecated]] Executes in place the Number Theoretic Transform.
| [in] | operand | input ciphertext. This is also the output result since the transform is in place. |
| [out] | operand | output ciphertext. This is also the input result since the transform is in place. |
| [in] | root_of_unity_powers | vector of twiddle factors |
| [in] | precon_root_of_unity_powers | vector of precomputed inverse twiddle factors |
| [in] | coeff_modulus | stores the modulus |
| [in] | n | stores the size of the Number Theoretic Transform |
| bool intel::hexl::_NTTCompleted | ( | ) |
Function _NTTCompleted [[deprecated]] Executed after the NTT to wrap up the computation No parameters.
| void intel::hexl::_set_worksize_INTT | ( | uint64_t | ws | ) |
Function _set_worksize_INTT [[deprecated]] Reserves software resources for the inverse Number Theoretic Transform.
| ws | integer storing the worksize |
| void intel::hexl::_set_worksize_NTT | ( | uint64_t | ws | ) |
Function _set_worksize_NTT [[deprecated]] Reserves software resources for the Number Theoretic Transform.
| ws | integer storing the worksize |
| 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.
| [out] | results | stores the multiplication results |
| [in] | operand1 | stores the input ciphertext 1 |
| [in] | operand2 | stores the input ciphertext 2 |
| [in] | n | stores polynomial size |
| [in] | moduli | stores modulus size |
| [in] | n_moduli | stores the number of moduli |
| bool intel::hexl::DyadicMultiplyCompleted | ( | ) |
Function DyadicMultiplyCompleted Executed after ciphertext ciphertext multiplication to wrap up the task.
| void intel::hexl::KeySwitch | ( | uint64_t * | result, |
| const uint64_t * | t_target_iter_ptr, | ||
| uint64_t | n, | ||
| uint64_t | decomp_modulus_size, | ||
| uint64_t | key_modulus_size, | ||
| uint64_t | rns_modulus_size, | ||
| uint64_t | key_component_count, | ||
| const uint64_t * | moduli, | ||
| const uint64_t ** | k_switch_keys, | ||
| const uint64_t * | modswitch_factors, | ||
| const uint64_t * | twiddle_factors = nullptr |
||
| ) |
Function KeySwitch Executes KeySwitch operation.
| [out] | results | stores the keyswitch results |
| [in] | t_target_iter_ptr | stores the input ciphertext data |
| [in] | n | stores polynomial size |
| [in] | decomp_modulus_size | stores modulus size |
| [in] | key_modulus_size | stores key modulus size |
| [in] | rns_modulus_size | stores the rns modulus size |
| [in] | key_component_size | stores the key component size |
| [in] | moduli | stores the moduli |
| [in] | k_switch_keys | stores the keys for keyswitch operation |
| [in] | modswitch_factors | stores the factors for modular switch |
| [in] | twiddle_factors | stores the twiddle factors |
| bool intel::hexl::KeySwitchCompleted | ( | ) |
Function KeySwitchCompleted Executed after KeySwitch to sync up the outstanding KeySwitch tasks.
| 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.
| ws | integer storing the worksize |
| void intel::hexl::set_worksize_KeySwitch | ( | uint64_t | ws | ) |
Function set_worksize_KeySwitch Reserves software resources for the KeySwitch.
| ws | integer storing the worksize |
1.8.5