From e86bb0cb6c2705eace6ced921877f3b6527d2fe3 Mon Sep 17 00:00:00 2001 From: Marcin Pawlowski Date: Thu, 30 Jul 2026 18:52:01 +0200 Subject: [PATCH] Importing tsi-sim v2 --- tools/simulators/tsi/tsi-sim-mc/.gitignore | 18 + tools/simulators/tsi/tsi-sim-mc/Makefile | 57 +++ tools/simulators/tsi/tsi-sim-mc/README.md | 102 ++++++ .../tsi/tsi-sim-mc/configs/default.yaml | 16 + .../tsi/tsi-sim-mc/configs/fullscale.yaml | 16 + .../tsi/tsi-sim-mc/configs/smoke.yaml | 14 + .../simulators/tsi/tsi-sim-mc/pyproject.toml | 47 +++ .../tsi/tsi-sim-mc/requirements-dev.txt | 1 + .../tsi/tsi-sim-mc/requirements.txt | 1 + .../tsi/tsi-sim-mc/scripts/make_figures.py | 14 + .../tsi/tsi-sim-mc/scripts/run_sweep.py | 14 + .../tsi/tsi-sim-mc/scripts/verify.py | 14 + .../tsi/tsi-sim-mc/src/tsi_sim/__init__.py | 3 + .../tsi/tsi-sim-mc/src/tsi_sim/blocktree.py | 127 +++++++ .../tsi/tsi-sim-mc/src/tsi_sim/concurrency.py | 62 ++++ .../tsi/tsi-sim-mc/src/tsi_sim/config.py | 163 +++++++++ .../tsi/tsi-sim-mc/src/tsi_sim/constants.py | 39 ++ .../tsi/tsi-sim-mc/src/tsi_sim/engine.py | 39 ++ .../tsi/tsi-sim-mc/src/tsi_sim/epoch.py | 84 +++++ .../tsi/tsi-sim-mc/src/tsi_sim/latency.py | 54 +++ .../tsi/tsi-sim-mc/src/tsi_sim/lottery.py | 114 ++++++ .../tsi/tsi-sim-mc/src/tsi_sim/metrics.py | 76 ++++ .../src/tsi_sim/plotting/__init__.py | 1 + .../src/tsi_sim/plotting/figures.py | 339 ++++++++++++++++++ .../src/tsi_sim/plotting/make_figures.py | 76 ++++ .../tsi-sim-mc/src/tsi_sim/plotting/style.py | 92 +++++ .../tsi/tsi-sim-mc/src/tsi_sim/rng.py | 32 ++ .../tsi/tsi-sim-mc/src/tsi_sim/stake.py | 32 ++ .../tsi/tsi-sim-mc/src/tsi_sim/sweep.py | 115 ++++++ .../tsi/tsi-sim-mc/src/tsi_sim/theory.py | 60 ++++ .../tsi/tsi-sim-mc/src/tsi_sim/tsi.py | 91 +++++ .../tsi/tsi-sim-mc/src/tsi_sim/uncles.py | 82 +++++ .../tsi/tsi-sim-mc/src/tsi_sim/verify.py | 116 ++++++ .../tsi/tsi-sim-mc/tests/test_blocktree.py | 54 +++ .../tsi/tsi-sim-mc/tests/test_concurrency.py | 40 +++ .../tsi/tsi-sim-mc/tests/test_config.py | 81 +++++ .../tsi/tsi-sim-mc/tests/test_latency.py | 35 ++ .../tsi/tsi-sim-mc/tests/test_lottery.py | 77 ++++ .../tsi/tsi-sim-mc/tests/test_rng.py | 31 ++ .../tsi/tsi-sim-mc/tests/test_stake.py | 40 +++ .../tsi/tsi-sim-mc/tests/test_theory.py | 40 +++ .../tests/test_theory_convergence.py | 49 +++ .../tsi/tsi-sim-mc/tests/test_tsi_counting.py | 87 +++++ .../tsi/tsi-sim-mc/tests/test_uncles.py | 110 ++++++ 44 files changed, 2755 insertions(+) create mode 100644 tools/simulators/tsi/tsi-sim-mc/.gitignore create mode 100644 tools/simulators/tsi/tsi-sim-mc/Makefile create mode 100644 tools/simulators/tsi/tsi-sim-mc/README.md create mode 100644 tools/simulators/tsi/tsi-sim-mc/configs/default.yaml create mode 100644 tools/simulators/tsi/tsi-sim-mc/configs/fullscale.yaml create mode 100644 tools/simulators/tsi/tsi-sim-mc/configs/smoke.yaml create mode 100644 tools/simulators/tsi/tsi-sim-mc/pyproject.toml create mode 100644 tools/simulators/tsi/tsi-sim-mc/requirements-dev.txt create mode 100644 tools/simulators/tsi/tsi-sim-mc/requirements.txt create mode 100644 tools/simulators/tsi/tsi-sim-mc/scripts/make_figures.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/scripts/run_sweep.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/scripts/verify.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/__init__.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/blocktree.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/concurrency.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/config.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/constants.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/engine.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/epoch.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/latency.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/lottery.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/metrics.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/plotting/__init__.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/plotting/figures.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/plotting/make_figures.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/plotting/style.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/rng.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/stake.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/sweep.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/theory.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/tsi.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/uncles.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/src/tsi_sim/verify.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/tests/test_blocktree.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/tests/test_concurrency.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/tests/test_config.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/tests/test_latency.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/tests/test_lottery.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/tests/test_rng.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/tests/test_stake.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/tests/test_theory.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/tests/test_theory_convergence.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/tests/test_tsi_counting.py create mode 100644 tools/simulators/tsi/tsi-sim-mc/tests/test_uncles.py diff --git a/tools/simulators/tsi/tsi-sim-mc/.gitignore b/tools/simulators/tsi/tsi-sim-mc/.gitignore new file mode 100644 index 0000000..c4ee506 --- /dev/null +++ b/tools/simulators/tsi/tsi-sim-mc/.gitignore @@ -0,0 +1,18 @@ +# Generated artifacts +runs/ +results/ +figures/ +!results/.gitkeep +!figures/.gitkeep + +# Python +__pycache__/ +*.py[cod] +*.egg-info/ +.venv/ +venv/ +.pytest_cache/ +.mypy_cache/ +.ruff_cache/ +*.parquet +*.csv diff --git a/tools/simulators/tsi/tsi-sim-mc/Makefile b/tools/simulators/tsi/tsi-sim-mc/Makefile new file mode 100644 index 0000000..4521f9c --- /dev/null +++ b/tools/simulators/tsi/tsi-sim-mc/Makefile @@ -0,0 +1,57 @@ +.PHONY: install smoke sweep sweep-fullscale figures verify test test-slow test-all lint clean + +VENV ?= .venv +PY := $(VENV)/bin/python +PIP := $(VENV)/bin/pip + +# Pin BLAS/OpenMP to a single thread so joblib's N worker processes don't oversubscribe +# the cores (numpy in each worker would otherwise each spawn a full BLAS thread pool). +export OMP_NUM_THREADS := 1 +export OPENBLAS_NUM_THREADS := 1 +export MKL_NUM_THREADS := 1 +export NUMEXPR_NUM_THREADS := 1 + +$(VENV): + python3 -m venv $(VENV) + $(PIP) install --upgrade pip + +install: $(VENV) + $(PIP) install -e ".[dev]" + +# Every sweep writes results + figures into a fresh dated folder under runs/ so new +# runs never overwrite old ones (runs/_