Our automated testing picked up failure yesterday when encrypting/decrypting using CKKS against a DQ processor using SEAL version 3.7.1. After investigating a bit, we found that even the SEAL examples for CKKS appear to be producing incorrect results. When running example 4, we see the following output:
Line 292 --> Decrypt and decode PI*x^3 + 0.4x + 1.
+ Expected result:
[ 1.0000000, 1.0000977, 1.0001954, ..., 4.5367965, 4.5391940, 4.5415926 ]
+ Computed result ...... Correct.
[ 8851047.3017527, -49664808.4336319, 17739259.1471153, ..., 19118668.7951671, 31496205.5367488, 10854363.3229653 ]
To build the examples, we started up an AWS c5.xlarge instance and compiled using the flags: -DSEAL_BUILD_EXAMPLES=ON -DSEAL_USE_INTEL_HEXL=ON. When running with an IFMA processor, the output is correct.
Digging into the issue, it appears that the HEXL function: EltwiseReduceMod may be producing incorrect results with version 1.2.2. I've posted an issue on the HEXL github page: IntelLabs/hexl#86
Our automated testing picked up failure yesterday when encrypting/decrypting using CKKS against a DQ processor using SEAL version 3.7.1. After investigating a bit, we found that even the SEAL examples for CKKS appear to be producing incorrect results. When running example 4, we see the following output:
To build the examples, we started up an AWS c5.xlarge instance and compiled using the flags:
-DSEAL_BUILD_EXAMPLES=ON -DSEAL_USE_INTEL_HEXL=ON. When running with an IFMA processor, the output is correct.Digging into the issue, it appears that the HEXL function: EltwiseReduceMod may be producing incorrect results with version 1.2.2. I've posted an issue on the HEXL github page: IntelLabs/hexl#86