From eb45fefb1c536f2944458cdf5dfd46d2f904cb02 Mon Sep 17 00:00:00 2001 From: Christian M Date: Thu, 24 Sep 2020 17:01:57 +0200 Subject: [PATCH] added bootstrapping example to make test target --- Makefile | 25 +++-- ckks/bootstrapp_params.go | 1 + .../{bootstrapp => bootstrapping}/main.go | 7 +- examples/ckks/euler/output.txt | 102 ------------------ 4 files changed, 18 insertions(+), 117 deletions(-) rename examples/ckks/{bootstrapp => bootstrapping}/main.go (91%) delete mode 100644 examples/ckks/euler/output.txt diff --git a/Makefile b/Makefile index cbd6df0b..24c3acc9 100644 --- a/Makefile +++ b/Makefile @@ -26,16 +26,21 @@ test_lint: fi \ } -test_local: - go test -v -short -p=1 ./... -timeout=0 - @echo Running the exemples - go run ./examples/bfv/examples_bfv.go > /dev/null - go run ./examples/ckks/euler/euler.go > /dev/null - go run ./examples/ckks/sigmoid/sigmoid.go > /dev/null - go run ./examples/dbfv/pir/pir.go &> /dev/null - go run ./examples/dbfv/psi/psi.go &> /dev/null +test_examples: + @echo Running the examples + go run ./examples/bfv > /dev/null + go run ./examples/ckks/euler > /dev/null + go run ./examples/ckks/sigmoid > /dev/null + go run ./examples/dbfv/pir &> /dev/null + go run ./examples/dbfv/psi &> /dev/null + @echo ok + @echo Building resources-heavy examples + go build -o /dev/null ./examples/ckks/bootstrapping @echo ok -test: test_fmt test_local +test_gotest: + go test -v -short -p=1 ./... -timeout=0 -local: test_fmt test_lint test_local +test: test_fmt test_gotest test_examples + +local: test_fmt test_lint test_gotest test_examples diff --git a/ckks/bootstrapp_params.go b/ckks/bootstrapp_params.go index 36f305f0..f4da2185 100644 --- a/ckks/bootstrapp_params.go +++ b/ckks/bootstrapp_params.go @@ -349,6 +349,7 @@ var DefaultBootstrappParams = []*BootstrappParams{ MaxN1N2Ratio: 16.0, }, + // Set VI { H: 192, SinType: Cos, diff --git a/examples/ckks/bootstrapp/main.go b/examples/ckks/bootstrapping/main.go similarity index 91% rename from examples/ckks/bootstrapp/main.go rename to examples/ckks/bootstrapping/main.go index b709dcfa..c9e77a6e 100644 --- a/examples/ckks/bootstrapp/main.go +++ b/examples/ckks/bootstrapping/main.go @@ -35,8 +35,8 @@ func main() { // LogSlots is hardcoded to 15 in the parameters, but can be changed from 1 to 15. // When changing logSlots make sure that the number of levels allocated to CtS and StC is // smaller or equal to logSlots. - params := ckks.DefaultBootstrappSchemeParams[4] - btpParams := ckks.DefaultBootstrappParams[4] + params := ckks.DefaultBootstrappSchemeParams[5] + btpParams := ckks.DefaultBootstrappParams[5] fmt.Println() fmt.Printf("CKKS parameters : logN = %d, logSlots = %d, h = %d, logQP = %d, levels = %d, scale= 2^%f, sigma = %f \n", params.LogN(), params.LogSlots(), btpParams.H, params.LogQP(), params.Levels(), math.Log2(params.Scale()), params.Sigma()) @@ -50,9 +50,6 @@ func main() { decryptor = ckks.NewDecryptor(params, sk) encryptor = ckks.NewEncryptorFromPk(params, pk) - // Bootstrapp context (generates public evaluation keys and relevant parameters) - // TODO : seperate the key-generation from the rest, since those evaluation keys only need to be generated once. - // Make it so they can be given as input to the bootstrapp. fmt.Println() fmt.Println("Generating bootstrappign keys...") btpKey := kgen.GenBootstrappingKey(params.LogSlots(), btpParams, sk) diff --git a/examples/ckks/euler/output.txt b/examples/ckks/euler/output.txt deleted file mode 100644 index 498bfda2..00000000 --- a/examples/ckks/euler/output.txt +++ /dev/null @@ -1,102 +0,0 @@ -========================================= - INSTANTIATING SCHEME -========================================= - -Done in 95.2339ms - -CKKS parameters : logN = 14, logSlots = 13, logQP = 426, levels = 8, scale= 1099511627776.000000, sigma = 3.200000 - -========================================= - PLAINTEXT CREATION -========================================= - -Done in 5.9478ms - -========================================= - ENCRYPTION -========================================= - -Done in 22.9943ms - -ValuesTest : (6.2831844188+0.0000028379i) (6.2831853232+0.0000001035i) (6.2831849281+0.0000004304i) (6.2831853058+0.0000000013i)... -ValuesWant : (6.2831853072+0.0000000000i) (6.2831853072+0.0000000000i) (6.2831853072+0.0000000000i) (6.2831853072+0.0000000000i)... - -Minimum precision : (19.56, 18.43) bits -Maximum precision : (37.69, 36.72) bits -Mean precision : (25.03, 24.99) bits -Median precision : (25.58, 25.58) bits - - -=============================================== - EVALUATION OF i*x on 8192 values -=============================================== - -Done in 1.8163ms - -ValuesTest : (0.0000028379+6.2831844188i) (0.0000001035+6.2831853232i) (0.0000004304+6.2831849281i) (0.0000000013+6.2831853058i)... -ValuesWant : (0.0000000000+6.2831853072i) (0.0000000000+6.2831853072i) (0.0000000000+6.2831853072i) (0.0000000000+6.2831853072i)... - -Minimum precision : (18.43, 19.56) bits -Maximum precision : (36.72, 37.69) bits -Mean precision : (24.99, 25.03) bits -Median precision : (25.58, 25.58) bits - - -=============================================== - EVALUATION of x/r on 8192 values -=============================================== - -Done in 0s - -ValuesTest : (0.0000001774+0.3926990262i) (0.0000000065+0.3926990827i) (0.0000000269+0.3926990580i) (0.0000000001+0.3926990816i)... -ValuesWant : (0.0000000000+0.3926990817i) (0.0000000000+0.3926990817i) (0.0000000000+0.3926990817i) (0.0000000000+0.3926990817i)... - -Minimum precision : (22.43, 23.56) bits -Maximum precision : (40.72, 41.69) bits -Mean precision : (28.99, 29.03) bits -Median precision : (29.58, 29.58) bits - - -=============================================== - EVALUATION of e^x on 8192 values -=============================================== - -Done in 241.1064ms - -ValuesTest : (0.9238793769+0.3826833131i) (0.9238795117+0.3826834299i) (0.9238795087+0.3826834015i) (0.9238795172+0.3826834281i)... -ValuesWant : (0.9238795325+0.3826834324i) (0.9238795325+0.3826834324i) (0.9238795325+0.3826834324i) (0.9238795325+0.3826834324i)... - -Minimum precision : (22.62, 23.00) bits -Maximum precision : (34.60, 40.35) bits -Mean precision : (26.09, 28.17) bits -Median precision : (26.09, 28.70) bits - - -=============================================== - EVALUATION of x^r on 8192 values -=============================================== - -Done in 84.5117ms - -ValuesTest : (0.9999969632-0.0000008293i) (0.9999996766+0.0000000916i) (0.9999994651-0.0000003385i) (0.9999997437+0.0000000265i)... -ValuesWant : (1.0000000000+0.0000000000i) (1.0000000000+0.0000000000i) (1.0000000000+0.0000000000i) (1.0000000000+0.0000000000i)... - -Minimum precision : (18.33, 19.70) bits -Maximum precision : (31.94, 33.24) bits -Mean precision : (22.17, 23.40) bits -Median precision : (22.18, 23.58) bits - - -========================================= - DECRYPTION & DECODING -========================================= - -Done in 24.0009ms - -ValuesTest : (0.9999969632-0.0000008293i) (0.9999996766+0.0000000916i) (0.9999994651-0.0000003385i) (0.9999997437+0.0000000265i)... -ValuesWant : (1.0000000000+0.0000000000i) (1.0000000000+0.0000000000i) (1.0000000000+0.0000000000i) (1.0000000000+0.0000000000i)... - -Minimum precision : (18.33, 19.70) bits -Maximum precision : (31.94, 33.24) bits -Mean precision : (22.17, 23.40) bits -Median precision : (22.18, 23.58) bits \ No newline at end of file