Skip to content

PR-G: Formal Industrial Benchmark v2 measurement on the qualified CUDA host #57

Description

@telleroutlook

Purpose

Execute the formal Industrial Benchmark v2 measurement on the already-qualified controlled NVIDIA/CUDA host.

This issue creates measurement evidence only.

Publication, README editing, and final repository integration remain maintainer-owned.


Hard prerequisites

Maintainer decision (2026-09-25): the formal commit is PRE-FROZEN above (a70d4ac76fc73e1f1e1099c7884db9bfdd4802d3) so this handoff needs no further maintainer input on the normal path. The DO NOT START UNTIL #56 PASS gate below still applies unchanged — if #56 exposes a source problem, the standing firewall invalidates this freeze and the SHA will be re-issued.

BLOCKED BY:
- #58
- #56

Execution order is strict:

#58 CLOSED
→ new frozen measurement commit
→ #56 PASS
→ #57 may begin

The commit used by #57 MUST be the same source authority qualified by #56,
unless a new source change occurs.

If any source change occurs after #56 PASS:
#56 qualification is invalidated
→ a new commit must be frozen
→ #56 must be rerun
→ only then may #57 begin.

Do not begin until all are true:

  • Phase 2B.2 authority-repair issue is CLOSED.
  • CUDA host qualification issue is PASS.
  • The maintainer has frozen the exact formal measurement commit below.
  • The exact Ibex fixture is available.
  • No benchmark/protocol source changes are pending.

Formal commit:

FROZEN_FORMAL_MEASUREMENT_COMMIT:
a70d4ac76fc73e1f1e1099c7884db9bfdd4802d3

Host qualification issue:

#56

Authority firewall

During this formal run:

NO source edits
NO benchmark edits
NO dependency edits mid-run
NO parameter tuning after observing results
NO manual JSON editing
NO manual canonical-file copying
NO reuse of provisional numbers
NO best-of-N reporting

Any required source fix means:

STOP
→ new commit
→ new run identity
→ rerun host qualification
→ restart formal measurement from zero

Fixture authority

Use exactly:

Source:
SJTU-YONGFU-RESEARCH-GRP/PDB-Physical-Design-Database

Source commit:
9e1e3399b1b707f26fee853bce1ff91ab466ce24

GDS:
layout/sky130hd/ibex/ibex.gds

Layer:
66:44

Pixel:
1.0 nm/px

Record:

sha256sum "$GDS"

1. Verify exact checkout

cd OpenLithoHub

git checkout a70d4ac76fc73e1f1e1099c7884db9bfdd4802d3
git rev-parse HEAD
git status --porcelain

Required:

HEAD == frozen formal SHA
working tree == clean

2. Capture host/environment evidence

Before measurement:

mkdir -p measurement-logs

git rev-parse HEAD \
  | tee measurement-logs/git-head.txt

git status --porcelain \
  | tee measurement-logs/git-status-before.txt

sha256sum "$GDS" \
  | tee measurement-logs/fixture-sha256.txt

nvidia-smi -q \
  | tee measurement-logs/nvidia-smi-q.txt

pip freeze \
  | tee measurement-logs/pip-freeze.txt

Also record:

python - <<'PY' | tee measurement-logs/torch-environment.txt
import torch
print("torch:", torch.__version__)
print("torch CUDA:", torch.version.cuda)
print("CUDA available:", torch.cuda.is_available())
print("device count:", torch.cuda.device_count())
print("GPU:", torch.cuda.get_device_name(0))
print("cuDNN:", torch.backends.cudnn.version())
print("TF32 matmul:", torch.backends.cuda.matmul.allow_tf32)
print("TF32 cuDNN:", torch.backends.cudnn.allow_tf32)
PY

Operator logs are supporting context only. Harness-owned environment lock remains canonical.


3. Formal preflight

python scripts/preflight_industrial_v2.py \
  --gds "$GDS" \
  --device cuda:0 \
  | tee measurement-logs/preflight.txt

Required:

PREFLIGHT: PASS

Otherwise STOP.


4. Run the exact formal protocol

Run:

python benchmarks/industrial-v2/run_v2_benchmark.py \
  --tiers a,b,c \
  --gds "$GDS" \
  --device cuda:0 \
  --dtype fp32 \
  --repeats 5 \
  --warmup 2 \
  --batch 8 \
  --tile 1024 \
  --halo 64 \
  --layer 66:44 \
  --windows 4096,8192,16384,32768 \
  --hopkins-grid 1024 \
  --formal \
  2>&1 | tee measurement-logs/formal-run.txt

Do not alter these parameters after seeing results.


5. Required Tier A result

Every declared Tier A window must be present:

4096
8192
16384
32768

Each must satisfy exact indexed/reference semantic parity for:

  • candidate rows;
  • owned runs;
  • run IDs;
  • contributor object IDs;
  • window raster;
  • verification ownership metadata.

Required:

status = SUCCESS
correctness_witness_pass = true

Tier A performance may be weak. Weak speedup is not failure.


6. Required Tier B result

Every declared window must complete.

Required:

status = SUCCESS
correctness_witness_pass = true
timing_method = cuda_synchronized
repeat_count >= 5

Artifacts must contain:

CPU batch=1 witness
GPU batch=1
GPU batch=N
host peak RSS
GPU allocated peak
GPU reserved peak
fresh-process repeat statistics
median / p10 / p90 / n

A slow GPU result is valid evidence.

Do not rerun with different parameters to obtain a better number.


7. Required Tier C result

Required:

status = SUCCESS
correctness_witness_pass = true
finite_witness = true
cpu_deterministic_witness = true
timing_method = cuda_synchronized
repeat_count >= 5

Cold and warm timing must remain distinct.

The claim-bearing warm statistic must follow the protocol's repeat aggregation and must not use best-of-N selection.


8. Canonical family build

A successful formal run must report:

canonical_build_blockers = []

and the run workspace must contain the complete canonical family:

industrial-v2-index.json
industrial-v2-gpu-runtime.json
industrial-v2-hopkins.json
industrial-v2-run-config.json
industrial-v2-distribution-freeze.txt
manifest.json
SHA256SUMS.txt

Do not manually construct or edit any of these files.


9. Promote to a clean staging root

Use only the supported promotion command introduced by the pre-measurement repair issue.

Example:

python scripts/promote_industrial_v2_artifacts.py \
  --workspace "<RUN_WORKSPACE>" \
  --canonical-root "./industrial-v2-canonical-staging"

Required result:

exactly seven canonical members
no blockers

Never use manual cp as canonical promotion.


10. Verify the staged family

python scripts/verify_industrial_v2_artifacts.py \
  --canonical-root ./industrial-v2-canonical-staging

Required:

V2 VERIFIER: PASS

If verifier fails, STOP.

Do not edit artifacts to make verification pass.


11. Final integrity check

git rev-parse HEAD \
  | tee measurement-logs/git-head-after.txt

git status --porcelain \
  | tee measurement-logs/git-status-after.txt

Required:

same frozen commit
clean tracked tree

12. Prepare handoff bundle

Create two archives.

Canonical candidate family

tar -czf industrial-v2-canonical-candidate.tar.gz \
  industrial-v2-canonical-staging

Operator/context evidence

tar -czf industrial-v2-measurement-evidence.tar.gz \
  measurement-logs \
  <RUN_WORKSPACE>

Record:

sha256sum \
  industrial-v2-canonical-candidate.tar.gz \
  industrial-v2-measurement-evidence.tar.gz

Attach both archives or provide them to the maintainer through the agreed project channel.


Required completion report

Post a final comment containing:

Formal measurement commit:
Run identity:
Fixture SHA-256:
GPU:
Driver:
CUDA:
PyTorch:
cuDNN:

Tier A: PASS / FAIL
Tier B: PASS / FAIL
Tier C: PASS / FAIL
Canonical build blockers:
Verifier: PASS / FAIL

Canonical archive SHA-256:
Evidence archive SHA-256:

Do not summarize performance selectively.


Explicit non-goals

The GPU operator must NOT:

  • edit README;
  • edit README_zh;
  • create marketing claims;
  • decide which measurements become headlines;
  • compare with commercial tools;
  • weaken thresholds;
  • change mandatory tiers;
  • change repeat counts;
  • create a new benchmark protocol;
  • mutate Industrial Benchmark v1.1;
  • mutate P-054/B04 authority.

Those tasks remain maintainer-owned.


Success state

Only the following closes this issue:

FORMAL CUDA MEASUREMENT COMPLETE
TIER A/B/C SUCCESS
CANONICAL FAMILY BUILT
V2 VERIFIER PASS
EVIDENCE HANDED OFF

After that, maintainers may open/execute the separate Phase 2C publication closure.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions