aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2025-10-26 15:48:54 +0100
committerJ08nY2025-10-26 15:48:54 +0100
commit38547eab4803c81b51138dc529c7cca562f8dbfd (patch)
tree4a353ed47b3546c0773f3f9fc4203bfc226d98d2
parent581253817dc2eabfb88d2d7ca75d2174eafe5c4d (diff)
downloadECTester-38547eab4803c81b51138dc529c7cca562f8dbfd.tar.gz
ECTester-38547eab4803c81b51138dc529c7cca562f8dbfd.tar.zst
ECTester-38547eab4803c81b51138dc529c7cca562f8dbfd.zip
-rw-r--r--analysis/scalarmults/epare/__init__.py7
-rw-r--r--analysis/scalarmults/epare/simulate.py1
-rw-r--r--analysis/scalarmults/epare/standalone/README.md (renamed from analysis/scalarmults/standalone/README.md)4
-rw-r--r--analysis/scalarmults/epare/standalone/__init__.py0
-rw-r--r--analysis/scalarmults/epare/standalone/make_multiples.py (renamed from analysis/scalarmults/standalone/make_multiples.py)8
-rw-r--r--analysis/scalarmults/epare/standalone/make_probs.py (renamed from analysis/scalarmults/standalone/make_probs.py)17
-rw-r--r--analysis/scalarmults/epare/standalone/merge_probs.py (renamed from analysis/scalarmults/standalone/merge_probs.py)15
7 files changed, 36 insertions, 16 deletions
diff --git a/analysis/scalarmults/epare/__init__.py b/analysis/scalarmults/epare/__init__.py
index f6be00a..27cc0e4 100644
--- a/analysis/scalarmults/epare/__init__.py
+++ b/analysis/scalarmults/epare/__init__.py
@@ -31,6 +31,13 @@ from .config import MultIdent, CountermeasureIdent, Config
from .error_model import ErrorModel, checks_add
from .mult_results import MultResults
from .prob_map import ProbMap
+from .simulate import (
+ simulate_multiples,
+ simulate_multiples_direct,
+ evaluate_multiples,
+ evaluate_multiples_direct,
+ evaluate_multiples_compressed
+)
diff --git a/analysis/scalarmults/epare/simulate.py b/analysis/scalarmults/epare/simulate.py
index e4251a6..24e41b6 100644
--- a/analysis/scalarmults/epare/simulate.py
+++ b/analysis/scalarmults/epare/simulate.py
@@ -1,6 +1,7 @@
import hashlib
import random
import pickle
+import sys
from functools import partial
diff --git a/analysis/scalarmults/standalone/README.md b/analysis/scalarmults/epare/standalone/README.md
index f34187e..7b0b832 100644
--- a/analysis/scalarmults/standalone/README.md
+++ b/analysis/scalarmults/epare/standalone/README.md
@@ -5,8 +5,8 @@ Pick a random seed (hex)
make_multiples (one 70GB file), one job
-> multiples_<seed>.zpickle
-make_probs (one small file), one job per multiples file
- -> probs_<seed>.pickle
+make_probs (one smaller file), one job per multiples file
+ -> probs_<seed>.zpickle
merge_probs (one small file), one job for all
-> merged.pickle
diff --git a/analysis/scalarmults/epare/standalone/__init__.py b/analysis/scalarmults/epare/standalone/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/analysis/scalarmults/epare/standalone/__init__.py
diff --git a/analysis/scalarmults/standalone/make_multiples.py b/analysis/scalarmults/epare/standalone/make_multiples.py
index d922616..dbc9041 100644
--- a/analysis/scalarmults/standalone/make_multiples.py
+++ b/analysis/scalarmults/epare/standalone/make_multiples.py
@@ -19,7 +19,7 @@ from tqdm import tqdm
from pyecsca.ec.params import get_params
from pyecsca.misc.utils import TaskExecutor
-from epare import all_configs, simulate_multiples_direct
+from .. import all_configs, simulate_multiples_direct
if sys.version_info >= (3, 14):
@@ -41,8 +41,8 @@ def main(temp, workers, seed, samples):
if temp is None:
tmp = TemporaryDirectory()
- temp = Path(tmp)
- atexit.register(tmp.close)
+ temp = Path(tmp.name)
+ atexit.register(tmp.cleanup)
output = f"multiples_{seed}.zpickle"
@@ -64,7 +64,7 @@ def main(temp, workers, seed, samples):
h.write(f.read())
fpath.unlink()
if (i % 100) == 0:
- time.sleep(5)
+ time.sleep(1)
if __name__ == "__main__":
diff --git a/analysis/scalarmults/standalone/make_probs.py b/analysis/scalarmults/epare/standalone/make_probs.py
index 9228180..b92a215 100644
--- a/analysis/scalarmults/standalone/make_probs.py
+++ b/analysis/scalarmults/epare/standalone/make_probs.py
@@ -2,10 +2,12 @@
Make the probs file from a given multiples file.
"""
import atexit
+import gc
import pickle
import sys
from pathlib import Path
+from tempfile import TemporaryDirectory
import click
@@ -13,7 +15,7 @@ from tqdm import tqdm
from pyecsca.ec.params import get_params
from pyecsca.misc.utils import TaskExecutor
-from epare import all_error_models, evaluate_multiples_compressed, divisor_map
+from .. import all_configs, all_error_models, evaluate_multiples_compressed, divisor_map
if sys.version_info >= (3, 14):
@@ -34,20 +36,21 @@ def main(temp, workers, seed):
if temp is None:
tmp = TemporaryDirectory()
- temp = Path(tmp)
- atexit.register(tmp.close)
+ temp = Path(tmp.name)
+ atexit.register(tmp.cleanup)
use_init = True
use_multiply = True
in_path = Path(f"multiples_{seed}.zpickle")
- out_path = Path(f"probs_{seed}.pickle")
+ out_path = Path(f"probs_{seed}.zpickle")
- with zstd.open(in_path, "rb") as f, out_path.open("wb") as h:
+ with zstd.open(in_path, "rb") as f, zstd.open(out_path, "wb") as h, TaskExecutor(max_workers=workers) as pool, tqdm(total=len(all_configs), desc=f"Generating probability maps.", smoothing=0) as bar:
while True:
try:
start = f.tell()
- mult, vals = pickle.load(f)
+ bar.update(1)
+ mult, _ = pickle.load(f)
for error_model in all_error_models:
full = mult.with_error_model(error_model)
# Pass the file name and offset to speed up computation start.
@@ -75,4 +78,4 @@ def main(temp, workers, seed):
if __name__ == "__main__":
- pass \ No newline at end of file
+ main() \ No newline at end of file
diff --git a/analysis/scalarmults/standalone/merge_probs.py b/analysis/scalarmults/epare/standalone/merge_probs.py
index 0193382..6748a3d 100644
--- a/analysis/scalarmults/standalone/merge_probs.py
+++ b/analysis/scalarmults/epare/standalone/merge_probs.py
@@ -3,19 +3,28 @@ Merge all probs files into one.
"""
import pickle
+import sys
import click
from pathlib import Path
-from epare import ProbMap
+from tqdm import tqdm
+
+from .. import ProbMap
+
+
+if sys.version_info >= (3, 14):
+ from compression import zstd
+else:
+ from backports import zstd
@click.command()
def main():
maps = {}
- for file in Path().glob("probs_*.pickle"):
- with file.open("rb") as h:
+ for file in tqdm(Path().glob("probs_*.zpickle"), desc="Merging probmaps.", smoothing=0):
+ with zstd.open(file, "rb") as h:
while True:
try:
full, prob_map = pickle.load(h)