5个版本 (3个重大更新)

0.4.0-alpha.02024年7月17日
0.3.0 2024年6月24日
0.2.0 2024年4月9日
0.1.3 2024年1月30日
0.1.2 2024年1月22日

#1792 in 加密学

每月21次下载
用于 tfhe

BSD-3-Clause-Clear

1MB
14K SLoC

CUDA 12K SLoC // 0.0% comments C++ 2K SLoC // 0.1% comments Rust 1K SLoC // 0.0% comments Shell 16 SLoC // 0.2% comments Forge Config 3 SLoC

TFHE Cuda后端

简介

tfhe-cuda-backend 包含了Zama变体TFHE的GPU加速代码。它实现了CUDA/C++函数,用于在LWE密文上进行同态运算。

它提供了在GPU上分配内存、在CPU和GPU之间复制数据、创建和销毁CUDA流等功能。

  • cuda_create_streamcuda_destroy_stream
  • cuda_malloccuda_check_valid_malloc
  • cuda_memcpy_async_to_cpucuda_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
  • 更大精度的可编程引导程序(wop PBS,支持多达16位的信息,而经典PBS只支持最多8位的信息)及其子组件: cuda_wop_pbs_64cuda_extract_bits_64cuda_circuit_bootstrap_64cuda_cmux_tree_64cuda_blind_rotation_sample_extraction_64
  • 分层操作的加速:cuda_negate_lwe_ciphertext_vector_64cuda_add_lwe_ciphertext_vector_64cuda_add_lwe_ciphertext_vector_plaintext_vector_64cuda_mult_lwe_ciphertext_vector_cleartext_vector

依赖关系

免责声明:目前不支持在Windows/Mac上编译。仅支持Nvidia GPU。

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

构建

存储在tfhe-cuda-backend中的Cuda项目可以独立于TFHE-rs以以下方式编译

git clone [email protected]:zama-ai/tfhe-rs
cd backends/tfhe-cuda-backend/cuda
mkdir build
cd build
cmake ..
make

计算能力会自动检测(使用第一个GPU信息)并相应设置。如果您的计算机没有可用的Nvidia GPU,如果已安装nvcc编译器,则编译将正常工作。生成的可执行文件将针对7.0计算能力(sm_70)。

许可证

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

无运行时依赖