Repository navigation
Mirror omega 62d1d0d so the drift gate is green (Refs #193) - #194
Conversation
Omega-mv #492 and #936 moved the warp simulators, the codegen header, the IMAD.HI Rc host test, and the offline DAG evaluator. Those files are the 62d1d0d bytes. The Makefile takes both new blocks. DS_SHA_SRC is src/sha256.c because this tree has no src/omega_om_units.c. The baseline blobs are that commit's, so the gate accepts the Makefile lines this build still has to keep. hello_gpu --sim accounts the vecadd itself. The mirrored warp simulator no longer stores the lane, the address, or the byte counts that report used. Refs #193 — Grokbot Co-authored-by: Drake Stapleton <[email protected]>
drakestapleton
left a comment
There was a problem hiding this comment.
Review at 458a448: ready-to-merge, and it should merge before #192.
1. Drift is green. The drift job (124093791605) reports DRIFT-GATE: PASS (745 GPU paths, omega 62d1d0d668f8, none moved away from CUDA++ since the baseline), and its self-test passes. All 15 checks are green, including host-tests (124093791452) and CodeQL.
2. Mirror fidelity. I compared this PR's file blob SHAs against git/trees/62d1d0d668f897386a0e311374f8dbcc5c32dde8 in aien-dev/omega-mv, read recursively.
- Exact blob match, 21 files:
src/omega_blackwell_codegen.htests/bw_warp_sim{,_k,_pa,_tc}.htests/gpu_imadhi_rc_test.c- all of
tools/dagsim/*andtests/dagsim/*(including 7 fixtures andsha256_host.c) src/runtime/rx_costmodel.{c,h}
Makefile: recorded divergence. This blob is050e736b; omega's is6b53cd12. The baseline now records omega's new blob. The PR body gives line-by-line reasons: omega'stest-gpu-imadhi-rc,RX_CM_OBJandtest-dagsimblocks are copied verbatim, the names are added toHOST_TESTSbecausetest:expands it at read time, andDS_SHA_SRC = src/sha256.cis used becausesrc/omega_om_units.cisn't in this tree. That is acceptable.- CUDA++-only files:
examples/hello_gpu/hello_gpu.c,tools/extract/drift-baseline.tsvandextra-paths.txtdon't exist in omega. The hello_gpu edit has a stated reason: the mirrored simulator dropped the fields--simprinted. hello-sim is green.
3. Frozen C stack. There's no rework. Every mirrored C/H file is byte-identical to omega, and the only CUDA++-only code edit is in the hello_gpu example. src/omega_cubin.c, src/omega_cubin.* and om/cubin/ are untouched (ADR 0044 holds).
4. GB10. The odd-Rc chip probe and all GB10 tests are labeled NOT_RUN. The imadhi refusal is a simulator behaviour, not a chip claim. Nothing ran on the Spark.
5. Overlap and merge order.
- #192 (6235ac1): they share one file,
Makefile, and both hunks rewrite the same line, the last line of theHOST_TESTS =assignment (main L353). That's a guaranteed one-line textual conflict. The other hunks don't collide: #192's last hunk is at main ~L376, and this PR's append is after L394. - Merge order: merge #194 first, then rebase #192. The rebase must keep both name sets on the
HOST_TESTS =assignment, followed by #192'sfilter-out. This order turns main's drift green for everyone, and #192 is the larger PR that's already being re-checked. - Risk for the rebase: #192 turns on x86-64 host runs, but the PR body ran the
test-gpu-imadhi-rcbinaries only under qemu-aarch64, not natively on x86. The target isn't in #192'sCUDAPP_TARGET_ONLY_TESTS, so after the rebase it will run on x86. Please confirm it builds and passes natively there, or add it to that list.test-dagsimalready passed natively on x86-64. - #170: it shares
Makefileandexamples/hello_gpu/hello_gpu.c. #170 will need a rebase too; the hello_gpu--simprinting edits are the likely conflict.
— Grokbot
Bring in the drift fix from #194 (b4f0480). Keep both HOST_TESTS additions: main's test-gpu-imadhi-rc and test-dagsim, and this branch's portable omega targets, plus the x86 target-only filter. Refs #15 Co-authored-by: Drake Stapleton <[email protected]>
Purpose and scope
Refs #193. The drift gate on main (
78fea51) fails because omega-mv moved GPU paths that CUDA++ had not taken. This syncs those paths to omega62d1d0d668f897386a0e311374f8dbcc5c32dde8(omega-mv #492, the IMAD.HI.U32 register-Rc refusal, and #936, the offline DAG evaluator). It does not close the issue.62d1d0ddoes not touchsrc/omega_cubin.*orom/cubin/. The only file it shares with open PR #170 isMakefile.examples/hello_gpu/hello_gpu.cis also edited, for the reason in the path list: the mirrored warp simulator dropped the fields that--simwas printing. That edit is not #170's sm_86 work.Drift gate on this commit, against that omega revision:
DRIFT-GATE: PASS (745 GPU paths, omega 62d1d0d668f8, none moved away from CUDA++ since the baseline)tools/extract/drift.sh --self-testalso passed: both negative controls went red, and the real check stayed green. The same two lines are in CI jobdrift / drifton run 41064965109.Path decisions
src/omega_blackwell_codegen.h1f0b70eecd3860da68bbe013860f27ca01da0d2f.62d1d0d.tests/bw_warp_sim.h6d93828f3979b3a7223ebe0f1952b53e1d414764.RconIMAD.HI.U32(WS_E_IMADHI_RC). The chip readsRcas a 64-bit pair.tests/bw_warp_sim_k.h993875647985cc99ce27a78003df26df91fd18e1.tests/bw_warp_sim_pa.h157e396cde9d942cc0bfff02fd057ed393c52a0a.tests/bw_warp_sim_tc.ha08e38b6a05d815448fe8b4546d204aff6f3e166.tests/gpu_imadhi_rc_test.c179596a27cd1c24e02ec8459a45f2e7216ca2424.Makefile6b53cd12431392798d60c2da26875a3d7c843595.4e068c1dis only thetest-gpu-imadhi-rcblock and thetest-dagsimblock. Those are copied. The file cannot become omega's 2781-line Makefile.tools/dagsim/*,tests/dagsim/*62d1d0d.tools/dagsimis intools/extract/extra-paths.txtso the map watches it.src/runtime/rx_costmodel.c,src/runtime/rx_costmodel.hd8ddf956d88d4d9164682d2223a277cd04fc37ddand6e2c0db52fafe3548e9161bc96ea9c07292dcd36.dagsimcalls this calculator. The rest ofsrc/runtime/is not imported.Not imported: the nvcc 13.0 listing under
evidence/IMADHI-RC-ORACLE-nvcc13.0-20261016(docs/AUDIT.md),spec/offline-evidence-v1.md, crumbs, andCONTRIBUTORS.md. None of those are GPU-map paths the gate was failing on.examples/hello_gpu/hello_gpu.cis not one of the seven paths. The mirroredtests/bw_warp_sim.hno longer storeserr_tid,err_cx,err_addr,err_bytes,gld_bytes,gst_bytes, orfp_ops.--simnow names the lane and the address from the launch it issued, and counts the vecadd itself (two f32 loads, one f32 store, one FADD per element). The file is on #170's list; this diff does not add the sm_86 encoder path.Makefile lines this tree keeps
Omega's
test-gpu-imadhi-rcblock is lines 397–406 here, same text as62d1d0d. Thetest-dagsimrecipes at lines 428–442 are the same text.RX_CM_OBJat lines 420–426 is omega's object rule from thetest-costmodelblock just above the #936 hunk (the hunk references$(RX_CM_OBJ)). It is copied, not rewritten. Thetest-costmodelunit target is not copied: it linkssrc/omega_om_units.candtests/runtime/rx_costmodel_unit.c, which are not in this tree.Lines that are not omega's text:
Line 354:
test-gpu-imadhi-rc test-dagsim $(CARRIED_HOST_TESTS)make testistest: $(HOST_TESTS), and GNU make expands that list when it reads the rule. Omega has noHOST_TESTS. The two names have to be on this assignment ormake testnever runs them. A laterHOST_TESTS +=would not add them.Lines 411–412:
src/omega_om_units.c is not in this tree. src/sha256.c is sha256_hash on every host.tests/dagsim/sha256_host.c is omega's non-AArch64 stub and aborts if a digest is requested.Omega's two comment lines say the seeded SHA-256 unit is AArch64 machine code and that other hosts link
tests/dagsim/sha256_host.c. That is theifeqthis file does not use.Line 419:
DS_SHA_SRC = src/sha256.cThis replaces omega's four lines:
ifeq ($(shell uname -m),aarch64)/DS_SHA_SRC = src/omega_om_units.c/else/DS_SHA_SRC = tests/dagsim/sha256_host.c/endif.src/omega_om_units.cis not in this repository.tests/dagsim/sha256_host.cis still the omega stub (blob64ffdf4e) and aborts ifsha256_hashis called.src/runtime/rx_costmodel.ccallssha256_hash.src/sha256.cis that function on every host, including AArch64.Lines 1–353 and 355–395, the CUDA++ GPU build that was already here.
One reason for all of them: they are this repository's build (
CC ?= gccat line 15,PHYSICS_DIR ?= .at line 17,-include mk/*.mkat line 27, theHOST_TESTSmanifest, the driver-client and encoder rules). Omega's Makefile at the same path is the omega runtime build (PHYSICS_DIRpointing at physics, a differentSRCSlist). The #492 and #936 delta does not edit those lines. Overwriting the file with omega's 2781-line Makefile would delete the CUDA++ build. The drift baseline records omega's new blob so this remaining difference does not fail the gate.The nvcc listing named in the imadhi comment is not in this tree. The GB10 chip probe of an odd
Rcis NOT RUN.How this meets PR #192
#192 (
cursor/reproducible-host-suite-8957) rewrites theHOST_TESTSassignment: it insertstest-omega-slice-runner,test-omega-arch-guard,test-omega-barrier-contract, andtest-omega-binding-portable, thenHOST_TESTS := $(filter-out $(CUDAPP_TARGET_ONLY_TESTS),$(HOST_TESTS)). Its last Makefile hunk is thetest-portable-receiptsrecipe. It does not reachzero-cuda-gateor the two blocks appended after it (lines 397–442 here).A merge has to keep both name sets on the assignment that the
test:rule reads, and then keep #192's filter.test-gpu-imadhi-rcandtest-dagsimare not inCUDAPP_TARGET_ONLY_TESTS, so that filter does not drop them. Putting either name in aHOST_TESTS +=after thetest:line would not run it.Evidence on the exact commit
git rev-parse HEAD=458a448e4491be308d876d9a3bee772ab1f740b4. Host: Linux 6.12.94+ x86_64.gccandaarch64-linux-gnu-gccare Ubuntu 13.3.0.qemu-aarch64-staticis 8.2.2. No GB10, no/dev/nvidia0, no/dev/aien-gpu.make test(host-only). FAIL, exit 2, on this x86_64 VM.CUDAPP_MEM_RESERVE_MIB=0 make CC=gcc -j4 test.test-driftfinished first:DRIFT REGRESSION TESTS PASS. The archive then stopped in pre-existing AArch64dsb sy(src/omega_blackwell_submit.c:284andsrc/omega_blackwell_engine.c:558,Error: number of operands mismatch for ds). That is the gap Make the portable host suite run from a fresh x86-64 checkout #192 is closing. This commit does not change those instructions. CIhost-testsonubuntu-24.04-armthen passed:CUDA++ HOST TESTS PASS (58 targets).make test-native-artifact(host-only). NOT RUN on this VM. It links the same archive, which does not assemble on x86. CIhost-testsincludes that target and passed.make zero-cuda-gate(ELF audit and negative control). NOT RUN as its own command on this VM. CIhost-testsincludes it and passed.build/hello_gpu --sim(simulator only). PASS under qemu, not as a native x86 binary.aarch64-linux-gnu-gccbuilt/tmp/cudapp-arm/hello_gpu, andqemu-aarch64-static -L /usr/aarch64-linux-gnuransh tests/dx/hello_sim_test.sh:hello --sim tests: 12 passed, 0 failed, exit 0. CIhello-sim / hello-simsucceeded on the arm runner.make doctor. Ran. Exit 2,NOT READY: 5 problems(no NVIDIA module, no/dev/nvidia*, no GPU in sysfs). Expected on this machine. The target table isNOT_RUN(no pinnedomc).Also run locally:
tools/extract/drift.sh /tmp/omega-mv 62d1d0d668f897386a0e311374f8dbcc5c32dde8: PASS, exit 0.DIVERGENCE: 360 shared, 165 same, 195 differ (126 licence-header only, 69 code); 375 cudapp-only, 10 omega-only. The 10 omega-only paths are pre-existing (src/omega_blackwell_gates.c/.h,tests/gpu_tern_test.c, and evidence files already in the baseline). NoDRIFTline.tools/extract/drift.sh --self-teston the same pair: PASS,SELF-TEST: PASS (both controls red, real check green).CUDAPP_MEM_RESERVE_MIB=0 make CC=gcc -j4 test-dagsimon x86_64: PASS, exit 0.dagsim_unit: 171 checks, 0 failed, andtests/dagsim/run_cli.shallok.test-gpu-imadhi-rcbinaries, cross-built and run underqemu-aarch64-static: PASS, exit 0 each (bw_warp_sim,_tc,_k,_pa). Each printsPASS rc=RZ,PASS encodewithRc = R6, andPASS rc=R6: refused: IMADHI_RC at pc 5.CI on
458a448: 15 checks, 15 successful, 0 failed. Run 41064965109.drift / driftloggedDRIFT-GATE: PASS (745 GPU paths, omega 62d1d0d668f8, none moved away from CUDA++ since the baseline)andSELF-TEST: PASS.CI / host-testsloggedCUDA++ HOST TESTS PASS (58 targets).Correctness, compatibility and provenance
Rc, which must be refused.hello_simstill requires exit 1 on--bug=past-endand exit 1 on--bug=shortin the control binary. The drift self-test is the gate's negative control.docs/runtime/omega_runtime_api.manifestchanged.src/omega_blackwell_codegen.his a straight sync. Source status is not raised. The chip behaviour of a registerRcis not claimed: the simulator refuses it, and the GB10 probe is NOT RUN.62d1d0d, copied byte for byte (git hash-objectmatchedgit rev-parse 62d1d0d:pathfor each). No NVIDIA cubin, PTX, ornvdisasmlisting was added.evidence/receipt was rewritten. No new receipt directory: these are host checks, and the GB10 probe was not run.Known limitations
GB10 is NOT RUN, including the odd-
Rcchip probe the imadhi comment still says is pending.make testdoes not complete on this x86_64 host because ofdsb syin the engine and submit sources. The arm64 CI host suite did complete, 58 targets.tests/dagsim/sha256_host.cis present and unused by the link.dagsimis host arithmetic on the fixture numbers, not a measured cost model.— Grokbot