Sequential Quantum Gate Decomposer  v1.9.6
Powerful decomposition of general unitarias into one- and two-qubit gates gates
structured_fused_runtime_validation.py
Go to the documentation of this file.
1 #!/usr/bin/env python3
2 """Structured fused runtime validation: representative high-qubit fused paths.
3 
4 Finds one representative 8-qubit and one representative 10-qubit structured
5 workload that execute through the real fused unitary-island runtime path.
6 
7 Run with:
8  python benchmarks/density_matrix/partitioned_runtime/structured_fused_runtime_validation.py
9 """
10 
11 from __future__ import annotations
12 
13 import argparse
14 import json
15 import sys
16 from pathlib import Path
17 
18 REPO_ROOT = Path(__file__).resolve().parents[3]
19 if str(REPO_ROOT) not in sys.path:
20  sys.path.insert(0, str(REPO_ROOT))
21 
22 from benchmarks.density_matrix.partitioned_runtime.common import (
23  PHASE3_RUNTIME_DENSITY_TOL,
24  execute_fused_with_reference,
25 )
26 from benchmarks.density_matrix.partitioned_runtime.fusion_case_selection import (
27  iter_fusion_structured_cases,
28 )
29 from benchmarks.density_matrix.planner_surface.common import build_software_metadata
30 from squander.partitioning.noisy_runtime import PHASE3_RUNTIME_PATH_FUSED_UNITARY_ISLANDS
31 
32 SUITE_NAME = "phase3_partitioned_runtime_structured_fused_runtime"
33 ARTIFACT_FILENAME = "structured_fused_runtime_bundle.json"
34 DEFAULT_OUTPUT_DIR = (
35  REPO_ROOT
36  / "benchmarks"
37  / "density_matrix"
38  / "artifacts"
39  / "partitioned_runtime"
40  / "structured_fused_runtime"
41 )
42 ARTIFACT_CORE_FIELDS = (
43  "suite_name",
44  "status",
45  "software",
46  "summary",
47  "cases",
48 )
49 
50 
51 def _fused_case(metadata: dict, descriptor_set, parameters) -> dict:
52  runtime_result, _, density_metrics = execute_fused_with_reference(
53  descriptor_set, parameters
54  )
55  payload = runtime_result.to_dict(include_density_matrix=False)
56  return {
57  "case_name": metadata["workload_id"],
58  "case_kind": metadata["case_kind"],
59  "family_name": metadata["family_name"],
60  "qbit_num": metadata["qbit_num"],
61  "noise_pattern": metadata["noise_pattern"],
62  "runtime_path": payload["runtime_path"],
63  "partition_count": payload["summary"]["partition_count"],
64  "fused_region_count": payload["summary"]["fused_region_count"],
65  "supported_unfused_region_count": payload["summary"][
66  "supported_unfused_region_count"
67  ],
68  "deferred_region_count": payload["summary"]["deferred_region_count"],
69  "fused_gate_count": payload["summary"]["fused_gate_count"],
70  "actual_fused_execution": payload["summary"]["actual_fused_execution"],
71  "frobenius_norm_diff": density_metrics["frobenius_norm_diff"],
72  "max_abs_diff": density_metrics["max_abs_diff"],
73  "structured_fused_runtime_pass": (
74  payload["runtime_path"] == PHASE3_RUNTIME_PATH_FUSED_UNITARY_ISLANDS
75  and payload["summary"]["actual_fused_execution"] is True
76  and payload["summary"]["fused_region_count"] > 0
77  and density_metrics["frobenius_norm_diff"] <= PHASE3_RUNTIME_DENSITY_TOL
78  and density_metrics["max_abs_diff"] <= PHASE3_RUNTIME_DENSITY_TOL
79  ),
80  "metadata": dict(metadata),
81  }
82 
83 
84 def build_cases() -> list[dict]:
85  selected_by_qubits: dict[int, dict] = {}
86  for metadata, descriptor_set, parameters in iter_fusion_structured_cases():
87  if metadata["qbit_num"] in selected_by_qubits:
88  continue
89  case = _fused_case(metadata, descriptor_set, parameters)
90  if case["structured_fused_runtime_pass"]:
91  selected_by_qubits[metadata["qbit_num"]] = case
92  if set(selected_by_qubits) == {8, 10}:
93  break
94  missing = {8, 10} - set(selected_by_qubits)
95  if missing:
96  raise RuntimeError(
97  "Missing representative structured fused cases for qubits: {}".format(
98  sorted(missing)
99  )
100  )
101  return [selected_by_qubits[8], selected_by_qubits[10]]
102 
103 
104 def build_artifact_bundle(cases: list[dict]) -> dict:
105  fused_passes = sum(case["structured_fused_runtime_pass"] for case in cases)
106  bundle = {
107  "suite_name": SUITE_NAME,
108  "status": "pass" if fused_passes == len(cases) else "fail",
109  "software": build_software_metadata(),
110  "summary": {
111  "total_cases": len(cases),
112  "structured_fused_runtime_passes": fused_passes,
113  "required_qubits": [8, 10],
114  "fused_regions": sum(case["fused_region_count"] for case in cases),
115  "supported_unfused_regions": sum(
116  case["supported_unfused_region_count"] for case in cases
117  ),
118  "deferred_regions": sum(case["deferred_region_count"] for case in cases),
119  },
120  "cases": cases,
121  }
122  missing = [field for field in ARTIFACT_CORE_FIELDS if field not in bundle]
123  if missing:
124  raise ValueError(
125  "Structured fused runtime bundle missing required fields: {}".format(
126  ", ".join(missing)
127  )
128  )
129  return bundle
130 
131 
132 def write_artifact_bundle(bundle: dict, output_dir: Path = DEFAULT_OUTPUT_DIR) -> Path:
133  output_dir.mkdir(parents=True, exist_ok=True)
134  output_path = output_dir / ARTIFACT_FILENAME
135  output_path.write_text(json.dumps(bundle, indent=2, sort_keys=True) + "\n")
136  return output_path
137 
138 
139 def main(argv: list[str] | None = None) -> int:
140  parser = argparse.ArgumentParser(description=__doc__)
141  parser.add_argument(
142  "--output-dir",
143  type=Path,
144  default=DEFAULT_OUTPUT_DIR,
145  help="Directory to write the structured fused runtime bundle into.",
146  )
147  parser.add_argument(
148  "--quiet",
149  action="store_true",
150  help="Suppress per-case console output.",
151  )
152  args = parser.parse_args(argv)
153 
154  cases = build_cases()
155  bundle = build_artifact_bundle(cases)
156  output_path = write_artifact_bundle(bundle, output_dir=args.output_dir)
157 
158  if not args.quiet:
159  for case in cases:
160  print(
161  "{case_name}: fused_regions={fused_region_count}, dRho={frobenius_norm_diff:.3e}, pass={structured_fused_runtime_pass}".format(
162  **case
163  )
164  )
165  print("Wrote {}".format(output_path))
166 
167  return 0 if bundle["status"] == "pass" else 1
168 
169 
170 if __name__ == "__main__":
171  raise SystemExit(main())
def build_software_metadata()