Repository navigation
CI: add an x86-64 host-tests job (portable suite + freestanding link) - #199
Conversation
… link. ubuntu-24.04 runs CUDAPP_MEM_RESERVE_MIB=0 make CC=gcc -j4 test and make CC=gcc gpu-engine-freestanding. The AArch64 host-tests job in ci.yml is unchanged. GB10 stays NOT_RUN. — Grokbot Co-authored-by: Drake Stapleton <[email protected]>
drakestapleton
left a comment
There was a problem hiding this comment.
Review at 9cb330d: ready to merge once x86-host-tests is green. At review time all 12 checks were queued, including x86-host-tests (run 41076382003), so there's no run log yet.
Provenance. There's 1 commit, from cloud agent bc-b872c9aa, branched off main 522ee0d. The body says "Refs #196" and doesn't close the issue, which is right.
Scope. It adds one new file, .github/workflows/host-x86.yml (L1-55), with job x86-host-tests on ubuntu-24.04, a 60-minute limit and contents: read. Checkout is pinned to the same SHA as the other workflows. The only other change is docs/OMEGA_HOST_TESTS.md (+4 at L18-21).
Against #196's done-when
- (a) Met, pending the run. L44-55 runs
CUDAPP_MEM_RESERVE_MIB=0 make CC=gcc -j4 test, which matches docs/OMEGA_HOST_TESTS.md L15-17 on main. The product default of 4096 is unchanged. A pass on main can only be confirmed after this merges; the PR run is on the PR's merge ref. - (b) Met. L32-42 runs
make CC=gcc gpu-engine-freestandingand greps for thecudapp_binding_portable.ocompile carrying bothCUDAPP_PORTABLE_DEFSflags, then for thefreestanding GPU link (...)line. - (c) Met.
ci.ymlisn't in the diff, so the AArch64host-testsjob is byte-for-byte unchanged. - (d) Met. The workflow is
host-x86and the job and check arex86-host-tests. Neither collides withhost-tests,runtime-api,fresh-checkout(#198) orfigures(#198). - (e) Nothing is faked green.
|| rc=$?is re-raised at L38 and L50.- The default
bash -eo pipefailmakes a failed grep pipeline at L39 orline=$(grep ...)at L40 fail the step. - The last line has to be
CUDA++ HOST TESTS PASS (...)(L52-54). - L27 enforces
x86_64. - There's no
continue-on-error, no|| trueand noif:skip.
- The
echo "GB10: NOT_RUN"lines are honest, and the body makes no chip claim.
Fit. No file is shared with #197 (runtime-api.yml) or #198 (host-gates.yml, tools/ci/, AGENTS, CONTRIBUTING, START_HERE). #195 edits AGENTS.md, not this doc. Merge order: #197, then #199, then #198. None needs a textual rebase. After #199 lands, #198 should update its "#196 / x86 make test NOT_RUN" pointers (host-gates.yml L15, host-gates.sh L320, CI_ACCEPTANCE.md L9). One cost to note: x86 make test re-runs test-runtime-api without semver, which is fine since it's documented.
Follow-ups. The body lists none to file.
— Grokbot
Purpose and scope
Adds a GitHub Actions job that runs the portable host suite on an x86-64 runner, with the memory reserve set the way
docs/OMEGA_HOST_TESTS.mddescribes, and builds the x86 freestanding link.Refs #196. This pull request does not close the issue.
Files:
.github/workflows/host-x86.yml(new). Jobx86-host-testsonubuntu-24.04. It does not install nvdisasm, clone Omega, or open a GPU.docs/OMEGA_HOST_TESTS.md: one sentence naming that job.git diff origin/main -- .github/workflows/ci.ymlis empty. The AArch64host-testsjob is unchanged. No edits undersrc/,om/cubin/, or the files in pull request #170.Commands the job runs:
make CC=gcc gpu-engine-freestanding CUDAPP_MEM_RESERVE_MIB=0 make CC=gcc -j4 testThe freestanding step requires the compile of
build/gpu_fs/cudapp_binding_portable.oto pass-DCUDAPP_MIGRATION_PENDING_C_ENCODER -DCUDAPP_MIGRATION_PENDING_C_CUBIN(CUDAPP_PORTABLE_DEFSinmk/omega-gpu-engine.mk) and requires the recipe linefreestanding GPU link (<n> files): only ... undefined. The suite step requires exit 0 and a last lineCUDA++ HOST TESTS PASS (<n> targets). The product default reserve stays 4096. The job setsCUDAPP_MEM_RESERVE_MIB=0because that is the documented x86-64 command that passes when the host cannot keep 4096 MiB free.How this sits with #90 and #189
.github/workflows/ci.ymland the AArch64host-testsjob. This change does not rewrite that workflow. It adds one file.make test-runtime-apion PRs and main (ADR 0043 follow-up) #189 (make test-runtime-api) already has.github/workflows/runtime-api.ymlon main: the manifest check, the negative controls, and the version bump against the base commit, onubuntu-24.04-arm. This pull request does not edit that file. The portablemake testincludestest-runtime-apias one of its targets. It does not runtest-runtime-api-semver. That comparison stays inruntime-api.yml.Evidence on the exact commit
Workflow commit
9cb330d7415f0e67fda9ad1ceed06e9b4f4243b0, parent522ee0d063cbc93672091a0edd00a0866634b981.GitHub Actions run https://github.com/aien-dev/CUDApp/actions/runs/41076382003, job
x86-host-testsonubuntu-24.04(arch x86_64). Conclusion: success.freestanding GPU link (15 files): only memcmp memcpy memset strcmp strlen undefined. The same log showsbuild/gpu_fs/cudapp_binding_portable.ocompiled with-DCUDAPP_MIGRATION_PENDING_C_ENCODER -DCUDAPP_MIGRATION_PENDING_C_CUBIN.CUDAPP_MEM_RESERVE_MIB=0. Result line:CUDA++ HOST TESTS PASS (57 targets).GB10: NOT_RUN. It did not runmake hello-gpuand did not install a CUDA toolkit.The same pull request's
CIworkflow still scheduleshost-testsonubuntu-24.04-arm(run https://github.com/aien-dev/CUDApp/actions/runs/41076381664). That job definition is the file on main. This pull request does not change it.A local run of the same two commands, on the parent sources before this commit (the workflow and the docs sentence are not inputs to
make), also exited 0 on Linux x86_64, gcc 13.3.0, 4 cores: the same 57-target line and the same freestanding line.aarch64-linux-gnu-gccwas not installed there either.make test(host-only). GitHub job and the local command both endedCUDA++ HOST TESTS PASS (57 targets).make CC=gcc gpu-engine-freestandingexited 0. Line:freestanding GPU link (15 files): only memcmp memcpy memset strcmp strlen undefined.make test-native-artifact(host-only). Inside the local suite:test_gpu_artifact_export: 47 checks, 0 failed.make zero-cuda-gateexited 0 inside that local suite.ZERO_CUDA SELF-TEST PASS.build/hello_gpuneedslibmandlibc.build/gpu_matmul_api_testneedslibc.build/hello_gpu --simran inside that local suite.hello --sim tests: 12 passed, 0 failed.make doctoras its own command. NOT RUN outside the suite.test-doctoris one of the 57 targets and the suite exited 0.make hello-gpu.No new
evidence/directory. The Actions log is the receipt. A receipt folder would be a file beyond the workflow and the docs sentence.Correctness, compatibility and provenance
FAILlines, the freestanding malloc allowlist, the zero-CUDA self-test). This pull request does not weaken them.docs/runtime/omega_runtime_api.manifest, anddocs/runtime/API.mdare unchanged. The AArch64 library build is unchanged becauseci.ymlis unchanged.evidence/were not edited.Known limitations
mainas well. It has not run onmainyet, because this pull request is not merged.omctargets stay outsidemake teston x86-64 and exit 2 when invoked directly.make test-omega-target-onlyis the report inside the suite.— Grokbot