Hello everyone, I was cheecking the matrix multiplication (MM) in the OpenFHE logreg-training repository and it implements the matrix multiplication considering row-major packing, If I understood it correctly.
I was wondering If there is any open-sourced implementation of MM with diagonal packing, as it is shown to optimize MM by a lot in this paper.
(base) /path/ % git clone --branch polyakov-matrix-mult --single-branch https://github.com/openfheorg/openfhe-development openfhe-matrix-mult
(base) /path/ % cd openfhe-matrix-mult
(base) /path/to/openfhe-matrix-mult % mkdir cmake-build-debug
(base) /path/to/openfhe-matrix-mult % cd cmake-build-debug
(base) /path/to/cmake-build-debug % cmake -DCMAKE_CROSSCOMPILING=1 -DRUN_HAVE_STD_REGEX=0 -DRUN_HAVE_POSIX_REGEX=0 ..
cmake ..
CMake Warning (dev) at /opt/homebrew/Cellar/cmake/3.29.0/share/cmake/Modules/CMakeDetermineSystem.cmake:175 (message):
CMAKE_CROSSCOMPILING has been set by the project, toolchain file, or user.
CMake is resetting it to false because CMAKE_SYSTEM_NAME was not set. To
indicate cross compilation, only CMAKE_SYSTEM_NAME needs to be set.
Call Stack (most recent call first):
CMakeLists.txt:26 (project)
This warning is for project developers. Use -Wno-dev to suppress it.
-- The C compiler identification is AppleClang 15.0.0.15000309
-- The CXX compiler identification is AppleClang 15.0.0.15000309
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Library/Developer/CommandLineTools/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Building in Release mode
-- BUILD_UNITTESTS: ON
-- BUILD_EXAMPLES: ON
-- BUILD_BENCHMARKS: ON
-- BUILD_EXTRAS: OFF
-- BUILD_STATIC: OFF
-- BUILD_SHARED: ON
-- GIT_SUBMOD_AUTO: ON
-- WITH_BE2: OFF
-- WITH_BE4: OFF
-- WITH_NTL: OFF
-- WITH_TCM: OFF
-- WITH_OPENMP: ON
-- NATIVE_SIZE: 64
-- CKKS_M_FACTOR: 1
-- WITH_NATIVEOPT: OFF
-- WITH_COVTEST: OFF
-- WITH_NOISE_DEBUG: OFF
-- USE_MACPORTS: OFF
***** INSTALL IS AT /usr/local; to change, run cmake with -DCMAKE_INSTALL_PREFIX=/your/path
-- Architecture is arm64
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of __int128
-- Check size of __int128 - done
-- Check size of uint64_t
-- Check size of uint64_t - done
-- NATIVEINT is set to 64
-- MATHBACKEND is set to 4
-- MATHBACKEND set to 4. Setting WITH_BE4 to ON
-- Apple M1 detected
-- OPENMP_LIBRARIES: /opt/homebrew/opt/libomp/lib
-- OPENMP_INCLUDES: /opt/homebrew/opt/libomp/include
-- OpenMP_CXX_FLAGS: -Xpreprocessor -fopenmp -lomp -Wno-unused-command-line-argument
-- OpenMP_CXX_LIB_NAMES: libomp
-- Found OpenMP_C: -Xpreprocessor -fopenmp -lomp -Wno-unused-command-line-argument
-- Found OpenMP_CXX: -Xpreprocessor -fopenmp -lomp -Wno-unused-command-line-argument (found version "5.0")
-- Found OpenMP: TRUE (found version "5.0")
-- Found Git: /usr/bin/git (found version "2.39.3 (Apple Git-146)")
-- Submodule update
Synchronizing submodule url for 'third-party/cereal'
Synchronizing submodule url for 'third-party/google-benchmark'
Synchronizing submodule url for 'third-party/google-test'
Synchronizing submodule url for 'third-party/gperftools'
-- git version: v1.5.5-14-ge451e50e normalized to 1.5.5.14
-- Version: 1.5.5.14
-- Performing Test HAVE_CXX_FLAG_STD_CXX11
-- Performing Test HAVE_CXX_FLAG_STD_CXX11 - Success
-- Performing Test HAVE_CXX_FLAG_WALL
-- Performing Test HAVE_CXX_FLAG_WALL - Success
-- Performing Test HAVE_CXX_FLAG_WEXTRA
-- Performing Test HAVE_CXX_FLAG_WEXTRA - Success
-- Performing Test HAVE_CXX_FLAG_WSHADOW
-- Performing Test HAVE_CXX_FLAG_WSHADOW - Success
-- Performing Test HAVE_CXX_FLAG_WERROR
-- Performing Test HAVE_CXX_FLAG_WERROR - Success
-- Performing Test HAVE_CXX_FLAG_WSUGGEST_OVERRIDE
-- Performing Test HAVE_CXX_FLAG_WSUGGEST_OVERRIDE - Success
-- Performing Test HAVE_CXX_FLAG_PEDANTIC
-- Performing Test HAVE_CXX_FLAG_PEDANTIC - Success
-- Performing Test HAVE_CXX_FLAG_PEDANTIC_ERRORS
-- Performing Test HAVE_CXX_FLAG_PEDANTIC_ERRORS - Success
-- Performing Test HAVE_CXX_FLAG_WSHORTEN_64_TO_32
-- Performing Test HAVE_CXX_FLAG_WSHORTEN_64_TO_32 - Success
-- Performing Test HAVE_CXX_FLAG_FSTRICT_ALIASING
-- Performing Test HAVE_CXX_FLAG_FSTRICT_ALIASING - Success
-- Performing Test HAVE_CXX_FLAG_WNO_DEPRECATED_DECLARATIONS
-- Performing Test HAVE_CXX_FLAG_WNO_DEPRECATED_DECLARATIONS - Success
-- Performing Test HAVE_CXX_FLAG_WNO_DEPRECATED
-- Performing Test HAVE_CXX_FLAG_WNO_DEPRECATED - Success
-- Performing Test HAVE_CXX_FLAG_WSTRICT_ALIASING
-- Performing Test HAVE_CXX_FLAG_WSTRICT_ALIASING - Success
-- Performing Test HAVE_CXX_FLAG_WD654
-- Performing Test HAVE_CXX_FLAG_WD654 - Failed
-- Performing Test HAVE_CXX_FLAG_WTHREAD_SAFETY
-- Performing Test HAVE_CXX_FLAG_WTHREAD_SAFETY - Success
-- Performing Test HAVE_THREAD_SAFETY_ATTRIBUTES
-- Performing Test HAVE_THREAD_SAFETY_ATTRIBUTES
-- Performing Test HAVE_THREAD_SAFETY_ATTRIBUTES -- failed to compile
-- Performing Test HAVE_CXX_FLAG_COVERAGE
-- Performing Test HAVE_CXX_FLAG_COVERAGE - Success
-- Performing Test HAVE_STD_REGEX
-- Performing Test HAVE_STD_REGEX
-- Performing Test HAVE_STD_REGEX -- success
-- Performing Test HAVE_GNU_POSIX_REGEX
-- Performing Test HAVE_GNU_POSIX_REGEX
-- Performing Test HAVE_GNU_POSIX_REGEX -- failed to compile
-- Performing Test HAVE_POSIX_REGEX
-- Performing Test HAVE_POSIX_REGEX
-- Performing Test HAVE_POSIX_REGEX -- success
-- Performing Test HAVE_STEADY_CLOCK
-- Performing Test HAVE_STEADY_CLOCK
-- Performing Test HAVE_STEADY_CLOCK -- success
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Configuring done (4.4s)
-- Generating done (0.2s)
-- Build files have been written to: /Users/seydanurguzelhan/CLionProjects/openfhe-matrix-mult/cmake-build-debug
-- Building in Release mode
-- BUILD_UNITTESTS: ON
-- BUILD_EXAMPLES: ON
-- BUILD_BENCHMARKS: ON
-- BUILD_EXTRAS: OFF
-- BUILD_STATIC: OFF
-- BUILD_SHARED: ON
-- GIT_SUBMOD_AUTO: ON
-- WITH_BE2: OFF
-- WITH_BE4: OFF
-- WITH_NTL: OFF
-- WITH_TCM: OFF
-- WITH_OPENMP: ON
-- NATIVE_SIZE: 64
-- CKKS_M_FACTOR: 1
-- WITH_NATIVEOPT: OFF
-- WITH_COVTEST: OFF
-- WITH_NOISE_DEBUG: OFF
-- USE_MACPORTS: OFF
***** INSTALL IS AT /usr/local; to change, run cmake with -DCMAKE_INSTALL_PREFIX=/your/path
-- Architecture is arm64
-- NATIVEINT is set to 64
-- MATHBACKEND is set to 4
-- MATHBACKEND set to 4. Setting WITH_BE4 to ON
-- Apple M1 detected
-- OPENMP_LIBRARIES: /opt/homebrew/opt/libomp/lib
-- OPENMP_INCLUDES: /opt/homebrew/opt/libomp/include
-- OpenMP_CXX_FLAGS: -Xpreprocessor -fopenmp -lomp -Wno-unused-command-line-argument
-- OpenMP_CXX_LIB_NAMES: libomp
-- Submodule update
-- git version: v1.5.5-14-ge451e50e normalized to 1.5.5.14
-- Version: 1.5.5.14
-- Performing Test HAVE_THREAD_SAFETY_ATTRIBUTES -- failed to compile
-- Performing Test HAVE_STD_REGEX -- success
-- Performing Test HAVE_GNU_POSIX_REGEX -- failed to compile
-- Performing Test HAVE_POSIX_REGEX -- success
-- Performing Test HAVE_STEADY_CLOCK -- success
-- Configuring done (0.2s)
-- Generating done (0.2s)
-- Build files have been written to: /Users/seydanurguzelhan/CLionProjects/openfhe-matrix-mult/cmake-build-debug
(base) /path/to/openfhe cmake-build-debug % make
-- Copied demoData files
[ 0%] Built target third-party
[ 1%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/lattice/constants-lattice-impl.cpp.o
[ 1%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/lattice/lattice.cpp.o
[ 1%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/lattice/stdlatticeparms.cpp.o
[ 1%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/lattice/trapdoor-dcrtpoly.cpp.o
[ 2%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/lattice/trapdoor-poly.cpp.o
[ 2%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/math/chebyshev.cpp.o
[ 2%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/math/dftransform.cpp.o
[ 3%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/math/discretegaussiangeneratorgeneric.cpp.o
[ 3%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/math/distributiongenerator.cpp.o
[ 3%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/math/hal/bigintdyn/be4-math-impl.cpp.o
[ 3%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/math/hal/bigintdyn/mubintvecdyn.cpp.o
[ 4%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/math/hal/bigintdyn/ubintdyn.cpp.o
[ 4%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/math/hal/bigintfxd/be2-math-impl.cpp.o
[ 4%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/math/hal/bigintfxd/mubintvecfxd.cpp.o
[ 5%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/math/hal/bigintfxd/ubintfxd.cpp.o
[ 5%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/math/hal/bigintntl/be6-math-impl.cpp.o
[ 5%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/math/hal/bigintntl/mubintvecntl.cpp.o
[ 6%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/math/hal/bigintntl/ubintntl.cpp.o
[ 6%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/math/hal/intnat/benative-math-impl.cpp.o
[ 6%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/math/hal/intnat/mubintvecnat.cpp.o
[ 6%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/math/matrix.cpp.o
[ 7%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/math/nbtheory2.cpp.o
[ 7%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/utils/blockAllocator/blockAllocator.cpp.o
[ 7%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/utils/blockAllocator/xallocator.cpp.o
[ 8%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/utils/debug.cpp.o
[ 8%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/utils/demangle.cpp.o
[ 8%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/utils/get-call-stack.cpp.o
[ 8%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/utils/hashutil.cpp.o
[ 9%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/utils/inttypes.cpp.o
[ 9%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/utils/openfhebase64.cpp.o
[ 9%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/utils/parallel.cpp.o
[ 10%] Building C object src/core/CMakeFiles/coreobj.dir/lib/utils/prng/blake2b-ref.c.o
[ 10%] Building C object src/core/CMakeFiles/coreobj.dir/lib/utils/prng/blake2xb-ref.c.o
[ 10%] Building CXX object src/core/CMakeFiles/coreobj.dir/lib/utils/utilities.cpp.o
[ 10%] Built target coreobj
[ 10%] Linking CXX shared library ../../lib/libOPENFHEcore.dylib
ld: warning: ignoring duplicate libraries: '-lomp'
[ 10%] Built target OPENFHEcore
[ 11%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTest128.cpp.o
[ 11%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestBinInt.cpp.o
[ 11%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestBinVect.cpp.o
[ 11%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestBlockAllocate.cpp.o
[ 12%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestCommonElements.cpp.o
[ 12%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestDCRTElements.cpp.o
[ 12%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestDistrGen.cpp.o
[ 13%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestException.cpp.o
[ 13%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestField2n.cpp.o
[ 13%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestLatticeParams.cpp.o
[ 14%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestMatrix.cpp.o
[ 14%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestMubintvec.cpp.o
[ 14%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestNTT.cpp.o
[ 14%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestNbTheory.cpp.o
[ 15%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestPolyElements.cpp.o
[ 15%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestSTLBlockAllocate.cpp.o
[ 15%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestSerialize.cpp.o
[ 16%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestTransform.cpp.o
[ 16%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestTrapdoor.cpp.o
[ 16%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestUtils.cpp.o
[ 16%] Building CXX object src/core/CMakeFiles/core_tests.dir/unittest/UnitTestXallocate.cpp.o
[ 17%] Building CXX object src/core/CMakeFiles/core_tests.dir/__/__/test/Main_TestAll.cpp.o
[ 17%] Linking CXX executable ../../unittest/core_tests
ld: warning: ignoring duplicate libraries: '-lomp'
[ 17%] Built target core_tests
[ 17%] Building CXX object src/core/CMakeFiles/parallel.dir/examples/parallel.cpp.o
[ 18%] Linking CXX executable ../../bin/examples/core/parallel
ld: warning: ignoring duplicate libraries: '-lomp'
[ 18%] Built target parallel
[ 18%] Building CXX object src/core/CMakeFiles/sampling.dir/examples/sampling.cpp.o
[ 18%] Linking CXX executable ../../bin/examples/core/sampling
ld: warning: ignoring duplicate libraries: '-lomp'
[ 18%] Built target sampling
[ 18%] Building CXX object src/binfhe/CMakeFiles/binfheobj.dir/lib/binfhe-base-scheme.cpp.o
[ 18%] Building CXX object src/binfhe/CMakeFiles/binfheobj.dir/lib/binfhe-constants-impl.cpp.o
[ 19%] Building CXX object src/binfhe/CMakeFiles/binfheobj.dir/lib/binfhecontext.cpp.o
[ 19%] Building CXX object src/binfhe/CMakeFiles/binfheobj.dir/lib/lwe-pke.cpp.o
[ 19%] Building CXX object src/binfhe/CMakeFiles/binfheobj.dir/lib/rgsw-acc-cggi.cpp.o
[ 20%] Building CXX object src/binfhe/CMakeFiles/binfheobj.dir/lib/rgsw-acc-dm.cpp.o
[ 20%] Building CXX object src/binfhe/CMakeFiles/binfheobj.dir/lib/rgsw-acc-lmkcdey.cpp.o
[ 20%] Building CXX object src/binfhe/CMakeFiles/binfheobj.dir/lib/rgsw-acc.cpp.o
[ 20%] Building CXX object src/binfhe/CMakeFiles/binfheobj.dir/lib/rgsw-cryptoparameters.cpp.o
[ 20%] Built target binfheobj
[ 21%] Linking CXX shared library ../../lib/libOPENFHEbinfhe.dylib
ld: warning: ignoring duplicate libraries: '-lomp'
[ 21%] Built target OPENFHEbinfhe
[ 21%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/ciphertext-impl.cpp.o
[ 21%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/constants-impl.cpp.o
[ 21%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/cryptocontext.cpp.o
[ 22%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/cryptocontextfactory.cpp.o
[ 22%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/cryptoobject-impl.cpp.o
[ 22%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/encoding/ckkspackedencoding.cpp.o
[ 23%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/encoding/coefpackedencoding.cpp.o
[ 23%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/encoding/encodingparams.cpp.o
[ 23%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/encoding/packedencoding.cpp.o
[ 23%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/encoding/stringencoding.cpp.o
[ 24%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/globals-impl.cpp.o
[ 24%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/key/evalkey.cpp.o
[ 24%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/key/evalkeyrelin.cpp.o
[ 25%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/key/privatekey.cpp.o
[ 25%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/key/publickey.cpp.o
[ 25%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/keyswitch/keyswitch-base.cpp.o
[ 25%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/keyswitch/keyswitch-bv.cpp.o
[ 26%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/keyswitch/keyswitch-hybrid.cpp.o
[ 26%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/bfvrns/bfvrns-cryptoparameters.cpp.o
[ 26%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/bfvrns/bfvrns-leveledshe.cpp.o
[ 27%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/bfvrns/bfvrns-multiparty.cpp.o
[ 27%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/bfvrns/bfvrns-parametergeneration.cpp.o
[ 27%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/bfvrns/bfvrns-pke.cpp.o
[ 28%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/bfvrns/bfvrns-scheme.cpp.o
[ 28%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/bgvrns/bgvrns-cryptoparameters.cpp.o
[ 28%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/bgvrns/bgvrns-leveledshe.cpp.o
[ 28%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/bgvrns/bgvrns-multiparty.cpp.o
[ 29%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/bgvrns/bgvrns-parametergeneration.cpp.o
[ 29%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/bgvrns/bgvrns-pke.cpp.o
[ 29%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/bgvrns/bgvrns-scheme.cpp.o
[ 30%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/ckksrns/ckksrns-advancedshe.cpp.o
[ 30%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/ckksrns/ckksrns-cryptoparameters.cpp.o
[ 30%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/ckksrns/ckksrns-fhe.cpp.o
[ 30%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/ckksrns/ckksrns-leveledshe.cpp.o
[ 31%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/ckksrns/ckksrns-multiparty.cpp.o
[ 31%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/ckksrns/ckksrns-parametergeneration.cpp.o
[ 31%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/ckksrns/ckksrns-pke.cpp.o
[ 32%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/ckksrns/ckksrns-scheme.cpp.o
[ 32%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/ckksrns/ckksrns-schemeswitching.cpp.o
[ 32%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/ckksrns/ckksrns-utils.cpp.o
[ 32%] Building CXX object src/pke/CMakeFiles/pkeobj.dir/lib/scheme/ckksrns/schemeswitching-data-serializer.cpp.o
In file included from /path/to/openfhe-matrix-mult/src/pke/lib/scheme/ckksrns/schemeswitching-data-serializer.cpp:31:
In file included from /path/to/openfhe-matrix-mult/src/pke/include/scheme/ckksrns/schemeswitching-data-serializer.h:34:
/path/to/openfhe/openfhe-matrix-mult/src/pke/include/cryptocontext.h:696:41: error: instantiation of variable 'lbcrypto::CryptoContextImpl<lbcrypto::DCRTPolyImpl<bigintdyn::mubintvec<bigintdyn::ubint<unsigned long long>>>>::s_evalMultKeyMap' required here, but no definition is available [-Werror,-Wundefined-var-template]
CryptoContextImpl<Element>::s_evalMultKeyMap[key] = vec;
^
/path/to/openfhe/openfhe-matrix-mult/src/pke/include/cryptocontext.h:339:65: note: forward declaration of template entity is here
static std::map<std::string, std::vector<EvalKey<Element>>> s_evalMultKeyMap;
^
/path/to/openfhe-matrix-mult/src/pke/include/cryptocontext.h:696:41: note: add an explicit instantiation declaration to suppress this warning if 'lbcrypto::CryptoContextImpl<lbcrypto::DCRTPolyImpl<bigintdyn::mubintvec<bigintdyn::ubint<unsigned long long>>>>::s_evalMultKeyMap' is explicitly instantiated in another translation unit
CryptoContextImpl<Element>::s_evalMultKeyMap[key] = vec;
^
1 error generated.
make[2]: *** [src/pke/CMakeFiles/pkeobj.dir/lib/scheme/ckksrns/schemeswitching-data-serializer.cpp.o] Error 1
make[1]: *** [src/pke/CMakeFiles/pkeobj.dir/all] Error 2
make: *** [all] Error 2
I’ve rebased the polyakov-matrix-mult branch to OpenFHE v1.2.3 (it was based on v1.2.0 previously). This should fix the compilation problem with Apple clang.