pub struct CudaCompressedCiphertextList { /* private fields */ }Implementations§
Source§impl CudaCompressedCiphertextList
impl CudaCompressedCiphertextList
pub fn gpu_indexes(&self) -> &[GpuIndex]
pub fn len(&self) -> usize
pub fn is_empty(&self) -> bool
pub fn get_kind_of(&self, index: usize) -> Option<DataKind>
pub fn get<T>(
&self,
index: usize,
decomp_key: &CudaDecompressionKey,
streams: &CudaStreams,
) -> Result<Option<T>>where
T: CudaExpandable,
pub fn get_decompression_size_on_gpu( &self, index: usize, decomp_key: &CudaDecompressionKey, streams: &CudaStreams, ) -> Option<u64>
Sourcepub fn to_compressed_ciphertext_list(
&self,
streams: &CudaStreams,
) -> CompressedCiphertextList
pub fn to_compressed_ciphertext_list( &self, streams: &CudaStreams, ) -> CompressedCiphertextList
use tfhe::core_crypto::gpu::CudaStreams;
use tfhe::integer::gpu::ciphertext::boolean_value::CudaBooleanBlock;
use tfhe::integer::gpu::ciphertext::compressed_ciphertext_list::CudaCompressedCiphertextListBuilder;
use tfhe::integer::gpu::ciphertext::{CudaSignedRadixCiphertext, CudaUnsignedRadixCiphertext};
use tfhe::integer::gpu::gen_keys_radix_gpu;
use tfhe::shortint::parameters::{
PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128,
COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128
};
let block_params = PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
let compression_params = COMP_PARAM_GPU_MULTI_BIT_GROUP_4_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M128;
let num_blocks = 32;
let streams = CudaStreams::new_multi_gpu();
let (radix_cks, _) = gen_keys_radix_gpu(block_params,
num_blocks,
&streams,
);
let cks = radix_cks.as_ref();
let private_compression_key =
cks.new_compression_private_key(compression_params);
let (cuda_compression_key, cuda_decompression_key) =
radix_cks.new_cuda_compression_decompression_keys(&private_compression_key, &streams);
let private_compression_key =
cks.new_compression_private_key(compression_params);
let (compressed_compression_key, compressed_decompression_key) =
radix_cks.new_compressed_compression_decompression_keys(&private_compression_key);
let cuda_compression_key = compressed_compression_key.decompress_to_cuda(&streams);
let compression_key = compressed_compression_key.decompress();
let decompression_key = compressed_decompression_key.decompress();
let ct1 = radix_cks.encrypt(3_u32);
let ct2 = radix_cks.encrypt_signed(-2);
let ct3 = radix_cks.encrypt_bool(true);
// Copy to GPU
let d_ct1 = CudaUnsignedRadixCiphertext::from_radix_ciphertext(&ct1, &streams);
let d_ct2 = CudaSignedRadixCiphertext::from_signed_radix_ciphertext(&ct2, &streams);
let d_ct3 = CudaBooleanBlock::from_boolean_block(&ct3, &streams);
let cuda_compressed = CudaCompressedCiphertextListBuilder::new()
.push(d_ct1, &streams)
.push(d_ct2, &streams)
.push(d_ct3, &streams)
.build(&cuda_compression_key, &streams);
let converted_compressed = cuda_compressed.to_compressed_ciphertext_list(&streams);pub fn duplicate(&self, streams: &CudaStreams) -> Self
Trait Implementations§
Source§impl Clone for CudaCompressedCiphertextList
impl Clone for CudaCompressedCiphertextList
Source§impl<'de> Deserialize<'de> for CudaCompressedCiphertextList
impl<'de> Deserialize<'de> for CudaCompressedCiphertextList
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for CudaCompressedCiphertextList
impl RefUnwindSafe for CudaCompressedCiphertextList
impl Send for CudaCompressedCiphertextList
impl Sync for CudaCompressedCiphertextList
impl Unpin for CudaCompressedCiphertextList
impl UnwindSafe for CudaCompressedCiphertextList
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more