When I started my career, I wanted to work in cybernetic or in cryptography. Unfortunately, the life does not offer always what you really want, and I worked in network and system administration for a long time, and learned to be a back-end developer. Okay, nice introduction, but, who care? Well, at this period I was really facinated by Homorphic Encryption, the graal of cryptography. In 2014 or 2015 I met different people in France who were working on this subject at an INRIA conference. It was really interesting, but I was definitively lost will all the mathematical background. The only thing I remember: it works but it is slow. What is the case today? What kind of homomorphic encryption do we have?
# What does Homorphic Encryption mean?
Well, I am writing on a complex topic, encryption. Actually, Homorphic Encryption is more complex than simple encryption. In traditional encryption, a clear message is converted by a function to an encrypted message. This encrypted message can't be read by anyone, only the one who have the key. Usually, the plain text is decrypted on a safe place and if the receiver need to answer, it will also encrypt it. It means that the encrypted message is decrypted and the plain text available at least somewhere during computation.
_________
| |
| key |
|_________|
_|_
____________ ___\_/___ ________________
| | / | | |
| plain text |--->| function |--->| encrypted text |
|____________| |_________/ |________________|
Homomorphic encryption offers an alternative to this classical method by giving the possibility to compute direction on an encrypted text without decrypting it. Yes, even the last actor does not have to decrypt encrypted text to modify it. It's also mean that it can alter something that it does not even know!
# Palisade from source
# Compilation
TIP
Makefile should contain all information
pkg_add cmake autoconf autoconf%2.69 gnumake
git clone https://gitlab.com/palisade/palisade-development.git
cd palisade-development
mkdir build
cd build
AUTOCONF_VERSION=2.69 cmake -DUSE_OpenMP=OFF ..
gmake
If it's a success, different binaries will be created in different
sub-directories present in the build one.
# Tests
To execute tests, you can use binaries present in unittest
directory.
ls ./unittest/* | xargs -I%i sh -c "%i"
# Benchmark
To execute benchmarks, you can use ls and xargs.
ls ./bin/benchmark/* | xargs -I%i sh -c "%i"
It will create a full benchmark of palisade and output something like the screenshot below. It was generated on OpenBSD-69-current on AMD Ryzen 7 Pro.
2021-03-24 15:15:27
Running ./bin/benchmark/Encoding
Run on (16 X 1400 MHz CPU s)
Load Average: 1.49, 1.18, 0.98
-----------------------------------------------------------------------------------
Benchmark Time CPU Iterations
-----------------------------------------------------------------------------------
BM_encoding_Scalar 352593 ns 352551 ns 2671
BM_encoding_Integer 311225 ns 311183 ns 2319
BM_encoding_CoefPacked 273216 ns 273065 ns 2029
BM_encoding_PackedIntPlaintext 81207 ns 81098 ns 10000
BM_encoding_PackedIntPlaintext_SetParams 11893 ns 11883 ns 58805
BM_Encoding_String 234885 ns 234877 ns 3065
BM_encoding_PackedCKKSPlaintext 39844 ns 39786 ns 21838
2021-03-24 15:15:34
Running ./bin/benchmark/IntegerMath
Run on (16 X 1700 MHz CPU s)
Load Average: 1.69, 1.22, 0.99
-----------------------------------------------------------------------------------
Benchmark Time CPU Iterations
-----------------------------------------------------------------------------------
BM_BigInt_constants<M2Integer> 0.060 us 0.060 us 14646066
BM_BigInt_constants<M4Integer> 0.143 us 0.143 us 5284600
BM_BigInt_constants<NativeInteger> 0.000 us 0.000 us 1000000000
BM_BigInt_small_variables<M2Integer> 1.16 us 1.16 us 708087
BM_BigInt_small_variables<M4Integer> 1.51 us 1.51 us 457722
BM_BigInt_small_variables<NativeInteger> 0.015 us 0.015 us 46274973
BM_BigInt_large_variables<M2Integer> 9.43 us 9.43 us 100000
BM_BigInt_large_variables<M4Integer> 13.6 us 13.6 us 39478
BM_BigInt_Add<M2Integer>/Small:0 0.095 us 0.095 us 10489430
BM_BigInt_Add<M2Integer>/Large:1 0.072 us 0.072 us 9439330
BM_BigInt_Add<M4Integer>/Small:0 0.208 us 0.208 us 4763858
BM_BigInt_Add<M4Integer>/Large:1 0.157 us 0.157 us 4446421
BM_BigInt_Add<NativeInteger>/Small:0 0.000 us 0.000 us 1000000000
BM_BigInt_Addeq<M2Integer>/Small:0 0.773 us 0.771 us 1224475
BM_BigInt_Addeq<M2Integer>/Large:1 2.22 us 2.22 us 314649
BM_BigInt_Addeq<M4Integer>/Small:0 1.95 us 1.95 us 794372
BM_BigInt_Addeq<M4Integer>/Large:1 6.65 us 6.65 us 218818
BM_BigInt_Addeq<NativeInteger>/Small:0 0.008 us 0.008 us 87476880
BM_BigInt_Mult<M2Integer>/Small:0 0.128 us 0.128 us 5467474
BM_BigInt_Mult<M2Integer>/Large:1 0.239 us 0.239 us 3215899
BM_BigInt_Mult<M4Integer>/Small:0 0.387 us 0.387 us 1674497
BM_BigInt_Mult<M4Integer>/Large:1 0.632 us 0.632 us 1098350
BM_BigInt_Mult<NativeInteger>/Small:0 0.000 us 0.000 us 1000000000
BM_BigInt_Multeq<M2Integer>/Small:0 0.729 us 0.728 us 964419
BM_BigInt_Multeq<M2Integer>/Large:1 3.03 us 3.03 us 282981
BM_BigInt_Multeq<M4Integer>/Small:0 1.29 us 1.29 us 545129
BM_BigInt_Multeq<M4Integer>/Large:1 5.85 us 5.85 us 174996
BM_BigInt_Multeq<NativeInteger>/Small:0 0.008 us 0.008 us 85961094
BM_BigInt_ModInverse<M2Integer> 7.46 us 7.45 us 100221
BM_BigInt_ModInverse<M4Integer> 6.70 us 6.70 us 104591
BM_BigInt_ModInverse<NativeInteger> 0.021 us 0.021 us 32829241
BM_BigInt_ModInverseEq<M2Integer> 7.00 us 7.00 us 99861
BM_BigInt_ModInverseEq<M4Integer> 6.73 us 6.73 us 104335
BM_BigInt_ModInverseEq<NativeInteger> 0.033 us 0.033 us 32304161
2021-03-24 15:16:25
Running ./bin/benchmark/Lattice
Run on (16 X 1700 MHz CPU s)
Load Average: 1.47, 1.23, 1.01
-----------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
-----------------------------------------------------------------------------------------------------
BM_LATTICE_empty<NativePoly>/parm_16:16 0.025 us 0.025 us 27552010
BM_LATTICE_empty<NativePoly>/parm_1024:1024 0.034 us 0.034 us 27681504
BM_LATTICE_empty<NativePoly>/parm_2048:2048 0.025 us 0.025 us 27838359
BM_LATTICE_empty<M2Poly>/parm_16:16 0.035 us 0.035 us 27776418
BM_LATTICE_empty<M2Poly>/parm_1024:1024 0.025 us 0.025 us 27694935
BM_LATTICE_empty<M2Poly>/parm_2048:2048 0.036 us 0.035 us 27750831
BM_LATTICE_empty<M2Poly>/parm_8192:8192 0.025 us 0.025 us 24096424
BM_LATTICE_empty<M2Poly>/parm_32768:32768 0.025 us 0.025 us 27138864
BM_LATTICE_empty<M4Poly>/parm_16:16 0.025 us 0.025 us 27623495
BM_LATTICE_empty<M4Poly>/parm_1024:1024 0.025 us 0.025 us 27638800
BM_LATTICE_empty<M4Poly>/parm_2048:2048 0.028 us 0.028 us 26669805
BM_LATTICE_empty<M4Poly>/parm_8192:8192 0.025 us 0.025 us 23881767
BM_LATTICE_empty<M4Poly>/parm_32768:32768 0.030 us 0.030 us 28054817
BM_LATTICE_empty<M2DCRTPoly>/parm_16:16 0.159 us 0.159 us 4413005
BM_LATTICE_empty<M2DCRTPoly>/parm_1024:1024 0.244 us 0.243 us 4765719
BM_LATTICE_empty<M2DCRTPoly>/parm_2048:2048 0.165 us 0.165 us 4351520
BM_LATTICE_empty<M2DCRTPoly>/parm_8192:8192 0.220 us 0.219 us 3209202
BM_LATTICE_empty<M2DCRTPoly>/parm_32768:32768 0.525 us 0.525 us 1318055
BM_LATTICE_empty<M4DCRTPoly>/parm_16:16 0.233 us 0.233 us 4324110
BM_LATTICE_empty<M4DCRTPoly>/parm_1024:1024 0.152 us 0.152 us 4646948
BM_LATTICE_empty<M4DCRTPoly>/parm_2048:2048 0.177 us 0.177 us 4205617
BM_LATTICE_empty<M4DCRTPoly>/parm_8192:8192 0.223 us 0.223 us 3174515
BM_LATTICE_empty<M4DCRTPoly>/parm_32768:32768 0.639 us 0.639 us 1325737
BM_LATTICE_makevector<NativePoly>/parm_16:16 1.14 us 1.14 us 615814
BM_LATTICE_makevector<NativePoly>/parm_1024:1024 30.9 us 30.9 us 22636
BM_LATTICE_makevector<NativePoly>/parm_2048:2048 63.3 us 63.2 us 12259
BM_LATTICE_makevector<M2Poly>/parm_16:16 12.8 us 12.8 us 108416
BM_LATTICE_makevector<M2Poly>/parm_1024:1024 598 us 598 us 1202
BM_LATTICE_makevector<M2Poly>/parm_2048:2048 1559 us 1557 us 559
BM_LATTICE_makevector<M2Poly>/parm_8192:8192 8726 us 8718 us 95
BM_LATTICE_makevector<M2Poly>/parm_32768:32768 47502 us 47502 us 15
BM_LATTICE_makevector<M4Poly>/parm_16:16 19.5 us 19.5 us 37265
BM_LATTICE_makevector<M4Poly>/parm_1024:1024 946 us 946 us 726
BM_LATTICE_makevector<M4Poly>/parm_2048:2048 3188 us 3187 us 262
BM_LATTICE_makevector<M4Poly>/parm_8192:8192 11294 us 11292 us 62
BM_LATTICE_makevector<M4Poly>/parm_32768:32768 109928 us 109928 us 6
BM_LATTICE_makevector<M2DCRTPoly>/parm_16:16 51.0 us 50.9 us 18599
BM_LATTICE_makevector<M2DCRTPoly>/parm_1024:1024 1266 us 1266 us 432
BM_LATTICE_makevector<M2DCRTPoly>/parm_2048:2048 4998 us 4993 us 141
BM_LATTICE_makevector<M2DCRTPoly>/parm_8192:8192 140201 us 140122 us 5
BM_LATTICE_makevector<M2DCRTPoly>/parm_32768:32768 7594041 us 7589337 us 1
BM_LATTICE_makevector<M4DCRTPoly>/parm_16:16 29.1 us 29.1 us 23935
BM_LATTICE_makevector<M4DCRTPoly>/parm_1024:1024 1546 us 1545 us 621
BM_LATTICE_makevector<M4DCRTPoly>/parm_2048:2048 3959 us 3953 us 151
BM_LATTICE_makevector<M4DCRTPoly>/parm_8192:8192 35462 us 35427 us 29
BM_LATTICE_makevector<M4DCRTPoly>/parm_32768:32768 255691 us 255692 us 3
BM_add_LATTICE<NativePoly>/parm_16:16 0.446 us 0.446 us 2099995
BM_add_LATTICE<NativePoly>/parm_1024:1024 1.31 us 1.31 us 625163
BM_add_LATTICE<NativePoly>/parm_2048:2048 1.87 us 1.87 us 356434
BM_add_LATTICE<M2Poly>/parm_16:16 1.69 us 1.69 us 416632
BM_add_LATTICE<M2Poly>/parm_1024:1024 358 us 358 us 1847
BM_add_LATTICE<M2Poly>/parm_2048:2048 557 us 557 us 1582
BM_add_LATTICE<M2Poly>/parm_8192:8192 4022 us 4019 us 351
BM_add_LATTICE<M2Poly>/parm_32768:32768 10606 us 10597 us 71
BM_add_LATTICE<M4Poly>/parm_16:16 5.57 us 5.57 us 125030
BM_add_LATTICE<M4Poly>/parm_1024:1024 509 us 509 us 1000
BM_add_LATTICE<M4Poly>/parm_2048:2048 1073 us 1072 us 984
BM_add_LATTICE<M4Poly>/parm_8192:8192 3162 us 3157 us 225
BM_add_LATTICE<M4Poly>/parm_32768:32768 16667 us 16667 us 41
BM_add_LATTICE<M2DCRTPoly>/parm_16:16 1.60 us 1.60 us 465246
BM_add_LATTICE<M2DCRTPoly>/parm_1024:1024 2.02 us 2.02 us 347307
BM_add_LATTICE<M2DCRTPoly>/parm_2048:2048 7.96 us 7.93 us 100000
BM_add_LATTICE<M2DCRTPoly>/parm_8192:8192 44.8 us 44.6 us 19668
BM_add_LATTICE<M2DCRTPoly>/parm_32768:32768 2023 us 2023 us 297
BM_add_LATTICE<M4DCRTPoly>/parm_16:16 2.27 us 2.27 us 250264
BM_add_LATTICE<M4DCRTPoly>/parm_1024:1024 4.58 us 4.57 us 151451
BM_add_LATTICE<M4DCRTPoly>/parm_2048:2048 5.64 us 5.64 us 124770
BM_add_LATTICE<M4DCRTPoly>/parm_8192:8192 36.4 us 36.3 us 18592
BM_add_LATTICE<M4DCRTPoly>/parm_32768:32768 1658 us 1658 us 361
BM_addeq_LATTICE<NativePoly>/parm_16:16 0.063 us 0.063 us 11035293
BM_addeq_LATTICE<NativePoly>/parm_1024:1024 0.555 us 0.555 us 1260628
BM_addeq_LATTICE<NativePoly>/parm_2048:2048 1.05 us 1.05 us 665164
BM_addeq_LATTICE<M2Poly>/parm_16:16 0.845 us 0.843 us 852404
BM_addeq_LATTICE<M2Poly>/parm_1024:1024 84.7 us 84.6 us 12569
BM_addeq_LATTICE<M2Poly>/parm_2048:2048 385 us 385 us 2772
BM_addeq_LATTICE<M2Poly>/parm_8192:8192 600 us 600 us 1165
BM_addeq_LATTICE<M2Poly>/parm_32768:32768 3077 us 3076 us 225
BM_addeq_LATTICE<M4Poly>/parm_16:16 3.76 us 3.75 us 148954
BM_addeq_LATTICE<M4Poly>/parm_1024:1024 264 us 264 us 2906
BM_addeq_LATTICE<M4Poly>/parm_2048:2048 510 us 510 us 1316
BM_addeq_LATTICE<M4Poly>/parm_8192:8192 2274 us 2274 us 314
BM_addeq_LATTICE<M4Poly>/parm_32768:32768 9740 us 9739 us 70
BM_addeq_LATTICE<M2DCRTPoly>/parm_16:16 0.143 us 0.143 us 5170749
BM_addeq_LATTICE<M2DCRTPoly>/parm_1024:1024 1.25 us 1.25 us 1237455
BM_addeq_LATTICE<M2DCRTPoly>/parm_2048:2048 2.16 us 2.16 us 328119
BM_addeq_LATTICE<M2DCRTPoly>/parm_8192:8192 20.2 us 20.2 us 34709
BM_addeq_LATTICE<M2DCRTPoly>/parm_32768:32768 333 us 333 us 2504
BM_addeq_LATTICE<M4DCRTPoly>/parm_16:16 0.135 us 0.135 us 5177422
BM_addeq_LATTICE<M4DCRTPoly>/parm_1024:1024 0.572 us 0.569 us 1224661
BM_addeq_LATTICE<M4DCRTPoly>/parm_2048:2048 2.13 us 2.12 us 263297
BM_addeq_LATTICE<M4DCRTPoly>/parm_8192:8192 25.5 us 25.5 us 34680
BM_addeq_LATTICE<M4DCRTPoly>/parm_32768:32768 277 us 277 us 2593
BM_mult_LATTICE<NativePoly>/parm_16:16 0.384 us 0.384 us 1830523
BM_mult_LATTICE<NativePoly>/parm_1024:1024 2.25 us 2.25 us 311447
BM_mult_LATTICE<NativePoly>/parm_2048:2048 4.16 us 4.16 us 160903
BM_mult_LATTICE<M2Poly>/parm_16:16 20.8 us 20.8 us 33487
BM_mult_LATTICE<M2Poly>/parm_1024:1024 567 us 566 us 1018
BM_mult_LATTICE<M2Poly>/parm_2048:2048 2224 us 2223 us 586
BM_mult_LATTICE<M2Poly>/parm_8192:8192 7799 us 7795 us 110
BM_mult_LATTICE<M2Poly>/parm_32768:32768 56915 us 56833 us 13
BM_mult_LATTICE<M4Poly>/parm_16:16 15.3 us 15.3 us 45997
BM_mult_LATTICE<M4Poly>/parm_1024:1024 608 us 608 us 1111
BM_mult_LATTICE<M4Poly>/parm_2048:2048 1775 us 1774 us 393
BM_mult_LATTICE<M4Poly>/parm_8192:8192 13618 us 13616 us 43
BM_mult_LATTICE<M4Poly>/parm_32768:32768 214906 us 214906 us 3
BM_mult_LATTICE<M2DCRTPoly>/parm_16:16 1.55 us 1.54 us 372952
BM_mult_LATTICE<M2DCRTPoly>/parm_1024:1024 3.06 us 3.06 us 228972
BM_mult_LATTICE<M2DCRTPoly>/parm_2048:2048 11.8 us 11.6 us 76406
BM_mult_LATTICE<M2DCRTPoly>/parm_8192:8192 79.0 us 79.0 us 8859
BM_mult_LATTICE<M2DCRTPoly>/parm_32768:32768 2467 us 2467 us 288
BM_mult_LATTICE<M4DCRTPoly>/parm_16:16 2.38 us 2.37 us 293575
BM_mult_LATTICE<M4DCRTPoly>/parm_1024:1024 3.92 us 3.91 us 181438
BM_mult_LATTICE<M4DCRTPoly>/parm_2048:2048 9.93 us 9.93 us 70161
BM_mult_LATTICE<M4DCRTPoly>/parm_8192:8192 79.2 us 79.2 us 8837
BM_mult_LATTICE<M4DCRTPoly>/parm_32768:32768 3070 us 3067 us 301
BM_multeq_LATTICE<NativePoly>/parm_16:16 0.234 us 0.234 us 2870913
BM_multeq_LATTICE<NativePoly>/parm_1024:1024 1.66 us 1.66 us 423157
BM_multeq_LATTICE<NativePoly>/parm_2048:2048 3.24 us 3.24 us 182590
BM_multeq_LATTICE<M2Poly>/parm_16:16 19.5 us 19.5 us 35923
BM_multeq_LATTICE<M2Poly>/parm_1024:1024 503 us 502 us 2523
BM_multeq_LATTICE<M2Poly>/parm_2048:2048 707 us 706 us 968
BM_multeq_LATTICE<M2Poly>/parm_8192:8192 9714 us 9714 us 172
BM_multeq_LATTICE<M2Poly>/parm_32768:32768 49170 us 49170 us 14
BM_multeq_LATTICE<M4Poly>/parm_16:16 22.7 us 22.7 us 54857
BM_multeq_LATTICE<M4Poly>/parm_1024:1024 528 us 528 us 1364
BM_multeq_LATTICE<M4Poly>/parm_2048:2048 1593 us 1592 us 433
BM_multeq_LATTICE<M4Poly>/parm_8192:8192 12475 us 12475 us 56
BM_multeq_LATTICE<M4Poly>/parm_32768:32768 450470 us 450014 us 2
BM_multeq_LATTICE<M2DCRTPoly>/parm_16:16 0.184 us 0.184 us 3734069
BM_multeq_LATTICE<M2DCRTPoly>/parm_1024:1024 1.64 us 1.63 us 428799
BM_multeq_LATTICE<M2DCRTPoly>/parm_2048:2048 9.94 us 9.94 us 108265
BM_multeq_LATTICE<M2DCRTPoly>/parm_8192:8192 63.3 us 63.3 us 11085
BM_multeq_LATTICE<M2DCRTPoly>/parm_32768:32768 1019 us 1018 us 714
BM_multeq_LATTICE<M4DCRTPoly>/parm_16:16 0.184 us 0.184 us 3799149
BM_multeq_LATTICE<M4DCRTPoly>/parm_1024:1024 2.51 us 2.50 us 428833
BM_multeq_LATTICE<M4DCRTPoly>/parm_2048:2048 13.9 us 13.9 us 39290
BM_multeq_LATTICE<M4DCRTPoly>/parm_8192:8192 72.5 us 72.4 us 11080
BM_multeq_LATTICE<M4DCRTPoly>/parm_32768:32768 815 us 815 us 857
BM_switchformat_LATTICE<NativePoly>/parm_16:16 0.575 us 0.575 us 1209658
BM_switchformat_LATTICE<NativePoly>/parm_1024:1024 7.39 us 7.39 us 95019
BM_switchformat_LATTICE<NativePoly>/parm_2048:2048 22.6 us 22.6 us 45714
BM_switchformat_LATTICE<M2Poly>/parm_16:16 31.1 us 31.1 us 22533
BM_switchformat_LATTICE<M2Poly>/parm_1024:1024 3245 us 3245 us 304
BM_switchformat_LATTICE<M2Poly>/parm_2048:2048 5862 us 5861 us 121
BM_switchformat_LATTICE<M2Poly>/parm_8192:8192 36620 us 36603 us 19
BM_switchformat_LATTICE<M2Poly>/parm_32768:32768 570473 us 569426 us 1
BM_switchformat_LATTICE<M4Poly>/parm_16:16 92.0 us 92.0 us 10000
BM_switchformat_LATTICE<M4Poly>/parm_1024:1024 3922 us 3921 us 179
BM_switchformat_LATTICE<M4Poly>/parm_2048:2048 12051 us 12050 us 58
BM_switchformat_LATTICE<M4Poly>/parm_8192:8192 97967 us 97855 us 7
BM_switchformat_LATTICE<M4Poly>/parm_32768:32768 2199928 us 2183548 us 1
BM_switchformat_LATTICE<M2DCRTPoly>/parm_16:16 1.53 us 1.53 us 510101
BM_switchformat_LATTICE<M2DCRTPoly>/parm_1024:1024 7.73 us 7.73 us 91915
BM_switchformat_LATTICE<M2DCRTPoly>/parm_2048:2048 34.0 us 34.0 us 22717
BM_switchformat_LATTICE<M2DCRTPoly>/parm_8192:8192 338 us 338 us 2068
BM_switchformat_LATTICE<M2DCRTPoly>/parm_32768:32768 6186 us 6183 us 113
BM_switchformat_LATTICE<M4DCRTPoly>/parm_16:16 2.46 us 2.46 us 515887
BM_switchformat_LATTICE<M4DCRTPoly>/parm_1024:1024 8.54 us 8.54 us 92504
BM_switchformat_LATTICE<M4DCRTPoly>/parm_2048:2048 30.9 us 30.9 us 22785
BM_switchformat_LATTICE<M4DCRTPoly>/parm_8192:8192 336 us 336 us 2081
BM_switchformat_LATTICE<M4DCRTPoly>/parm_32768:32768 6346 us 6346 us 88
BM_doubleswitchformat_LATTICE<NativePoly>/parm_16:16 0.907 us 0.907 us 776815
BM_doubleswitchformat_LATTICE<NativePoly>/parm_1024:1024 13.8 us 13.8 us 50570
BM_doubleswitchformat_LATTICE<NativePoly>/parm_2048:2048 29.1 us 29.0 us 24114
BM_doubleswitchformat_LATTICE<M2Poly>/parm_16:16 57.8 us 57.7 us 12323
BM_doubleswitchformat_LATTICE<M2Poly>/parm_1024:1024 4697 us 4695 us 175
BM_doubleswitchformat_LATTICE<M2Poly>/parm_2048:2048 10853 us 10848 us 63
BM_doubleswitchformat_LATTICE<M2Poly>/parm_8192:8192 68137 us 68099 us 10
BM_doubleswitchformat_LATTICE<M2Poly>/parm_32768:32768 823201 us 823103 us 1
BM_doubleswitchformat_LATTICE<M4Poly>/parm_16:16 73.4 us 73.4 us 9519
BM_doubleswitchformat_LATTICE<M4Poly>/parm_1024:1024 7599 us 7587 us 92
BM_doubleswitchformat_LATTICE<M4Poly>/parm_2048:2048 23105 us 23103 us 30
BM_doubleswitchformat_LATTICE<M4Poly>/parm_8192:8192 196000 us 195914 us 4
BM_doubleswitchformat_LATTICE<M4Poly>/parm_32768:32768 4176017 us 4173965 us 1
BM_doubleswitchformat_LATTICE<M2DCRTPoly>/parm_16:16 3.39 us 3.39 us 233719
BM_doubleswitchformat_LATTICE<M2DCRTPoly>/parm_1024:1024 14.0 us 14.0 us 50055
BM_doubleswitchformat_LATTICE<M2DCRTPoly>/parm_2048:2048 98.3 us 98.1 us 6882
BM_doubleswitchformat_LATTICE<M2DCRTPoly>/parm_8192:8192 1713 us 1712 us 445
BM_doubleswitchformat_LATTICE<M2DCRTPoly>/parm_32768:32768 53067 us 53062 us 11
BM_doubleswitchformat_LATTICE<M4DCRTPoly>/parm_16:16 2.02 us 2.02 us 345895
BM_doubleswitchformat_LATTICE<M4DCRTPoly>/parm_1024:1024 15.3 us 15.3 us 50121
BM_doubleswitchformat_LATTICE<M4DCRTPoly>/parm_2048:2048 98.0 us 97.9 us 7067
BM_doubleswitchformat_LATTICE<M4DCRTPoly>/parm_8192:8192 1579 us 1579 us 445
BM_doubleswitchformat_LATTICE<M4DCRTPoly>/parm_32768:32768 24951 us 24927 us 28
2021-03-24 15:19:40
Running ./bin/benchmark/NbTheory
Run on (16 X 1700 MHz CPU s)
Load Average: 2.12, 1.53, 1.17
-----------------------------------------------------
Benchmark Time CPU Iterations
-----------------------------------------------------
BM_GCD1 1892 ns 1891 ns 370365 0
BM_GCD2 4280 ns 4280 ns 272695 4096
BM_MRP1 2266015 ns 2265866 ns 373 1
BM_MRP2 5347716 ns 5347463 ns 131 1
BM_MRP3 17869 ns 17834 ns 39382 0
BM_MRP4 127100 ns 127091 ns 11836 0
BM_FACT1 2826265 ns 2821220 ns 248
BM_PM1 5062875 ns 5062877 ns 138 1073750017
BM_PROU1 26663464 ns 26640544 ns 25 1 8589987840
BM_PROU3 1899684572 ns 1897850924 ns 1 1 140737488486400 134563004490830
2021-03-24 15:19:52
Running ./bin/benchmark/VectorMath
Run on (16 X 1700 MHz CPU s)
Load Average: 1.95, 1.51, 1.17
----------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
----------------------------------------------------------------------------------------
BM_BigVec_Add<NativeVector>/parm_16:16 0.154 us 0.154 us 4564316
BM_BigVec_Add<NativeVector>/parm_1024:1024 1.98 us 1.98 us 444352
BM_BigVec_Add<NativeVector>/parm_2048:2048 3.19 us 3.19 us 220759
BM_BigVec_Add<M2Vector>/parm_16:16 3.32 us 3.31 us 183598
BM_BigVec_Add<M2Vector>/parm_1024:1024 590 us 590 us 1158
BM_BigVec_Add<M2Vector>/parm_2048:2048 1459 us 1459 us 446
BM_BigVec_Add<M2Vector>/parm_8192:8192 5963 us 5955 us 117
BM_BigVec_Add<M2Vector>/parm_32768:32768 21909 us 21905 us 31
BM_BigVec_Add<M4Vector>/parm_16:16 10.4 us 10.4 us 71714
BM_BigVec_Add<M4Vector>/parm_1024:1024 660 us 660 us 1074
BM_BigVec_Add<M4Vector>/parm_2048:2048 1424 us 1424 us 502
BM_BigVec_Add<M4Vector>/parm_8192:8192 6310 us 6310 us 113
BM_BigVec_Add<M4Vector>/parm_32768:32768 34953 us 34894 us 20
BM_BigVec_Addeq<NativeVector>/parm_16:16 0.025 us 0.025 us 30830659
BM_BigVec_Addeq<NativeVector>/parm_1024:1024 1.06 us 1.06 us 616777
BM_BigVec_Addeq<NativeVector>/parm_2048:2048 2.01 us 2.01 us 345308
BM_BigVec_Addeq<M2Vector>/parm_16:16 1.85 us 1.84 us 396957
BM_BigVec_Addeq<M2Vector>/parm_1024:1024 111 us 111 us 6276
BM_BigVec_Addeq<M2Vector>/parm_2048:2048 302 us 302 us 2368
BM_BigVec_Addeq<M2Vector>/parm_8192:8192 1424 us 1424 us 578
BM_BigVec_Addeq<M2Vector>/parm_32768:32768 6476 us 6476 us 108
BM_BigVec_Addeq<M4Vector>/parm_16:16 7.42 us 7.42 us 89059
BM_BigVec_Addeq<M4Vector>/parm_1024:1024 491 us 491 us 1463
BM_BigVec_Addeq<M4Vector>/parm_2048:2048 1024 us 1024 us 682
BM_BigVec_Addeq<M4Vector>/parm_8192:8192 6486 us 6481 us 100
BM_BigVec_Addeq<M4Vector>/parm_32768:32768 19896 us 19896 us 36
BM_BigVec_Mult<NativeVector>/parm_16:16 0.197 us 0.197 us 3543181
BM_BigVec_Mult<NativeVector>/parm_1024:1024 5.75 us 5.75 us 100000
BM_BigVec_Mult<NativeVector>/parm_2048:2048 7.65 us 7.65 us 91892
BM_BigVec_Mult<M2Vector>/parm_16:16 25.8 us 25.8 us 27086
BM_BigVec_Mult<M2Vector>/parm_1024:1024 1056 us 1056 us 675
BM_BigVec_Mult<M2Vector>/parm_2048:2048 3353 us 3347 us 297
BM_BigVec_Mult<M2Vector>/parm_8192:8192 15907 us 15902 us 56
BM_BigVec_Mult<M2Vector>/parm_32768:32768 114833 us 114822 us 6
BM_BigVec_Mult<M4Vector>/parm_16:16 26.9 us 26.9 us 26427
BM_BigVec_Mult<M4Vector>/parm_1024:1024 1208 us 1208 us 579
BM_BigVec_Mult<M4Vector>/parm_2048:2048 3507 us 3503 us 199
BM_BigVec_Mult<M4Vector>/parm_8192:8192 40017 us 40011 us 26
BM_BigVec_Mult<M4Vector>/parm_32768:32768 543250 us 543167 us 2
BM_BigVec_Multeq<NativeVector>/parm_16:16 0.130 us 0.130 us 4071634
BM_BigVec_Multeq<NativeVector>/parm_1024:1024 4.00 us 4.00 us 221207
BM_BigVec_Multeq<NativeVector>/parm_2048:2048 6.89 us 6.88 us 111567
BM_BigVec_Multeq<M2Vector>/parm_16:16 28.0 us 28.0 us 28157
BM_BigVec_Multeq<M2Vector>/parm_1024:1024 1353 us 1353 us 436
BM_BigVec_Multeq<M2Vector>/parm_2048:2048 1428 us 1426 us 494
BM_BigVec_Multeq<M2Vector>/parm_8192:8192 8293 us 8277 us 85
BM_BigVec_Multeq<M2Vector>/parm_32768:32768 98054 us 98049 us 7
BM_BigVec_Multeq<M4Vector>/parm_16:16 23.1 us 23.1 us 29631
BM_BigVec_Multeq<M4Vector>/parm_1024:1024 1344 us 1344 us 710
BM_BigVec_Multeq<M4Vector>/parm_2048:2048 3007 us 3007 us 189
BM_BigVec_Multeq<M4Vector>/parm_8192:8192 24864 us 24854 us 28
BM_BigVec_Multeq<M4Vector>/parm_32768:32768 419367 us 419020 us 2
2021-03-24 15:20:50
Running ./bin/benchmark/basic_test
Run on (16 X 1700 MHz CPU s)
Load Average: 1.82, 1.56, 1.20
-----------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
-----------------------------------------------------------------------------------------
BM_empty 0.535 ns 0.535 ns 1000000000
BM_empty/threads:16 0.064 ns 0.772 ns 873374288
BM_spin_empty/8 5.58 ns 5.58 ns 125508905
BM_spin_empty/512 1244 ns 1243 ns 710029
BM_spin_empty/8192 15668 ns 15668 ns 44689
BM_spin_empty/8/threads:16 0.830 ns 7.85 ns 91494240
BM_spin_empty/512/threads:16 103 ns 1208 ns 579840
BM_spin_empty/8192/threads:16 2039 ns 19645 ns 35984
BM_spin_pause_before/8 5.54 ns 5.54 ns 126268880
BM_spin_pause_before/512 987 ns 987 ns 709880
BM_spin_pause_before/8192 15680 ns 15680 ns 43993
BM_spin_pause_before/8/threads:16 0.682 ns 7.94 ns 86360560
BM_spin_pause_before/512/threads:16 97.4 ns 1264 ns 580352
BM_spin_pause_before/8192/threads:16 1606 ns 19154 ns 37280
BM_spin_pause_during/8 467 ns 468 ns 2008622
BM_spin_pause_during/512 1572 ns 1573 ns 530459
BM_spin_pause_during/8192 16025 ns 16013 ns 40253
BM_spin_pause_during/8/threads:16 59.0 ns 614 ns 1201664
BM_spin_pause_during/512/threads:16 178 ns 1787 ns 377376
BM_spin_pause_during/8192/threads:16 1725 ns 19942 ns 33504
BM_pause_during 380 ns 380 ns 1859833
BM_pause_during/threads:16 54.5 ns 581 ns 1232256
BM_pause_during/real_time 377 ns 378 ns 2019570
BM_pause_during/real_time/threads:16 61.2 ns 583 ns 13321424
BM_spin_pause_after/8 7.78 ns 7.76 ns 107541987
BM_spin_pause_after/512 219 ns 219 ns 3201417
BM_spin_pause_after/8192 8478 ns 8472 ns 100000
BM_spin_pause_after/8/threads:16 0.482 ns 5.71 ns 136528928
BM_spin_pause_after/512/threads:16 28.5 ns 317 ns 1600000
BM_spin_pause_after/8192/threads:16 424 ns 4888 ns 155424
BM_spin_pause_before_and_after/8 7.53 ns 7.53 ns 68501774
BM_spin_pause_before_and_after/512 600 ns 600 ns 2276802
BM_spin_pause_before_and_after/8192 3519 ns 3514 ns 180454
BM_spin_pause_before_and_after/8/threads:16 0.540 ns 5.62 ns 137287184
BM_spin_pause_before_and_after/512/threads:16 31.0 ns 315 ns 2244272
BM_spin_pause_before_and_after/8192/threads:16 445 ns 4851 ns 146096
BM_empty_stop_start 0.241 ns 0.241 ns 1000000000
BM_empty_stop_start/threads:16 0.024 ns 0.293 ns 2385364688
2021-03-24 15:21:19
Running ./bin/benchmark/binfhe-ap
Run on (16 X 1700 MHz CPU s)
Load Average: 3.75, 2.04, 1.39
------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
------------------------------------------------------------------------------------
FHEW_NOT/MEDIUM 0.751 us 0.750 us 929208
FHEW_NOT/STD128 1.07 us 1.07 us 653913
FHEW_NOT/STD128_AP 1.27 us 1.27 us 653361
FHEW_BINGATE/MEDIUM_OR/min_time:10.000 321984 us 321706 us 41
FHEW_BINGATE/MEDIUM_AND 299933 us 299287 us 3
FHEW_BINGATE/MEDIUM_NOR 347350 us 347052 us 3
FHEW_BINGATE/MEDIUM_NAND 326543 us 326126 us 3
FHEW_BINGATE/MEDIUM_XOR 955887 us 953945 us 1
FHEW_BINGATE/MEDIUM_XNOR 805256 us 805237 us 1
FHEW_BINGATE/MEDIUM_XOR_FAST 279636 us 279142 us 3
FHEW_BINGATE/MEDIUM_XNOR_FAST 266258 us 266172 us 3
FHEW_BINGATE/STD128_OR/min_time:10.000 875815 us 875063 us 17
FHEW_BINGATE/STD128_AND 689719 us 689632 us 1
FHEW_BINGATE/STD128_NOR 687017 us 685879 us 1
FHEW_BINGATE/STD128_NAND 676501 us 676275 us 1
FHEW_BINGATE/STD128_XOR 2930609 us 2929212 us 1
FHEW_BINGATE/STD128_XNOR 2560646 us 2558751 us 1
FHEW_BINGATE/STD128_XOR_FAST 683965 us 682668 us 1
FHEW_BINGATE/STD128_XNOR_FAST 951492 us 950354 us 1
FHEW_BINGATE/STD128_AP_OR/min_time:10.000 676706 us 676356 us 19
FHEW_BINGATE/STD128_AP_AND 536918 us 536888 us 1
FHEW_BINGATE/STD128_AP_NOR 536298 us 536123 us 1
FHEW_BINGATE/STD128_AP_NAND 712972 us 712910 us 1
FHEW_BINGATE/STD128_AP_XOR 1777041 us 1775252 us 1
FHEW_BINGATE/STD128_AP_XNOR 2267588 us 2266949 us 1
FHEW_BINGATE/STD128_AP_XOR_FAST 534898 us 534218 us 1
FHEW_BINGATE/STD128_AP_XNOR_FAST 598815 us 598810 us 1
FHEW_KEYSWITCH/MEDIUM/min_time:1.000 17480 us 17452 us 108
FHEW_KEYSWITCH/STD128/min_time:1.000 24326 us 24310 us 58
FHEW_KEYSWITCH/STD128_AP/min_time:1.000 31512 us 31487 us 58
2021-03-24 15:56:17
Running ./bin/benchmark/binfhe-ginx
Run on (16 X 1700 MHz CPU s)
Load Average: 1.45, 1.47, 1.43
---------------------------------------------------------------------------------
Benchmark Time CPU Iterations
---------------------------------------------------------------------------------
FHEW_NOT/MEDIUM 2.18 us 2.18 us 328796
FHEW_NOT/STD128 1.18 us 1.18 us 637154
FHEW_BINGATE/MEDIUM_OR/min_time:10.000 324520 us 324372 us 42
FHEW_BINGATE/MEDIUM_AND 283258 us 283214 us 2
FHEW_BINGATE/MEDIUM_NOR 281847 us 281755 us 2
FHEW_BINGATE/MEDIUM_NAND 349647 us 349141 us 2
FHEW_BINGATE/MEDIUM_XOR 846851 us 846118 us 1
FHEW_BINGATE/MEDIUM_XNOR 1229216 us 1228247 us 1
FHEW_BINGATE/MEDIUM_XOR_FAST 281456 us 281456 us 2
FHEW_BINGATE/MEDIUM_XNOR_FAST 282707 us 282689 us 2
FHEW_BINGATE/STD128_OR/min_time:10.000 773242 us 772717 us 16
FHEW_BINGATE/STD128_AND 729112 us 729097 us 1
FHEW_BINGATE/STD128_NOR 734354 us 734273 us 1
FHEW_BINGATE/STD128_NAND 736111 us 733283 us 1
FHEW_BINGATE/STD128_XOR 2159074 us 2158896 us 1
FHEW_BINGATE/STD128_XNOR 2821404 us 2820195 us 1
FHEW_BINGATE/STD128_XOR_FAST 724062 us 723912 us 1
FHEW_BINGATE/STD128_XNOR_FAST 835879 us 834990 us 1
FHEW_KEYSWITCH/MEDIUM/min_time:1.000 19748 us 19725 us 108
FHEW_KEYSWITCH/STD128/min_time:1.000 24136 us 24136 us 58
2021-03-24 16:02:02
Running ./bin/benchmark/compare-bfvrns-vs-bfvrnsB
Run on (16 X 1700 MHz CPU s)
Load Average: 1.32, 1.37, 1.39
----------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
----------------------------------------------------------------------------------------------------
BFVrns_EvalMultMany/ptm:2/dcrtbit:30/min_time:10.000 195698 us 195622 us 80
BFVrns_EvalMultMany/ptm:2/dcrtbit:60/min_time:10.000 266804 us 266654 us 58
BFVrns_EvalMultMany/ptm:65537/dcrtbit:30/min_time:10.000 744924 us 744436 us 21
BFVrns_EvalMultMany/ptm:65537/dcrtbit:60/min_time:10.000 407922 us 407532 us 27
BFVrnsB_EvalMultMany/ptm:2/dcrtbit:30/min_time:10.000 180708 us 180629 us 91
BFVrnsB_EvalMultMany/ptm:2/dcrtbit:60/min_time:10.000 286352 us 286205 us 65
BFVrnsB_EvalMultMany/ptm:65537/dcrtbit:30/min_time:10.000 789631 us 789035 us 18
BFVrnsB_EvalMultMany/ptm:65537/dcrtbit:60/min_time:10.000 422386 us 422191 us 37
BFVrns_Decrypt/ptm:2/dcrtbit:30/logn:12 274 us 274 us 2595
BFVrns_Decrypt/ptm:2/dcrtbit:30/logn:14 1088 us 1087 us 650
BFVrns_Decrypt/ptm:2/dcrtbit:60/logn:12 277 us 277 us 2499
BFVrns_Decrypt/ptm:2/dcrtbit:60/logn:14 1364 us 1364 us 632
BFVrns_Decrypt/ptm:65537/dcrtbit:30/logn:12 500 us 500 us 1400
BFVrns_Decrypt/ptm:65537/dcrtbit:30/logn:14 2155 us 2154 us 323
BFVrns_Decrypt/ptm:65537/dcrtbit:60/logn:12 372 us 371 us 1970
BFVrns_Decrypt/ptm:65537/dcrtbit:60/logn:14 1578 us 1575 us 455
BFVrnsB_Decrypt/ptm:2/dcrtbit:30/logn:12 288 us 288 us 2450
BFVrnsB_Decrypt/ptm:2/dcrtbit:30/logn:14 1150 us 1150 us 602
BFVrnsB_Decrypt/ptm:2/dcrtbit:60/logn:12 286 us 286 us 2408
BFVrnsB_Decrypt/ptm:2/dcrtbit:60/logn:14 1143 us 1143 us 611
BFVrnsB_Decrypt/ptm:65537/dcrtbit:30/logn:12 530 us 529 us 1327
BFVrnsB_Decrypt/ptm:65537/dcrtbit:30/logn:14 2270 us 2270 us 308
BFVrnsB_Decrypt/ptm:65537/dcrtbit:60/logn:12 422 us 422 us 2017
BFVrnsB_Decrypt/ptm:65537/dcrtbit:60/logn:14 1532 us 1529 us 399
2021-03-24 16:04:59
Running ./bin/benchmark/compare-bfvrns-vs-bgvrns
Run on (16 X 1700 MHz CPU s)
Load Average: 1.20, 1.30, 1.35
------------------------------------------------------------------------------------
Benchmark Time CPU Iterations
------------------------------------------------------------------------------------
BFVrns_EvalMultManyP2/min_time:10.000 258362 us 258212 us 58
BGVrns_EvalMultManyP2/min_time:10.000 140927 us 140856 us 117
BFVrns_EvalMultManyP65537/min_time:10.000 409268 us 408997 us 33
BGVrns_EvalMultManyP65537/min_time:10.000 139408 us 139324 us 97
2021-03-24 16:06:09
Running ./bin/benchmark/lib-benchmark
Run on (16 X 1700 MHz CPU s)
Load Average: 1.33, 1.33, 1.36
-------------------------------------------------------------------
Benchmark Time CPU Iterations
-------------------------------------------------------------------
NTTTransform1024 12.7 us 12.7 us 48060
INTTTransform1024 13.2 us 13.2 us 53067
NTTTransform4096 212 us 211 us 3234
INTTTransform4096 161 us 161 us 4613
BFVrns_KeyGen 3010 us 3008 us 231
BFVrns_MultKeyGen 11034 us 11021 us 77
BFVrns_EvalAtIndexKeyGen 9054 us 9053 us 77
BFVrns_Encryption 3097 us 3096 us 249
BFVrns_Decryption 1190 us 1190 us 578
BFVrns_Add 31.3 us 31.3 us 22335
BFVrns_MultNoRelin 16152 us 16150 us 49
BFVrns_MultRelin 21636 us 21636 us 24
BFVrns_EvalAtIndex 8458 us 8457 us 105
CKKS_KeyGen 3091 us 3091 us 226
CKKS_MultKeyGen 6063 us 6062 us 126
CKKS_EvalAtIndexKeyGen 5616 us 5614 us 124
CKKS_Encryption 2660 us 2656 us 262
CKKS_Decryption 1034 us 1034 us 1033
CKKS_Add 48.1 us 48.1 us 14568
CKKS_MultNoRelin 139 us 139 us 5074
CKKS_MultRelin 6251 us 6244 us 111
CKKS_Relin 6201 us 6201 us 112
CKKS_Rescale 1295 us 1294 us 531
CKKS_EvalAtIndex 8380 us 8373 us 111
BGVrns_KeyGen 2711 us 2711 us 258
BGVrns_MultKeyGen 4070 us 4065 us 178
BGVrns_EvalAtIndexKeyGen 3998 us 3997 us 175
BGVrns_Encryption 3026 us 3024 us 248
BGVrns_Decryption 240 us 240 us 2926
BGVrns_Add 48.4 us 48.4 us 14469
BGVrns_MultNoRelin 140 us 140 us 5029
BGVrns_MultRelin 5765 us 5764 us 122
BGVrns_Relin 6304 us 6300 us 122
BGVrns_EvalAtIndex 13005 us 13002 us 86
Generating polynomials for the benchmark...
Polynomials for the benchmark are generated
2021-03-24 16:09:08
Running ./bin/benchmark/poly-benchmark-16k
Run on (16 X 1700 MHz CPU s)
Load Average: 1.49, 1.52, 1.43
-------------------------------------------------------------
Benchmark Time CPU Iterations
-------------------------------------------------------------
Native_add 25.9 us 25.9 us 27106
DCRT_add/towers:1 27.9 us 27.9 us 25366
DCRT_add/towers:2 67.8 us 67.7 us 11065
DCRT_add/towers:4 126 us 126 us 3979
DCRT_add/towers:8 275 us 275 us 2511
Native_mul 73.2 us 73.0 us 11124
DCRT_mul/towers:1 64.7 us 64.7 us 11161
DCRT_mul/towers:2 130 us 130 us 5357
DCRT_mul/towers:4 330 us 330 us 2664
DCRT_mul/towers:8 544 us 544 us 1273
Native_ntt 1358 us 1358 us 602
DCRT_ntt/towers:1 1173 us 1173 us 604
DCRT_ntt/towers:2 2331 us 2330 us 301
DCRT_ntt/towers:4 4848 us 4832 us 150
DCRT_ntt/towers:8 9334 us 9318 us 75
Native_intt 486 us 486 us 2287
DCRT_intt/towers:1 302 us 302 us 2319
DCRT_intt/towers:2 608 us 607 us 1140
DCRT_intt/towers:4 1215 us 1215 us 570
DCRT_intt/towers:8 2465 us 2463 us 288
Generating polynomials for the benchmark...
Polynomials for the benchmark are generated
2021-03-24 16:09:35
Running ./bin/benchmark/poly-benchmark-1k
Run on (16 X 1700 MHz CPU s)
Load Average: 1.38, 1.49, 1.42
-------------------------------------------------------------
Benchmark Time CPU Iterations
-------------------------------------------------------------
Native_add 4.86 us 4.85 us 361289
DCRT_add/towers:1 2.22 us 2.22 us 316507
DCRT_add/towers:2 4.33 us 4.33 us 161816
DCRT_add/towers:4 8.47 us 8.47 us 81890
DCRT_add/towers:8 16.8 us 16.8 us 41343
Native_mul 5.30 us 5.28 us 100000
DCRT_mul/towers:1 4.35 us 4.35 us 160936
DCRT_mul/towers:2 8.75 us 8.74 us 81392
DCRT_mul/towers:4 22.9 us 22.9 us 40496
DCRT_mul/towers:8 35.2 us 35.1 us 20702
Native_ntt 83.9 us 83.8 us 13352
DCRT_ntt/towers:1 124 us 124 us 6137
DCRT_ntt/towers:2 282 us 282 us 2350
DCRT_ntt/towers:4 216 us 216 us 3205
DCRT_ntt/towers:8 776 us 775 us 1000
Native_intt 25.2 us 25.2 us 46854
DCRT_intt/towers:1 15.1 us 15.1 us 46410
DCRT_intt/towers:2 41.7 us 41.7 us 23279
DCRT_intt/towers:4 62.3 us 62.3 us 11661
DCRT_intt/towers:8 121 us 121 us 5753
Generating polynomials for the benchmark...
Polynomials for the benchmark are generated
2021-03-24 16:10:33
Running ./bin/benchmark/poly-benchmark-4k
Run on (16 X 1700 MHz CPU s)
Load Average: 1.35, 1.46, 1.41
-------------------------------------------------------------
Benchmark Time CPU Iterations
-------------------------------------------------------------
Native_add 14.9 us 14.9 us 104902
DCRT_add/towers:1 10.4 us 10.4 us 62820
DCRT_add/towers:2 18.7 us 18.7 us 41970
DCRT_add/towers:4 28.5 us 28.5 us 24726
DCRT_add/towers:8 63.4 us 63.4 us 11011
Native_mul 15.7 us 15.7 us 44460
DCRT_mul/towers:1 15.9 us 15.9 us 44340
DCRT_mul/towers:2 31.8 us 31.7 us 22149
DCRT_mul/towers:4 63.0 us 63.0 us 11120
DCRT_mul/towers:8 134 us 134 us 5298
Native_ntt 251 us 251 us 2783
DCRT_ntt/towers:1 254 us 254 us 2784
DCRT_ntt/towers:2 531 us 531 us 1391
DCRT_ntt/towers:4 1010 us 1010 us 611
DCRT_ntt/towers:8 2021 us 2021 us 346
Native_intt 71.2 us 71.2 us 10100
DCRT_intt/towers:1 102 us 101 us 6512
DCRT_intt/towers:2 136 us 136 us 5168
DCRT_intt/towers:4 272 us 272 us 2585
DCRT_intt/towers:8 548 us 548 us 1289
Generating polynomials for the benchmark...
Polynomials for the benchmark are generated
2021-03-24 16:20:19
Running ./bin/benchmark/poly-benchmark-64k
Run on (16 X 1700 MHz CPU s)
Load Average: 1.31, 1.38, 1.40
-------------------------------------------------------------
Benchmark Time CPU Iterations
-------------------------------------------------------------
Native_add 714 us 713 us 1085
DCRT_add/towers:1 631 us 630 us 1065
DCRT_add/towers:2 1320 us 1320 us 508
DCRT_add/towers:4 2686 us 2685 us 212
DCRT_add/towers:8 5385 us 5381 us 136
Native_mul 870 us 867 us 797
DCRT_mul/towers:1 1087 us 1086 us 855
DCRT_mul/towers:2 2096 us 2093 us 363
DCRT_mul/towers:4 3425 us 3425 us 202
DCRT_mul/towers:8 7811 us 7805 us 114
Native_ntt 5870 us 5863 us 120
DCRT_ntt/towers:1 5924 us 5923 us 117
DCRT_ntt/towers:2 18177 us 18163 us 59
DCRT_ntt/towers:4 24460 us 24433 us 29
DCRT_ntt/towers:8 59649 us 59601 us 13
Native_intt 2237 us 2234 us 371
DCRT_intt/towers:1 1896 us 1895 us 346
DCRT_intt/towers:2 4576 us 4569 us 181
DCRT_intt/towers:4 7823 us 7823 us 90
DCRT_intt/towers:8 19555 us 19532 us 47
# Examples
# Packaging Palisade for OpenBSD
# Resources
- https://en.wikipedia.org/wiki/Homomorphic_encryption#cite_note-SHEEP-47
- https://en.wikipedia.org/wiki/PALISADE_(software)
- https://palisade-crypto.org/
- https://gitlab.com/palisade/palisade-release
- https://reviews.llvm.org/D34280
- https://openports.se/devel/llvm
- https://palisade-crypto.org/publications/
- https://www.openmp.org/