#fhe #homomorphic #encryption #cpu-gpu #fully #low-latency

concrete-cuda

Cuda版本的concrete FHE库实现

2个版本

0.1.1 2022年10月19日
0.1.0 2022年7月6日

#2382 in 密码学


2个crate中使用(通过concrete-core

BSD-3-Clause-Clear

680KB
9K SLoC

CUDA 9K SLoC // 0.0% comments C++ 365 SLoC // 0.0% comments Rust 232 SLoC Forge Config 3 SLoC Shell 1 SLoC

concrete-cuda

简介

本仓库包含Zama团队TFHE变种的GPU加速代码。它实现了CUDA/C++函数,以在LWE密文上执行同态操作。

在这个第一个API中,它提供了在GPU上分配内存、在CPU和GPU之间复制数据、创建和销毁Cuda流等功能。

  • cuda_create_stream, cuda_destroy_stream
  • cuda_malloc, cuda_check_valid_malloc
  • cuda_memcpy_async_to_cpu, cuda_memcpy_async_to_gpu
  • cuda_get_number_of_gpus
  • cuda_synchronize_device 它提供的加密操作包括
  • TFHE可编程引导的摊销实现:cuda_bootstrap_amortized_lwe_ciphertext_vector_32cuda_bootstrap_amortized_lwe_ciphertext_vector_64
  • TFHE可编程引导的低延迟实现:cuda_bootstrap_low_latency_lwe_ciphertext_vector_32cuda_bootstrap_low_latency_lwe_ciphertext_vector_64
  • 密钥切换:cuda_keyswitch_lwe_ciphertext_vector_32cuda_keyswitch_lwe_ciphertext_vector_64

这些C++/CUDA函数通过一个专门的Rust API对Concrete-core实现可用,该API被封装在backend_cuda中。

依赖关系

免责声明:Windows/Mac上的编译尚未支持。仅支持Nvidia GPU。

  • nvidia驱动程序 - 例如,如果您正在运行Ubuntu 20.04,请检查此页面进行安装
  • nvcc >= 10.0
  • gcc >= 8.0 - 检查此页面获取关于nvcc/gcc兼容版本的详细信息
  • cmake >= 3.8

构建

concrete-cuda函数通过backend_cudaconcrete-core中可用。要使用Cuda后端编译concrete-core,安装上述依赖项,然后在concrete-core中输入

cargo build --release --features=backend_cuda

独立Cuda文件编译

存储在concrete-cuda中的Cuda项目可以以下方式独立于Rust项目进行编译

git clone [email protected]:zama-ai/concrete-core
cd concrete-core/concrete-cuda/cuda
mkdir build
cd build
cmake ..
make

计算能力会自动检测(使用第一个GPU信息)并相应设置。

许可

本软件根据BSD-3-Clause-Clear许可进行分发。如果您有任何问题,请联系我们:hello@zama.ai

依赖关系

~0.3–1MB
~23K SLoC