aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2025-03-21 18:39:13 +0100
committerJ08nY2025-04-16 12:25:06 +0200
commit6e59917666dbe7b2c2e2685ab6b01c4c43dacf2e (patch)
treebf59e842ba206e77acb72601041187c2e7b5d6e9
parent0d2e42b42e8307cb52c9d0fc76d209cdab9f70a9 (diff)
downloadECTester-6e59917666dbe7b2c2e2685ab6b01c4c43dacf2e.tar.gz
ECTester-6e59917666dbe7b2c2e2685ab6b01c4c43dacf2e.tar.zst
ECTester-6e59917666dbe7b2c2e2685ab6b01c4c43dacf2e.zip
-rw-r--r--epare/simulate.py22
1 files changed, 11 insertions, 11 deletions
diff --git a/epare/simulate.py b/epare/simulate.py
index 2010e1a..f4c3786 100644
--- a/epare/simulate.py
+++ b/epare/simulate.py
@@ -10,6 +10,7 @@ import glob
import random
import sys
import time
+import os
import matplotlib
import matplotlib.pyplot as plt
@@ -90,12 +91,18 @@ if __name__ == "__main__":
bits = params.order.bit_length()
samples = int(sys.argv[2]) if len(sys.argv) > 2 else 100
kind = sys.argv[3] if len(sys.argv) > 3 else "precomp+necessary"
+ use_init = (sys.argv[4].lower() == "true") if len(sys.argv) > 4 else True
+ use_multiply = (sys.argv[5].lower() == "true") if len(sys.argv) > 5 else True
selected_mults = all_mults
shuffle(selected_mults)
+ if (scratch := os.getenv("SCRATCHDIR")) is not None:
+ outdir = Path(scratch)
+ else:
+ outdir = Path.cwd()
+
print(f"Running on {num_workers} cores, doing {samples} samples.")
- multiples_mults = {}
chunk_id = randbytes(6).hex()
with TaskExecutor(max_workers=num_workers) as pool:
for mult in selected_mults:
@@ -103,19 +110,12 @@ if __name__ == "__main__":
mwc = mult.with_countermeasure(countermeasure)
pool.submit_task(mwc,
get_small_scalar_multiples,
- mwc, params, bits, samples, seed=chunk_id, kind=kind)
+ mwc, params, bits, samples, use_init=use_init, use_multiply=use_multiply, seed=chunk_id, kind=kind)
for mult, future in tqdm(pool.as_completed(), desc="Computing small scalar distributions.", total=len(pool.tasks), smoothing=0):
if error := future.exception():
print("Error", mult, error)
raise error
res = future.result()
print(f"Got {mult} in {res.duration}.")
- if mult not in multiples_mults:
- multiples_mults[mult] = res
- else:
- # Accumulate
- multiples_mults[mult].merge(res)
- with open(f"multiples_{bits}_{kind}_chunk{chunk_id}.pickle","wb") as h:
- pickle.dump(multiples_mults, h)
- with open(f"multiples_{bits}_{kind}_chunk{chunk_id}.pickle","wb") as h:
- pickle.dump(multiples_mults, h)
+ with (outdir / f"multiples_{bits}_{kind}_chunk{chunk_id}.pickle").open("ab") as f:
+ pickle.dump((mult, res), f)