Skip to content

Level 2: clean-clone and one-slot-allocation fixes (hipBone/miniWeather vendored files, Branson ctest) - #9

Merged
bowencui123 merged 3 commits into
mainfrom
level2/vendored-build-dirs
Sep 15, 2026
Merged

bowencui123 merged 3 commits into
mainfrom
level2/vendored-build-dirs

Conversation

@bowencui123

@bowencui123 bowencui123 commented Sep 15, 2026

Copy link
Copy Markdown
Collaborator

Found on 2026-09-15 while rebuilding and validating every Level 2 mini-app from a fresh worktree of main (interactive Slurm allocation, -n 1).

1. hipBone / miniWeather cannot be built from a clean clone. The repository's global build/ ignore rule (.gitignore line 7) also matched two directories that upstream ships inside their source trees: hipBone's vendored OCCA scripts/build/ (Makefile, compiledDefinesTemplate.hpp[.in], shellTools.sh, Make.fortran, Make.fortran_rules) and miniWeather's cpp/build/check_output.sh. They existed only in the original development worktree and were never committed. OCCA's Makefile includes scripts/build/Makefile (hipBone build stops at "No rule to make target"); miniWeather's build.sh copies check_output.sh (build stops at cp: cannot stat).

  • The seven files are added; each is byte-identical to the recorded upstream checkouts (hipBone e9f6908a, miniWeather b001069e, _upstream/PROVENANCE.txt).
  • .gitignore re-includes the two directories so they stay tracked.
  • level2/tools/tests/test_vendored_completeness.sh (wired into run_all.sh) fails in a clone that lacks them, and in a git checkout also fails when an ignored file hides inside a vendored level2/ tree.
  • With the files in place both apps build again in the fresh worktree; their validations run in the full sweep.

2. Branson's validation fails in a one-slot Slurm allocation. Upstream's ctest launches its two 2-rank unit tests with a bare mpirun -np 2; with SLURM_TASKS_PER_NODE=1 PRRTE refuses ("not enough slots"), so validate.sh reported FAIL although the tests are fine. The project launcher already relaxes that limit per launch after its GPU checks; validate.sh now does the same for the ctest invocation only, as a command-local environment (env PRTE_MCA_rmaps_default_mapping_policy=:OVERSUBSCRIBE ctest ...), only when the allocation has fewer than two slots, with a printed note; nothing is exported, so the caller's environment and the 1-rank GPU run keep their state (review follow-up, 2026-09-15). Two CPU ranks on one node; no GPU sharing. Verified: 11/11 tests, validation PASS on dgx003.

No dependency, source or validation-criteria changes.

…miniWeather

The repository's global `build/` ignore rule also matched two directories that
upstream ships as part of their source trees: hipBone's vendored OCCA
scripts/build/ (Makefile, compiledDefinesTemplate.hpp[.in], shellTools.sh,
Make.fortran, Make.fortran_rules) and miniWeather's cpp/build/check_output.sh.
They existed only in the original development worktree and were never
committed, so a fresh clone of main could not build hipBone (OCCA's Makefile
includes scripts/build/Makefile) or finish miniWeather's build.sh (it copies
check_output.sh). Found on 2026-09-15 by rebuilding every Level 2 app from a
new worktree.

The seven files are byte-identical to the recorded upstream checkouts
(hipBone e9f6908a, miniWeather b001069e). .gitignore re-includes the two
directories; test_vendored_completeness.sh (run_all.sh) fails in a clone that
lacks them or when an ignored file hides inside a vendored level2/ tree.
…lot Slurm allocation

validate.sh runs upstream's ctest, whose two 2-rank unit tests use a bare
`mpirun -np 2`. Inside a Slurm allocation made with one task slot per node
(SLURM_TASKS_PER_NODE=1) PRRTE refuses that launch ("not enough slots") and
the validation fails although the tests themselves are fine; the project
launcher already relaxes the same limit per launch after its GPU checks.
validate.sh now applies the same relaxation (PRTE_MCA_rmaps_default_mapping_
policy=:OVERSUBSCRIBE) for the ctest step only, only when the allocation has
fewer than two slots, prints a note, and clears it before the 1-rank GPU run.
Two CPU ranks on one node; no GPU sharing is involved. Verified: 11/11 tests,
validation PASS, in a -n 1 interactive allocation on dgx003 (2026-09-15).
@bowencui123 bowencui123 changed the title Level 2: track the vendored build/ directories of hipBone (OCCA) and miniWeather Level 2: clean-clone and one-slot-allocation fixes (hipBone/miniWeather vendored files, Branson ctest) Sep 15, 2026
… of ctest

Review follow-up: instead of exporting PRTE_MCA_rmaps_default_mapping_policy
and unsetting it afterwards (which touched the caller's environment), the
relaxation is now passed through `env ... ctest ...` for the ctest invocation
only. Slot count >= 2: no override at all. Slot count < 2: only the upstream
2-rank CPU unit tests see :OVERSUBSCRIBE; the 1-rank GPU validation run and
the caller keep their environment. Re-verified in the -n 1 allocation:
11/11 tests, validation PASS, variable absent after the script;
test_vendored_completeness.sh 10/10.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant