Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions benchmark_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,15 @@ def benchmark_runner() -> None:
run_id=run_id, benchmark_run=benchmark_run, dataset_size=dataset_size
)

if _is_skipped(script_id):
logger.info(f"Experiment '{script_id}' marked skip=true in benchmarks.yml. Recording as skipped.")
skip_reason = _get_skip_reason(script_id)
if skip_reason is not None:
logger.info(f"Experiment '{script_id}' skipped in benchmarks.yml (reason={skip_reason.value}).")
_save_run_metadata(
query_id=script_id,
run_id=run_id,
achieved_iterations=0,
failed_iterations=0,
stop_reason=StopReason.FAILED,
stop_reason=skip_reason,
Comment thread
jathavaan marked this conversation as resolved.
ci_half_width_seconds=None,
ci_half_width_relative=None,
mean_elapsed_seconds=None,
Expand Down Expand Up @@ -139,13 +140,13 @@ def _strip_dataset_size_suffix(script_id: str) -> str:
return script_id


def _is_skipped(script_id: str) -> bool:
def _get_skip_reason(script_id: str) -> StopReason | None:
with open(Config.BENCHMARK_FILE) as f:
cfg = yaml.safe_load(f)
for exp in cfg.get("experiments", []):
if exp.get("id") == script_id and exp.get("skip"):
return True
return False
return StopReason.from_skip(exp["skip"])
return None


def _get_args() -> tuple[str, int, Optional[str], DatasetSize]:
Expand Down
56 changes: 48 additions & 8 deletions benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: small
runs: 30
related_script_ids:
- point-in-polygon-lookup-postgis-small
- point-in-polygon-lookup-local-small
Expand All @@ -25,6 +26,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: small
runs: 30
related_script_ids:
- point-in-polygon-lookup-duckdb-small
- point-in-polygon-lookup-local-small
Expand All @@ -34,6 +36,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: small
runs: 30
related_script_ids:
- point-in-polygon-lookup-duckdb-small
- point-in-polygon-lookup-postgis-small
Expand All @@ -43,6 +46,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: large
runs: 30
related_script_ids:
- point-in-polygon-lookup-postgis-large

Expand All @@ -51,6 +55,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: large
runs: 30
related_script_ids:
- point-in-polygon-lookup-duckdb-large

Expand All @@ -60,6 +65,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: small
runs: 30
related_script_ids:
- knn-search-postgis-small
- knn-search-local-small
Expand All @@ -69,6 +75,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: small
runs: 30
related_script_ids:
- knn-search-duckdb-small
- knn-search-local-small
Expand All @@ -78,6 +85,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: small
runs: 30
related_script_ids:
- knn-search-duckdb-small
- knn-search-postgis-small
Expand All @@ -87,6 +95,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: large
runs: 30
related_script_ids:
- knn-search-postgis-large

Expand All @@ -95,6 +104,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: large
runs: 30
related_script_ids:
- knn-search-duckdb-large

Expand All @@ -104,6 +114,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: small
runs: 30
related_script_ids:
- bbox-filtering-postgis-small
- bbox-filtering-local-small
Expand All @@ -113,6 +124,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: small
runs: 30
related_script_ids:
- bbox-filtering-duckdb-small
- bbox-filtering-local-small
Expand All @@ -122,6 +134,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: small
runs: 30
related_script_ids:
- bbox-filtering-duckdb-small
- bbox-filtering-postgis-small
Expand All @@ -131,6 +144,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: large
runs: 30
related_script_ids:
- bbox-filtering-postgis-large

Expand All @@ -139,6 +153,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: large
runs: 30
related_script_ids:
- bbox-filtering-duckdb-large

Expand All @@ -155,6 +170,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: small
runs: 3
related_script_ids:
- national-scale-spatial-join-databricks-broadcast-8-nodes-small
- national-scale-spatial-join-databricks-partitioned-8-nodes-small
Expand All @@ -165,6 +181,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: small
runs: 3
related_script_ids:
- national-scale-spatial-join-databricks-broadcast-8-nodes-small
- national-scale-spatial-join-databricks-partitioned-8-nodes-small
Expand All @@ -175,6 +192,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: medium
runs: 3
related_script_ids:
- national-scale-spatial-join-databricks-broadcast-8-nodes-medium
- national-scale-spatial-join-databricks-partitioned-8-nodes-medium
Expand All @@ -185,6 +203,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: medium
runs: 3
related_script_ids:
- national-scale-spatial-join-databricks-broadcast-8-nodes-medium
- national-scale-spatial-join-databricks-partitioned-8-nodes-medium
Expand All @@ -195,6 +214,8 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: large
runs: 3
skip: timeout # exceeds 60-min per-iteration threshold; existing data from run 2026-05-24-HBJYYT sufficient
related_script_ids:
- national-scale-spatial-join-postgis-large

Expand All @@ -203,7 +224,8 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: large
skip: true # OOM on Azure PostgreSQL Flex Server at large scale
runs: 3
skip: failed # OOM on Azure PostgreSQL Flex Server at large scale
related_script_ids:
- national-scale-spatial-join-duckdb-large

Expand All @@ -213,6 +235,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: medium
runs: 3
related_script_ids:
- national-scale-spatial-join-databricks-partitioned-2-nodes-medium

Expand All @@ -221,6 +244,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: large
runs: 3
related_script_ids:
- national-scale-spatial-join-databricks-broadcast-4-nodes-large
- national-scale-spatial-join-databricks-broadcast-16-nodes-large
Expand All @@ -230,6 +254,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: small
runs: 3
related_script_ids:
- national-scale-spatial-join-databricks-partitioned-4-nodes-small

Expand All @@ -238,6 +263,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: medium
runs: 3
related_script_ids:
- national-scale-spatial-join-databricks-partitioned-4-nodes-medium

Expand All @@ -246,6 +272,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: large
runs: 3
related_script_ids:
- national-scale-spatial-join-databricks-broadcast-2-nodes-large
- national-scale-spatial-join-databricks-broadcast-16-nodes-large
Expand All @@ -255,6 +282,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: small
runs: 3
related_script_ids:
- national-scale-spatial-join-databricks-partitioned-8-nodes-small
- national-scale-spatial-join-duckdb-small
Expand All @@ -265,6 +293,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: medium
runs: 3
related_script_ids:
- national-scale-spatial-join-databricks-partitioned-8-nodes-medium
- national-scale-spatial-join-duckdb-medium
Expand All @@ -275,6 +304,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: large
runs: 3
related_script_ids:
- national-scale-spatial-join-databricks-partitioned-8-nodes-large

Expand All @@ -283,6 +313,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: large
runs: 3
related_script_ids:
- national-scale-spatial-join-databricks-broadcast-2-nodes-large
- national-scale-spatial-join-databricks-broadcast-4-nodes-large
Expand All @@ -293,7 +324,8 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: medium
skip: true # executor OOM: RangeJoin spatial index exceeds Standard_D4s_v3 memory at medium scale
runs: 3
skip: failed # executor OOM: RangeJoin spatial index exceeds Standard_D4s_v3 memory at medium scale
related_script_ids:
- national-scale-spatial-join-databricks-broadcast-2-nodes-medium

Expand All @@ -302,7 +334,8 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: large
skip: true # executor OOM: RangeJoin spatial index exceeds Standard_D4s_v3 memory at large scale
runs: 3
skip: failed # executor OOM: RangeJoin spatial index exceeds Standard_D4s_v3 memory at large scale
related_script_ids:
- national-scale-spatial-join-databricks-partitioned-4-nodes-large
- national-scale-spatial-join-databricks-partitioned-16-nodes-large
Expand All @@ -312,6 +345,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: small
runs: 3
related_script_ids:
- national-scale-spatial-join-databricks-broadcast-4-nodes-small

Expand All @@ -320,7 +354,8 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: medium
skip: true # executor OOM: RangeJoin spatial index exceeds Standard_D4s_v3 memory at medium scale
runs: 3
skip: failed # executor OOM: RangeJoin spatial index exceeds Standard_D4s_v3 memory at medium scale
related_script_ids:
- national-scale-spatial-join-databricks-broadcast-4-nodes-medium

Expand All @@ -329,7 +364,8 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: large
skip: true # executor OOM: RangeJoin spatial index exceeds Standard_D4s_v3 memory at large scale
runs: 3
skip: failed # executor OOM: RangeJoin spatial index exceeds Standard_D4s_v3 memory at large scale
related_script_ids:
- national-scale-spatial-join-databricks-partitioned-2-nodes-large
- national-scale-spatial-join-databricks-partitioned-16-nodes-large
Expand All @@ -339,6 +375,7 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: small
runs: 3
related_script_ids:
- national-scale-spatial-join-databricks-broadcast-8-nodes-small
- national-scale-spatial-join-duckdb-small
Expand All @@ -349,7 +386,8 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: medium
skip: true # executor OOM: RangeJoin spatial index exceeds Standard_D4s_v3 memory at medium scale
runs: 3
skip: failed # executor OOM: RangeJoin spatial index exceeds Standard_D4s_v3 memory at medium scale
related_script_ids:
- national-scale-spatial-join-databricks-broadcast-8-nodes-medium
- national-scale-spatial-join-duckdb-medium
Expand All @@ -360,7 +398,8 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: large
skip: true # executor OOM: RangeJoin spatial index exceeds Standard_D4s_v3 memory at large scale
runs: 3
skip: failed # executor OOM: RangeJoin spatial index exceeds Standard_D4s_v3 memory at large scale
related_script_ids:
- national-scale-spatial-join-databricks-broadcast-8-nodes-large

Expand All @@ -369,7 +408,8 @@ experiments:
cpu: 4
memory_gb: 16
dataset_size: large
skip: true # executor OOM: RangeJoin spatial index exceeds Standard_D4s_v3 memory at large scale
runs: 3
skip: failed # executor OOM: RangeJoin spatial index exceeds Standard_D4s_v3 memory at large scale
related_script_ids:
- national-scale-spatial-join-databricks-partitioned-2-nodes-large
- national-scale-spatial-join-databricks-partitioned-4-nodes-large
Expand Down
11 changes: 11 additions & 0 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,17 @@ def _run_benchmarks(
if experiment_id in completed_experiments:
continue

experiment_runs = experiment.get("runs", Config.BENCHMARK_RUNS)
if benchmark_run > experiment_runs:
completed_experiments.append(experiment_id)
for rid in experiment.get("related_script_ids", []):
completed_experiments.append(str(rid))
logger.info(
"Skipping '%s' — benchmark run %s exceeds experiment runs limit %s.",
experiment_id, benchmark_run, experiment_runs,
)
Comment thread
jathavaan marked this conversation as resolved.
continue

current_batch += 1

related_experiment_ids = experiment["related_script_ids"]
Expand Down
Loading
Loading