Sequential Quantum Gate Decomposer  v1.9.6
Powerful decomposition of general unitarias into one- and two-qubit gates gates
evidence_core.py
Go to the documentation of this file.
1 """Shared evidence helpers for correctness and performance pipelines."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from benchmarks.density_matrix.partitioned_runtime.common import (
8  PHASE3_RUNTIME_DENSITY_TOL,
9  PHASE3_RUNTIME_ENERGY_TOL,
10  build_density_comparison_metrics,
11  density_energy,
12 )
13 from benchmarks.density_matrix.planner_calibration.calibration_records import (
14  execute_qiskit_density_reference,
15 )
16 
17 # Fields copied from correctness positive records into performance benchmark records
18 # (via reference index or fused fallback). Must match build_runtime_correctness_bridge_fields keys.
19 RUNTIME_CORRECTNESS_BRIDGE_FIELD_NAMES: tuple[str, ...] = (
20  "runtime_path",
21  "supported_runtime_case",
22  "exact_output_present",
23  "runtime_ms",
24  "peak_rss_kb",
25  "peak_rss_mb",
26  "partition_count",
27  "descriptor_member_count",
28  "gate_count",
29  "noise_count",
30  "max_partition_span",
31  "partition_member_counts",
32  "remapped_partition_count",
33  "parameter_routing_segment_count",
34  "fused_region_count",
35  "supported_unfused_region_count",
36  "deferred_region_count",
37  "fused_gate_count",
38  "supported_unfused_gate_count",
39  "actual_fused_execution",
40  "frobenius_norm_diff",
41  "max_abs_diff",
42  "internal_reference_pass",
43  "trace_deviation",
44  "rho_is_valid",
45  "rho_is_valid_tol",
46  "output_integrity_pass",
47  "continuity_energy_required",
48  "continuity_energy_error",
49  "continuity_energy_pass",
50  "external_frobenius_norm_diff",
51  "external_max_abs_diff",
52  "external_reference_pass",
53 )
54 
55 
56 def counted_supported_case(record: dict[str, Any]) -> bool:
57  if not record["supported_runtime_case"]:
58  return False
59  if not record["internal_reference_pass"]:
60  return False
61  if not record["output_integrity_pass"]:
62  return False
63  if record["continuity_energy_required"] and not record["continuity_energy_pass"]:
64  return False
65  if record["external_reference_required"] and not record["external_reference_pass"]:
66  return False
67  return True
68 
69 
71  case_context,
72  runtime_result,
73  reference_density,
74  density_metrics: dict[str, Any],
75  *,
76  external_reference_required: bool,
77  runtime_payload: dict[str, Any] | None = None,
78 ) -> dict[str, Any]:
79  """Materialize runtime summary, density comparison, and integrity fields shared by evidence records."""
80  if runtime_payload is None:
81  runtime_payload = runtime_result.to_dict(include_density_matrix=False)
82 
83  internal_reference_pass = (
84  density_metrics["frobenius_norm_diff"] <= PHASE3_RUNTIME_DENSITY_TOL
85  and density_metrics["max_abs_diff"] <= PHASE3_RUNTIME_DENSITY_TOL
86  and runtime_result.trace_deviation <= PHASE3_RUNTIME_DENSITY_TOL
87  and runtime_result.rho_is_valid
88  )
89  output_integrity_pass = (
90  runtime_result.trace_deviation <= PHASE3_RUNTIME_DENSITY_TOL
91  and runtime_result.rho_is_valid
92  )
93 
94  continuity_energy_required = case_context.hamiltonian is not None
95  continuity_energy_error = None
96  continuity_energy_pass = True
97  if continuity_energy_required:
98  runtime_energy_real, _ = density_energy(
99  case_context.hamiltonian, runtime_result.density_matrix_numpy()
100  )
101  reference_energy_real, _ = density_energy(
102  case_context.hamiltonian, reference_density.to_numpy()
103  )
104  continuity_energy_error = float(abs(runtime_energy_real - reference_energy_real))
105  continuity_energy_pass = continuity_energy_error <= PHASE3_RUNTIME_ENERGY_TOL
106 
107  external_metrics = None
108  external_reference_pass = True
109  if external_reference_required:
110  aer_density = execute_qiskit_density_reference(
111  case_context.descriptor_set, case_context.parameters
112  )
113  external_metrics = build_density_comparison_metrics(
114  runtime_result.density_matrix, aer_density
115  )
116  external_reference_pass = (
117  external_metrics["frobenius_norm_diff"] <= PHASE3_RUNTIME_DENSITY_TOL
118  and external_metrics["max_abs_diff"] <= PHASE3_RUNTIME_DENSITY_TOL
119  )
120 
121  fields: dict[str, Any] = {
122  "runtime_path": runtime_payload["runtime_path"],
123  "supported_runtime_case": runtime_payload["summary"]["exact_output_present"],
124  "exact_output_present": runtime_payload["summary"]["exact_output_present"],
125  "runtime_ms": runtime_payload["summary"]["runtime_ms"],
126  "peak_rss_kb": runtime_payload["summary"]["peak_rss_kb"],
127  "peak_rss_mb": float(runtime_payload["summary"]["peak_rss_kb"]) / 1024.0,
128  "partition_count": runtime_payload["summary"]["partition_count"],
129  "descriptor_member_count": runtime_payload["summary"]["descriptor_member_count"],
130  "gate_count": runtime_payload["summary"]["gate_count"],
131  "noise_count": runtime_payload["summary"]["noise_count"],
132  "max_partition_span": runtime_payload["summary"]["max_partition_span"],
133  "partition_member_counts": runtime_payload["summary"]["partition_member_counts"],
134  "remapped_partition_count": runtime_payload["summary"]["remapped_partition_count"],
135  "parameter_routing_segment_count": runtime_payload["summary"][
136  "parameter_routing_segment_count"
137  ],
138  "fused_region_count": runtime_payload["summary"]["fused_region_count"],
139  "supported_unfused_region_count": runtime_payload["summary"][
140  "supported_unfused_region_count"
141  ],
142  "deferred_region_count": runtime_payload["summary"]["deferred_region_count"],
143  "fused_gate_count": runtime_payload["summary"]["fused_gate_count"],
144  "supported_unfused_gate_count": runtime_payload["summary"][
145  "supported_unfused_gate_count"
146  ],
147  "actual_fused_execution": runtime_payload["summary"]["actual_fused_execution"],
148  "frobenius_norm_diff": density_metrics["frobenius_norm_diff"],
149  "max_abs_diff": density_metrics["max_abs_diff"],
150  "internal_reference_pass": internal_reference_pass,
151  "trace_deviation": runtime_result.trace_deviation,
152  "rho_is_valid": runtime_result.rho_is_valid,
153  "rho_is_valid_tol": runtime_payload["summary"]["rho_is_valid_tol"],
154  "output_integrity_pass": output_integrity_pass,
155  "continuity_energy_required": continuity_energy_required,
156  "continuity_energy_error": continuity_energy_error,
157  "continuity_energy_pass": continuity_energy_pass,
158  "external_frobenius_norm_diff": (
159  None if external_metrics is None else external_metrics["frobenius_norm_diff"]
160  ),
161  "external_max_abs_diff": (
162  None if external_metrics is None else external_metrics["max_abs_diff"]
163  ),
164  "external_reference_pass": external_reference_pass,
165  }
166  if set(fields) != set(RUNTIME_CORRECTNESS_BRIDGE_FIELD_NAMES):
167  missing = set(RUNTIME_CORRECTNESS_BRIDGE_FIELD_NAMES) - set(fields)
168  extra = set(fields) - set(RUNTIME_CORRECTNESS_BRIDGE_FIELD_NAMES)
169  raise AssertionError(f"bridge field keys mismatch: missing={missing!r} extra={extra!r}")
170  return fields
def build_density_comparison_metrics
def build_runtime_correctness_bridge_fields
def counted_supported_case