2 """Fusion classification validation: fused, supported-unfused, and deferred labels. 4 Checks that fused, supported-but-unfused, and deferred or unsupported candidate 5 records remain explicit with no silent fallback. 8 python benchmarks/density_matrix/partitioned_runtime/fused_classification_validation.py 11 from __future__
import annotations
16 from pathlib
import Path
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))
22 from benchmarks.density_matrix.planner_surface.common
import build_software_metadata
23 from benchmarks.density_matrix.partitioned_runtime.fusion_case_selection
import (
24 iter_fusion_microcase_cases,
25 iter_fusion_structured_cases,
27 from squander.partitioning.noisy_runtime
import (
28 PHASE3_FUSION_CLASS_DEFERRED,
29 PHASE3_FUSION_CLASS_FUSED,
30 PHASE3_FUSION_CLASS_SUPPORTED_UNFUSED,
31 PHASE3_RUNTIME_PATH_BASELINE,
32 PHASE3_RUNTIME_PATH_FUSED_UNITARY_ISLANDS,
33 execute_partitioned_density_fused,
36 SUITE_NAME =
"phase3_partitioned_runtime_fused_classification" 37 ARTIFACT_FILENAME =
"classification_bundle.json" 38 DEFAULT_OUTPUT_DIR = (
43 /
"partitioned_runtime" 44 /
"fused_classification" 46 ARTIFACT_CORE_FIELDS = (
57 payload = runtime_result.to_dict(include_density_matrix=
False)
58 classifications = [region[
"classification"]
for region
in payload[
"fused_regions"]]
60 "case_name": metadata[
"workload_id"],
61 "case_kind": metadata[
"case_kind"],
62 "runtime_path": payload[
"runtime_path"],
63 "actual_fused_execution": payload[
"summary"][
"actual_fused_execution"],
64 "classifications": classifications,
65 "classification_counts": {
66 PHASE3_FUSION_CLASS_FUSED: classifications.count(PHASE3_FUSION_CLASS_FUSED),
67 PHASE3_FUSION_CLASS_SUPPORTED_UNFUSED: classifications.count(
68 PHASE3_FUSION_CLASS_SUPPORTED_UNFUSED
70 PHASE3_FUSION_CLASS_DEFERRED: classifications.count(
71 PHASE3_FUSION_CLASS_DEFERRED
74 "classification_pass": (
76 payload[
"summary"][
"actual_fused_execution"]
is True 77 and payload[
"runtime_path"] == PHASE3_RUNTIME_PATH_FUSED_UNITARY_ISLANDS
80 payload[
"summary"][
"actual_fused_execution"]
is False 81 and payload[
"runtime_path"] == PHASE3_RUNTIME_PATH_BASELINE
84 "metadata": dict(metadata),
89 cases: list[dict] = []
92 for metadata, descriptor_set, parameters
in iterator:
95 observed.update(case[
"classifications"])
97 PHASE3_FUSION_CLASS_FUSED,
98 PHASE3_FUSION_CLASS_SUPPORTED_UNFUSED,
99 PHASE3_FUSION_CLASS_DEFERRED,
103 "Could not observe all required fusion classifications in sampled workloads" 108 classification_passes = sum(case[
"classification_pass"]
for case
in cases)
112 for classification
in case[
"classifications"]
115 "suite_name": SUITE_NAME,
117 if classification_passes == len(cases)
120 PHASE3_FUSION_CLASS_FUSED,
121 PHASE3_FUSION_CLASS_SUPPORTED_UNFUSED,
122 PHASE3_FUSION_CLASS_DEFERRED,
127 "total_cases": len(cases),
128 "classification_passes": classification_passes,
129 "observed_classifications": sorted(observed),
130 "fused_cases": sum(case[
"actual_fused_execution"]
for case
in cases),
134 missing = [field
for field
in ARTIFACT_CORE_FIELDS
if field
not in bundle]
137 "Fusion classification bundle missing required fields: {}".format(
145 output_dir.mkdir(parents=
True, exist_ok=
True)
146 output_path = output_dir / ARTIFACT_FILENAME
147 output_path.write_text(json.dumps(bundle, indent=2, sort_keys=
True) +
"\n")
151 def main(argv: list[str] |
None =
None) -> int:
152 parser = argparse.ArgumentParser(description=__doc__)
156 default=DEFAULT_OUTPUT_DIR,
157 help=
"Directory to write the fusion classification bundle into.",
162 help=
"Suppress per-case console output.",
164 args = parser.parse_args(argv)
173 "{case_name}: path={runtime_path}, classifications={classifications}".format(
177 print(
"Wrote {}".format(output_path))
179 return 0
if bundle[
"status"] ==
"pass" else 1
182 if __name__ ==
"__main__":
183 raise SystemExit(
main())
def build_artifact_bundle
def write_artifact_bundle
def execute_partitioned_density_fused
def build_software_metadata()
def iter_fusion_microcase_cases()
def iter_fusion_structured_cases()