mirror of
https://github.com/zama-ai/tfhe-rs.git
synced 2026-01-08 22:28:01 -05:00
116 lines
5.6 KiB
C
116 lines
5.6 KiB
C
#ifndef CUDA_BOOTSTRAP_H
|
|
#define CUDA_BOOTSTRAP_H
|
|
|
|
#include "pbs_enums.h"
|
|
#include <stdint.h>
|
|
|
|
extern "C" {
|
|
void cuda_fourier_polynomial_mul(void *stream, uint32_t gpu_index,
|
|
void const *input1, void const *input2,
|
|
void *output, uint32_t polynomial_size,
|
|
uint32_t total_polynomials);
|
|
|
|
void cuda_convert_lwe_programmable_bootstrap_key_32(
|
|
void *stream, uint32_t gpu_index, void *dest, void const *src,
|
|
uint32_t input_lwe_dim, uint32_t glwe_dim, uint32_t level_count,
|
|
uint32_t polynomial_size);
|
|
|
|
void cuda_convert_lwe_programmable_bootstrap_key_64(
|
|
void *stream, uint32_t gpu_index, void *dest, void const *src,
|
|
uint32_t input_lwe_dim, uint32_t glwe_dim, uint32_t level_count,
|
|
uint32_t polynomial_size);
|
|
|
|
void cuda_convert_lwe_programmable_bootstrap_key_128(
|
|
void *stream, uint32_t gpu_index, void *dest, void const *src,
|
|
uint32_t input_lwe_dim, uint32_t glwe_dim, uint32_t level_count,
|
|
uint32_t polynomial_size);
|
|
|
|
uint64_t scratch_cuda_programmable_bootstrap_amortized_32(
|
|
void *stream, uint32_t gpu_index, int8_t **pbs_buffer,
|
|
uint32_t glwe_dimension, uint32_t polynomial_size,
|
|
uint32_t input_lwe_ciphertext_count, bool allocate_gpu_memory);
|
|
|
|
uint64_t scratch_cuda_programmable_bootstrap_amortized_64(
|
|
void *stream, uint32_t gpu_index, int8_t **pbs_buffer,
|
|
uint32_t glwe_dimension, uint32_t polynomial_size,
|
|
uint32_t input_lwe_ciphertext_count, bool allocate_gpu_memory);
|
|
|
|
void cuda_programmable_bootstrap_amortized_lwe_ciphertext_vector_32(
|
|
void *stream, uint32_t gpu_index, void *lwe_array_out,
|
|
void const *lwe_output_indexes, void const *lut_vector,
|
|
void const *lut_vector_indexes, void const *lwe_array_in,
|
|
void const *lwe_input_indexes, void const *bootstrapping_key,
|
|
int8_t *pbs_buffer, uint32_t lwe_dimension, uint32_t glwe_dimension,
|
|
uint32_t polynomial_size, uint32_t base_log, uint32_t level_count,
|
|
uint32_t num_samples);
|
|
|
|
void cuda_programmable_bootstrap_amortized_lwe_ciphertext_vector_64(
|
|
void *stream, uint32_t gpu_index, void *lwe_array_out,
|
|
void const *lwe_output_indexes, void const *lut_vector,
|
|
void const *lut_vector_indexes, void const *lwe_array_in,
|
|
void const *lwe_input_indexes, void const *bootstrapping_key,
|
|
int8_t *pbs_buffer, uint32_t lwe_dimension, uint32_t glwe_dimension,
|
|
uint32_t polynomial_size, uint32_t base_log, uint32_t level_count,
|
|
uint32_t num_samples);
|
|
|
|
void cleanup_cuda_programmable_bootstrap_amortized(void *stream,
|
|
uint32_t gpu_index,
|
|
int8_t **pbs_buffer);
|
|
|
|
uint64_t scratch_cuda_programmable_bootstrap_32(
|
|
void *stream, uint32_t gpu_index, int8_t **buffer, uint32_t lwe_dimension,
|
|
uint32_t glwe_dimension, uint32_t polynomial_size, uint32_t level_count,
|
|
uint32_t input_lwe_ciphertext_count, bool allocate_gpu_memory,
|
|
PBS_MS_REDUCTION_T noise_reduction_type);
|
|
|
|
uint64_t scratch_cuda_programmable_bootstrap_64(
|
|
void *stream, uint32_t gpu_index, int8_t **buffer, uint32_t lwe_dimension,
|
|
uint32_t glwe_dimension, uint32_t polynomial_size, uint32_t level_count,
|
|
uint32_t input_lwe_ciphertext_count, bool allocate_gpu_memory,
|
|
PBS_MS_REDUCTION_T noise_reduction_type);
|
|
|
|
uint64_t scratch_cuda_programmable_bootstrap_32_64(
|
|
void *stream, uint32_t gpu_index, int8_t **buffer, uint32_t lwe_dimension,
|
|
uint32_t glwe_dimension, uint32_t polynomial_size, uint32_t level_count,
|
|
uint32_t input_lwe_ciphertext_count, bool allocate_gpu_memory,
|
|
PBS_MS_REDUCTION_T noise_reduction_type);
|
|
|
|
uint64_t scratch_cuda_programmable_bootstrap_128(
|
|
void *stream, uint32_t gpu_index, int8_t **buffer, uint32_t lwe_dimension,
|
|
uint32_t glwe_dimension, uint32_t polynomial_size, uint32_t level_count,
|
|
uint32_t input_lwe_ciphertext_count, bool allocate_gpu_memory,
|
|
PBS_MS_REDUCTION_T noise_reduction_type);
|
|
|
|
void cuda_programmable_bootstrap_lwe_ciphertext_vector_64_64(
|
|
void *stream, uint32_t gpu_index, void *lwe_array_out,
|
|
void const *lwe_output_indexes, void const *lut_vector,
|
|
void const *lut_vector_indexes, void const *lwe_array_in,
|
|
void const *lwe_input_indexes, void const *bootstrapping_key,
|
|
int8_t *buffer, uint32_t lwe_dimension, uint32_t glwe_dimension,
|
|
uint32_t polynomial_size, uint32_t base_log, uint32_t level_count,
|
|
uint32_t num_samples, uint32_t num_many_lut, uint32_t lut_stride);
|
|
|
|
void cuda_programmable_bootstrap_lwe_ciphertext_vector_32_64(
|
|
void *stream, uint32_t gpu_index, void *lwe_array_out,
|
|
void const *lwe_output_indexes, void const *lut_vector,
|
|
void const *lut_vector_indexes, void const *lwe_array_in,
|
|
void const *lwe_input_indexes, void const *bootstrapping_key,
|
|
int8_t *buffer, uint32_t lwe_dimension, uint32_t glwe_dimension,
|
|
uint32_t polynomial_size, uint32_t base_log, uint32_t level_count,
|
|
uint32_t num_samples, uint32_t num_many_lut, uint32_t lut_stride);
|
|
|
|
void cuda_programmable_bootstrap_lwe_ciphertext_vector_128(
|
|
void *stream, uint32_t gpu_index, void *lwe_array_out,
|
|
void const *lut_vector, void const *lwe_array_in,
|
|
void const *bootstrapping_key, int8_t *buffer, uint32_t lwe_dimension,
|
|
uint32_t glwe_dimension, uint32_t polynomial_size, uint32_t base_log,
|
|
uint32_t level_count, uint32_t num_samples);
|
|
|
|
void cleanup_cuda_programmable_bootstrap(void *stream, uint32_t gpu_index,
|
|
int8_t **pbs_buffer);
|
|
|
|
void cleanup_cuda_programmable_bootstrap_128(void *stream, uint32_t gpu_index,
|
|
int8_t **pbs_buffer);
|
|
}
|
|
#endif // CUDA_BOOTSTRAP_H
|