diff --git a/tfhe/src/core_crypto/gpu/vec.rs b/tfhe/src/core_crypto/gpu/vec.rs index b18b791b3d..fc0e5d9d76 100644 --- a/tfhe/src/core_crypto/gpu/vec.rs +++ b/tfhe/src/core_crypto/gpu/vec.rs @@ -1,5 +1,5 @@ use crate::core_crypto::gpu::slice::{CudaSlice, CudaSliceMut}; -use crate::core_crypto::gpu::{synchronize_device, CudaStreams}; +use crate::core_crypto::gpu::CudaStreams; use crate::core_crypto::prelude::Numeric; use std::collections::Bound::{Excluded, Included, Unbounded}; use std::ffi::c_void; @@ -447,8 +447,6 @@ impl Drop for CudaVec { /// Free memory for pointer `ptr` synchronously fn drop(&mut self) { for &gpu_index in self.gpu_indexes.iter() { - // Synchronizes the device to be sure no stream is still using this pointer - synchronize_device(gpu_index); unsafe { cuda_drop(self.get_mut_c_ptr(gpu_index), gpu_index) }; } } diff --git a/tfhe/src/integer/gpu/server_key/radix/add.rs b/tfhe/src/integer/gpu/server_key/radix/add.rs index 06e6e832b2..3766edee91 100644 --- a/tfhe/src/integer/gpu/server_key/radix/add.rs +++ b/tfhe/src/integer/gpu/server_key/radix/add.rs @@ -370,6 +370,7 @@ impl CudaServerKey { let mut result = unsafe { ciphertexts[0].duplicate_async(streams) }; if ciphertexts.len() == 1 { + streams.synchronize(); return Some(result); }