Sequential Quantum Gate Decomposer  v1.9.6
Powerful decomposition of general unitarias into one- and two-qubit gates gates
mandatory_workload_runtime_validation.py
Go to the documentation of this file.
1 #!/usr/bin/env python3
2 """Mandatory workload runtime validation for the shared partitioned runtime surface.
3 
4 Executes the required microcases plus one structured case per mandatory family
5 and size through the same partitioned runtime entry used by the continuity
6 anchor workloads.
7 
8 Run with:
9  python benchmarks/density_matrix/partitioned_runtime/mandatory_workload_runtime_validation.py
10 """
11 
12 from __future__ import annotations
13 
14 import argparse
15 import json
16 import sys
17 from pathlib import Path
18 
19 REPO_ROOT = Path(__file__).resolve().parents[3]
20 if str(REPO_ROOT) not in sys.path:
21  sys.path.insert(0, str(REPO_ROOT))
22 
23 from benchmarks.density_matrix.partitioned_runtime.common import (
24  PHASE3_RUNTIME_DENSITY_TOL,
25  build_initial_parameters,
26  execute_partitioned_with_reference,
27 )
28 from benchmarks.density_matrix.planner_surface.common import (
29  build_phase2_continuity_vqe,
30  build_software_metadata,
31 )
32 from benchmarks.density_matrix.planner_surface.workloads import (
33  STRUCTURED_FAMILY_NAMES,
34  STRUCTURED_QUBITS,
35  build_structured_descriptor_set,
36  iter_microcase_descriptor_sets,
37 )
38 from squander.partitioning.noisy_planner import build_phase3_continuity_partition_descriptor_set
39 from squander.partitioning.noisy_runtime import PHASE3_RUNTIME_PATH_BASELINE
40 
41 SUITE_NAME = "phase3_partitioned_runtime_workload_runtime"
42 ARTIFACT_FILENAME = "mandatory_workload_runtime_bundle.json"
43 DEFAULT_OUTPUT_DIR = (
44  REPO_ROOT
45  / "benchmarks"
46  / "density_matrix"
47  / "artifacts"
48  / "partitioned_runtime"
49  / "mandatory_workload"
50 )
51 ARTIFACT_CORE_FIELDS = (
52  "suite_name",
53  "status",
54  "software",
55  "summary",
56  "cases",
57 )
58 STRUCTURED_VALIDATION_NOISE_PATTERN = "sparse"
59 
60 
61 def _runtime_case(
62  *,
63  case_name: str,
64  case_kind: str,
65  descriptor_set,
66  metadata: dict | None = None,
67 ) -> dict:
68  parameters = build_initial_parameters(descriptor_set.parameter_count)
69  runtime_result, _, density_metrics = execute_partitioned_with_reference(
70  descriptor_set, parameters
71  )
72  runtime_payload = runtime_result.to_dict(include_density_matrix=False)
73  case = {
74  "case_name": case_name,
75  "case_kind": case_kind,
76  "status": "pass"
77  if density_metrics["frobenius_norm_diff"] <= PHASE3_RUNTIME_DENSITY_TOL
78  and density_metrics["max_abs_diff"] <= PHASE3_RUNTIME_DENSITY_TOL
79  and runtime_result.rho_is_valid
80  else "fail",
81  "requested_mode": runtime_payload["requested_mode"],
82  "source_type": runtime_payload["source_type"],
83  "workload_id": runtime_payload["workload_id"],
84  "qbit_num": runtime_payload["qbit_num"],
85  "parameter_count": runtime_payload["parameter_count"],
86  "runtime_path": runtime_payload["runtime_path"],
87  "partition_count": runtime_payload["summary"]["partition_count"],
88  "descriptor_member_count": runtime_payload["summary"]["descriptor_member_count"],
89  "gate_count": runtime_payload["summary"]["gate_count"],
90  "noise_count": runtime_payload["summary"]["noise_count"],
91  "max_partition_span": runtime_payload["summary"]["max_partition_span"],
92  "partition_member_counts": runtime_payload["summary"]["partition_member_counts"],
93  "exact_output_present": runtime_payload["summary"]["exact_output_present"],
94  "frobenius_norm_diff": density_metrics["frobenius_norm_diff"],
95  "max_abs_diff": density_metrics["max_abs_diff"],
96  "shared_runtime_pass": (
97  runtime_payload["runtime_path"] == PHASE3_RUNTIME_PATH_BASELINE
98  and runtime_payload["summary"]["partition_count"] > 0
99  and runtime_payload["summary"]["exact_output_present"] is True
100  and density_metrics["frobenius_norm_diff"] <= PHASE3_RUNTIME_DENSITY_TOL
101  and density_metrics["max_abs_diff"] <= PHASE3_RUNTIME_DENSITY_TOL
102  ),
103  "metadata": dict(metadata) if metadata is not None else {},
104  }
105  return case
106 
107 
108 def build_cases() -> list[dict]:
109  continuity_vqe, _, _ = build_phase2_continuity_vqe(4)
110  cases = [
112  case_name="phase2_xxz_hea_q4_continuity",
113  case_kind="continuity",
114  descriptor_set=build_phase3_continuity_partition_descriptor_set(continuity_vqe),
115  )
116  ]
117  for metadata, descriptor_set in iter_microcase_descriptor_sets():
118  cases.append(
120  case_name=metadata["case_name"],
121  case_kind="microcase",
122  descriptor_set=descriptor_set,
123  metadata=metadata,
124  )
125  )
126  for family_name in STRUCTURED_FAMILY_NAMES:
127  for qbit_num in STRUCTURED_QUBITS:
128  metadata = {
129  "family_name": family_name,
130  "qbit_num": qbit_num,
131  "noise_pattern": STRUCTURED_VALIDATION_NOISE_PATTERN,
132  "workload_id": "{}_q{}_{}_seed20260318".format(
133  family_name, qbit_num, STRUCTURED_VALIDATION_NOISE_PATTERN
134  ),
135  }
136  cases.append(
138  case_name=metadata["workload_id"],
139  case_kind="structured_family",
140  descriptor_set=build_structured_descriptor_set(
141  family_name,
142  qbit_num=qbit_num,
143  noise_pattern=STRUCTURED_VALIDATION_NOISE_PATTERN,
144  ),
145  metadata=metadata,
146  )
147  )
148  return cases
149 
150 
151 def build_artifact_bundle(cases: list[dict]) -> dict:
152  shared_runtime_passes = sum(case["shared_runtime_pass"] for case in cases)
153  passed_cases = sum(case["status"] == "pass" for case in cases)
154  bundle = {
155  "suite_name": SUITE_NAME,
156  "status": "pass"
157  if shared_runtime_passes == len(cases) and passed_cases == len(cases)
158  else "fail",
159  "software": build_software_metadata(),
160  "summary": {
161  "total_cases": len(cases),
162  "passed_cases": passed_cases,
163  "shared_runtime_passes": shared_runtime_passes,
164  "continuity_cases": sum(case["case_kind"] == "continuity" for case in cases),
165  "microcases": sum(case["case_kind"] == "microcase" for case in cases),
166  "structured_cases": sum(
167  case["case_kind"] == "structured_family" for case in cases
168  ),
169  },
170  "cases": cases,
171  }
172  missing = [field for field in ARTIFACT_CORE_FIELDS if field not in bundle]
173  if missing:
174  raise ValueError(
175  "Mandatory runtime bundle missing required fields: {}".format(
176  ", ".join(missing)
177  )
178  )
179  return bundle
180 
181 
182 def write_artifact_bundle(bundle: dict, output_dir: Path = DEFAULT_OUTPUT_DIR) -> Path:
183  output_dir.mkdir(parents=True, exist_ok=True)
184  output_path = output_dir / ARTIFACT_FILENAME
185  output_path.write_text(json.dumps(bundle, indent=2, sort_keys=True) + "\n")
186  return output_path
187 
188 
189 def main(argv: list[str] | None = None) -> int:
190  parser = argparse.ArgumentParser(description=__doc__)
191  parser.add_argument(
192  "--output-dir",
193  type=Path,
194  default=DEFAULT_OUTPUT_DIR,
195  help="Directory to write the mandatory workload runtime bundle into.",
196  )
197  parser.add_argument(
198  "--quiet",
199  action="store_true",
200  help="Suppress per-case console output.",
201  )
202  args = parser.parse_args(argv)
203 
204  cases = build_cases()
205  bundle = build_artifact_bundle(cases)
206  output_path = write_artifact_bundle(bundle, output_dir=args.output_dir)
207 
208  if not args.quiet:
209  for case in cases:
210  print(
211  "{case_name}: q={qbit_num}, partitions={partition_count}, dRho={frobenius_norm_diff:.3e}, pass={shared_runtime_pass}".format(
212  **case
213  )
214  )
215  print("Wrote {}".format(output_path))
216 
217  return 0 if bundle["status"] == "pass" else 1
218 
219 
220 if __name__ == "__main__":
221  raise SystemExit(main())
def build_phase2_continuity_vqe
def build_phase3_continuity_partition_descriptor_set
def build_software_metadata()
def execute_partitioned_with_reference