|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- from multiprocessing import Pool
- from map_drop import map_drop
- from numpy.random import seed as np_seed
- load("../framework/instance_gen.sage")
-
- Derr = build_centered_binomial_law(6)
- modulus = 11
-
- try:
- N_tests = int(sys.argv[1])
- threads = int(sys.argv[2])
- except:
- N_tests = 5
- threads = 1
-
-
- def v(i):
- return canonical_vec(d, i)
-
-
- def randv():
- vv = v(randint(0, d - 1))
- vv -= v(randint(0, d - 1))
- vv += v(randint(0, d - 1))
- vv -= v(randint(0, d - 1))
- vv += v(randint(0, d - 1))
- return vv
-
-
- def one_experiment(id, aargs):
- N_hints, T_hints, simul, probabilistic = aargs
- mu, variance = average_variance(Derr)
- set_random_seed(id)
- np_seed(seed=id)
- A, b, dbdd = initialize_from_LWE_instance(DBDD_predict if simul else DBDD,
- n, q, m, D_e, D_s, verbosity=0)
-
- if simul:
- beta, _ = dbdd.estimate_attack(tours=1, probabilistic=probabilistic)
- return beta
- else:
- beta, _ = dbdd.attack(tours=1)
- return beta
-
-
- dic = {" ": None}
-
-
- def validation_prediction(N_tests, N_hints, T_hints):
- # Estimation
- import datetime
- ttt = datetime.datetime.now()
- pred_N_test = int(ceil(threads / 2))
- res = map_drop(pred_N_test, pred_N_test, one_experiment,
- (N_hints, T_hints, True, True))
- beta_pred_proba = RR(sum(res)) / (pred_N_test)
-
- res = map_drop(pred_N_test, pred_N_test, one_experiment,
- (N_hints, T_hints, True, False))
- beta_pred_intersect = RR(sum(res)) / (pred_N_test)
-
- res = map_drop(N_tests, threads, one_experiment,
- (N_hints, T_hints, False, None))
- beta_real = RR(sum(res)) / N_tests
-
- print("n:%3d Beta Real: %2.3f Beta predicted: %2.3f beta predicted(intersect): %2.3f "
- % (n, beta_real, beta_pred_proba, beta_pred_intersect), end=" \t")
- print("Walltime: ", datetime.datetime.now() - ttt, end=" \t")
- print("DIFF \t\t%.3f,\t%.3f,\t%.3f"
- % (beta_real, beta_pred_proba - beta_real,
- beta_pred_intersect - beta_real))
- return
-
-
- logging("Number of threads : %d" % threads, style="DATA")
- logging("Number of Samples : %d" % N_tests, style="DATA")
- logging(" Validation tests ", style="HEADER")
-
- for k in range(30, 100, 2):
- n = k
- m = n
- q = 3301
- D_s = build_centered_binomial_law(40)
- D_e = build_centered_binomial_law(40)
- d = m + n
- validation_prediction(N_tests, 0, "None") # Line 0
|