Mac M1芯片同态加密库的安装(TFHE问题)

Mac M1芯片同态加密库的安装(TFHE问题)

前些日子买了Mac电脑,尝试在mac上安装之前在Ubuntu上的同态加密库,经试验HElib、SEAL、Palisade等可以完美安装。
但是TFHE的安装按照原来的步骤出现了很多问题!

clang: error: the clang compiler does not support ‘-march=native’

解决办法:
将-march=native改为-mcpu=apple-m1

但是出现了类似于下面的错误

/tfhe/src/libtfhe/fft_processors/nayuki/fft-x8664-avx.s:108:10: error: invalid operand
 vmovupd %ymm0, (%rdi,%rcx,8)
 
/tfhe/src/libtfhe/fft_processors/nayuki/fft-x8664-avx.s:108:10: error: invalid operand
 vmovupd %ymm0, (%rdi,%rcx,8)
 
/tfhe/src/libtfhe/fft_processors/nayuki/fft-x8664-avx.s:110:11: error: unknown token in expression
 addq $4, %rcx
..........................

/Users/wbq/Desktop/\345\220\214\346\200\201\345\212\240\345\257\206\345\272\223/tfhe/src/libtfhe/fft_processors/nayuki/fft-x8664-avx.s:189:7: error: invalid operand
 popq %r10
      ^
/Users/wbq/Desktop/\345\220\214\346\200\201\345\212\240\345\257\206\345\272\223/tfhe/src/libtfhe/fft_processors/nayuki/fft-x8664-avx.s:190:2: error: unrecognized instruction mnemonic, did you mean: eret, ret?
 retq
 ^
make[2]: *** [libtfhe/fft_processors/nayuki/CMakeFiles/tfhe-fft-nayuki-avx.dir/fft-x8664-avx.s.o] Error 1
make[1]: *** [libtfhe/fft_processors/nayuki/CMakeFiles/tfhe-fft-nayuki-avx.dir/all] Error 2
make: *** [all] Error 2

经过一波调研…
Mac M1与AVX

  • Rosetta translates all x86_64 instructions, but it doesn’t
    support the execution of some newer instruction sets and
    processor features, such as AVX, AVX2, and AVX512 vector
    instructions.

Intel芯片的Mac是完全没有问题的,应该是M1芯片与FFT加速用到的Intel指令集不匹配
安装FFTW

重新配置吧

cmake ../src -DENABLE_TESTS=on -DENABLE_FFTW=on   -DENABLE_NAYUKI_AVX=OFF -DENABLE_NAYUKI_PORTABLE=OFF -DENABLE_SPQLIOS_AVX=OFF -DENABLE_SPQLIOS_FMA=OFF 
[  1%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/autogenerated.cpp.o
[  3%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/lwebootstrappingkey.cpp.o
[  4%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/lwe.cpp.o
[  6%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/lwe-functions.cpp.o
[  7%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/lwekey.cpp.o
[  9%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/lwekeyswitch.cpp.o
[ 10%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/lweparams.cpp.o
[ 12%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/lwesamples.cpp.o
[ 13%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/multiplication.cpp.o
[ 15%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/numeric-functions.cpp.o
[ 16%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/polynomials.cpp.o
[ 18%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/tgsw.cpp.o
[ 19%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/tlwe.cpp.o
[ 21%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/tlwe-functions.cpp.o
[ 22%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/tgsw-functions.cpp.o
[ 24%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/tlwe-fft-operations.cpp.o
[ 25%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/tgsw-fft-operations.cpp.o
[ 27%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/toruspolynomial-functions.cpp.o
[ 28%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/boot-gates.cpp.o
[ 30%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/lwe-keyswitch-functions.cpp.o
[ 31%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/lwe-bootstrapping-functions.cpp.o
[ 33%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/lwe-bootstrapping-functions-fft.cpp.o
[ 34%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/tfhe_io.cpp.o
[ 36%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/tfhe_generic_streams.cpp.o
[ 37%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/tfhe_garbage_collector.cpp.o
[ 39%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/tfhe_gate_bootstrapping.cpp.o
[ 40%] Building CXX object libtfhe/CMakeFiles/tfhe-core.dir/tfhe_gate_bootstrapping_structures.cpp.o
[ 40%] Built target tfhe-core
[ 42%] Building CXX object libtfhe/fft_processors/fftw/CMakeFiles/tfhe-fft-fftw.dir/fft_processor_fftw.cpp.o
[ 43%] Building CXX object libtfhe/fft_processors/fftw/CMakeFiles/tfhe-fft-fftw.dir/lagrangehalfc_impl.cpp.o
[ 43%] Built target tfhe-fft-fftw
[ 45%] Linking CXX shared library libtfhe-fftw.dylib
[ 45%] Built target tfhe-fftw
[ 46%] Building CXX object test/googletest/googlemock/gtest/CMakeFiles/gtest.dir/src/gtest-all.cc.o
[ 48%] Linking CXX static library libgtest.a
[ 48%] Built target gtest
[ 50%] Building CXX object test/googletest/googlemock/gtest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o
[ 51%] Linking CXX static library libgtest_main.a
[ 51%] Built target gtest_main
[ 53%] Building CXX object test/CMakeFiles/unittests-fftw.dir/arithmetic_test.cpp.o
[ 54%] Building CXX object test/CMakeFiles/unittests-fftw.dir/lwe_test.cpp.o
[ 56%] Building CXX object test/CMakeFiles/unittests-fftw.dir/polynomial_test.cpp.o
[ 57%] Building CXX object test/CMakeFiles/unittests-fftw.dir/tlwe_test.cpp.o
[ 59%] Building CXX object test/CMakeFiles/unittests-fftw.dir/tgsw_test.cpp.o
[ 60%] Building CXX object test/CMakeFiles/unittests-fftw.dir/tlwe_fft_test.cpp.o
[ 62%] Building CXX object test/CMakeFiles/unittests-fftw.dir/tgsw_fft_test.cpp.o
[ 63%] Building CXX object test/CMakeFiles/unittests-fftw.dir/lwekeyswitch_test.cpp.o
[ 65%] Building CXX object test/CMakeFiles/unittests-fftw.dir/bootstrapping_test.cpp.o
[ 66%] Building CXX object test/CMakeFiles/unittests-fftw.dir/bootstrapping_test_fft.cpp.o
[ 68%] Building CXX object test/CMakeFiles/unittests-fftw.dir/io_test.cpp.o
[ 69%] Building CXX object test/CMakeFiles/unittests-fftw.dir/lagrangehalfc_test.cpp.o
[ 71%] Building CXX object test/CMakeFiles/unittests-fftw.dir/boots_gates_test.cpp.o
[ 72%] Linking CXX executable unittests-fftw
[ 72%] Built target unittests-fftw
[ 74%] Building CXX object test/CMakeFiles/test-bootstrapping-fft-fftw.dir/test-bootstrapping-fft.cpp.o
[ 75%] Linking CXX executable test-bootstrapping-fft-fftw
[ 75%] Built target test-bootstrapping-fft-fftw
[ 77%] Building CXX object test/CMakeFiles/test-decomp-tgsw-fftw.dir/test-decomp-tgsw.cpp.o
[ 78%] Linking CXX executable test-decomp-tgsw-fftw
[ 78%] Built target test-decomp-tgsw-fftw
[ 80%] Building CXX object test/CMakeFiles/test-lwe-fftw.dir/test-lwe.cpp.o
[ 81%] Linking CXX executable test-lwe-fftw
[ 81%] Built target test-lwe-fftw
[ 83%] Building CXX object test/CMakeFiles/test-multiplication-fftw.dir/test-multiplication.cpp.o
[ 84%] Linking CXX executable test-multiplication-fftw
[ 84%] Built target test-multiplication-fftw
[ 86%] Building CXX object test/CMakeFiles/test-tlwe-fftw.dir/test-tlwe.cpp.o
[ 87%] Linking CXX executable test-tlwe-fftw
[ 87%] Built target test-tlwe-fftw
[ 89%] Building CXX object test/CMakeFiles/test-gate-bootstrapping-fftw.dir/test-gate-bootstrapping.cpp.o
[ 90%] Linking CXX executable test-gate-bootstrapping-fftw
[ 90%] Built target test-gate-bootstrapping-fftw
[ 92%] Building CXX object test/CMakeFiles/test-addition-boot-fftw.dir/test-addition-boot.cpp.o
[ 93%] Linking CXX executable test-addition-boot-fftw
[ 93%] Built target test-addition-boot-fftw
[ 95%] Building CXX object test/CMakeFiles/test-long-run-fftw.dir/test-long-run.cpp.o
[ 96%] Linking CXX executable test-long-run-fftw
[ 96%] Built target test-long-run-fftw
[ 98%] Building C object test/CMakeFiles/test-c-binding-fftw.dir/test-c-binding.c.o
[100%] Linking C executable test-c-binding-fftw
[100%] Built target test-c-binding-fftw

反正利用FFTW可以了

build/ test % ls
CMakeFiles                      test-decomp-tgsw-fftw
CTestTestfile.cmake             test-gate-bootstrapping-fftw
Makefile                        test-long-run-fftw
cmake_install.cmake             test-lwe-fftw
googletest                      test-multiplication-fftw
test-addition-boot-fftw         test-tlwe-fftw
test-bootstrapping-fft-fftw     unittests-fftw
test-c-binding-fftw
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值