From 08be62ebdb2865338fe3e35f9c561d2b9d331e96 Mon Sep 17 00:00:00 2001 From: nindanaoto Date: Fri, 12 Jul 2024 07:18:10 +0000 Subject: [PATCH] concrete-fft working --- CMakeLists.txt | 10 +++++++++- include/mulfft.hpp | 2 ++ src/CMakeLists.txt | 4 ++++ thirdparties/concrete-fft | 2 +- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5534d66..048d3ef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,6 +26,7 @@ option(USE_RANDEN "Use randen as CSPRNG" ON) option(USE_BLAKE3 "Use blake3 as CSPRNG" ON) option(USE_AVX512 "Use AVX512 ver. SPQLIOS" OFF) +option(USE_CONCRETE_FFT "Use concrete-fft" OFF) option(USE_MKL "Use Intel MKL" OFF) option(USE_FFTW3 "Use FFTW3" OFF) option(USE_SPQLIOX_AARCH64 "Use spqliox_aarch64" OFF) @@ -109,7 +110,7 @@ if(USE_FFTW3) add_subdirectory(thirdparties/fftw) elseif(USE_MKL) set(TFHEpp_DEFINITIONS - "${TFHEpp_DEFINITIONS};USE_MKL" + "${TFHEpp_DEFINITIONS};USE_MKL;USE_INTERLEAVED_FORMAT" PARENT_SCOPE) add_compile_definitions(USE_MKL) add_compile_definitions(USE_INTERLEAVED_FORMAT) @@ -126,6 +127,13 @@ elseif(USE_SPQLIOX_AARCH64) if(APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES "arm64") include_directories(/opt/homebrew/include) endif() +elseif(USE_CONCRETE_FFT) + set(TFHEpp_DEFINITIONS + "${TFHEpp_DEFINITIONS};USE_CONCRETE_FFT;USE_INTERLEAVED_FORMAT" + PARENT_SCOPE) + add_compile_definitions(USE_CONCRETE_FFT) + add_compile_definitions(USE_INTERLEAVED_FORMAT) + add_subdirectory(thirdparties/concrete-fft) else() add_subdirectory(thirdparties/spqlios) endif() diff --git a/include/mulfft.hpp b/include/mulfft.hpp index 16db68f..c9c0235 100644 --- a/include/mulfft.hpp +++ b/include/mulfft.hpp @@ -9,6 +9,8 @@ #include #elif USE_SPQLIOX_AARCH64 #include +#elif USE_CONCRETE_FFT +#include #else #include #endif diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cb3ba05..925951b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -12,6 +12,8 @@ target_include_directories( ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/thirdparties/spqlios ${PROJECT_SOURCE_DIR}/thirdparties/fftw + ${PROJECT_SOURCE_DIR}/thirdparties/concrete-fft/cpp + ${PROJECT_BINARY_DIR}/thirdparties/concrete-fft ${PROJECT_SOURCE_DIR}/thirdparties/spqliox_aarch64 ${PROJECT_SOURCE_DIR}/thirdparties/spqliox_aarch64/xbyak_aarch64/xbyak_aarch64 ${PROJECT_SOURCE_DIR}/thirdparties/hexl/hexl/hexl/include @@ -39,6 +41,8 @@ elseif(USE_SPQLIOX_AARCH64) target_link_libraries(tfhe++ INTERFACE spqliox_aarch64 xbyak_aarch64) elseif(USE_HEXL) target_link_libraries(tfhe++ INTERFACE spqlios HEXL::hexl) +elseif(USE_CONCRETE_FFT) + target_link_libraries(tfhe++ INTERFACE concrete-fft) else() if(USE_MKL) target_link_libraries(tfhe++ INTERFACE mklproc) diff --git a/thirdparties/concrete-fft b/thirdparties/concrete-fft index 3c62748..3724612 160000 --- a/thirdparties/concrete-fft +++ b/thirdparties/concrete-fft @@ -1 +1 @@ -Subproject commit 3c62748bfa75d0c9a57dac80983b650fe610b7ef +Subproject commit 3724612a15fa9bd825a1921336db418ee3adac6e