Skip to content

Conversation

scheibelp
Copy link
Collaborator

@scheibelp scheibelp commented Aug 6, 2025

Fixes #918

As of September 3rd this is now passing all pipeline benchmark builds/executions, and is ready for review.

At a high level:

  • there is no more compilers section: the compilers must be expressed as packages
    • So every system.py has fairly extensive changes
      • but minimal changes to API:
        • no new functions (except helper functions for making confg dicts): compute_compilers_section is still responsible for describing compilers, but it produces a packages: config
        • There is a new helper function merge_dicts to recursively merge two configs (it works like Spack's config merge logic, and perhaps could be replaced with that, but for now entirely avoids any import needs and is ~20 lines)
          • This makes it easy for the base system.py to merge compiler config with the output of compute_packages_section)
  • packages must declare language dependencies (c/c++/fortran)
    • so every package.py changes
      • A few of them did not need to add these because they inherit from builtin (in those cases, the way we reference packages in builtin changed, so those packages changed also)
    • in several cases I'm probably adding an unnecessary fortran dependency: in alphabetical order I've somewhat-carefully checked everything up to gpcnet
    • Assuming the concretization completes without issue, I generally expect it is not much of a problem to incorrectly add a fortran dependency

Packages with additional changes

(all the other package changes follow the general description above)

  • hypre I disabled a check entirely that appears to not ever be activated (and accessing the compiler attributes changed in Spack 1.0)
  • raja-perf: there used to be a separate rocmcc and llvm-amdgpu concepts, but they merged: llvm-amdgpu is now the compiler, and library resources sit one directory lower in llvm

Unfinished systems

See: #953 (comment)

Follow-up items

  • This PR modifies some experiments to add +mpi to the benchmark spec and to also influence how some dependencies are built. It would be good to consolidate these choices if possible (to help avoid other benchmarks "randomly" concretizing incorrectly, we should potentially be applying these constraints more consistently).

@github-actions github-actions bot added feature New feature or request system New or modified system config application labels Aug 6, 2025
@scheibelp
Copy link
Collaborator Author

  • Make a list of systems which need their owners to insert paths
    • cscs-daint
    • cscs-eiger
  • Make a list of systems which have not been tested
    • (everything from the first list plus:)
    • aws-cluster
    • cscs-lumi
    • jsc-juwels
    • lanl-venado
    • llnl-matrix
    • riken-fugaku

(for this second list, some of them have dry runs, but none of them are part of our pipelines that run benchmarks; all of them except llnl-matrix are outside of LLNL)


depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("fortran", type="build")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps the upstream should have a variant to disable? I see a --disable-fortran option mentioned in the repo...

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the remhos package does not have a fortran variant, then ideally we'd always be explicitly enabling or disabling Fortran support in the build. I don't see one; in general it's safer to assume it is enabled in that case (at least for modeling these language dependencies).

pearce8
pearce8 previously approved these changes Sep 10, 2025
…dates to raja-perf; however I think this constraint may no longer be needed because I see kripke added a conflict w/blt 0.7.0
pearce8
pearce8 previously approved these changes Sep 10, 2025
@pearce8 pearce8 added this pull request to the merge queue Sep 10, 2025
@pearce8 pearce8 removed this pull request from the merge queue due to a manual request Sep 10, 2025
@pearce8 pearce8 merged commit 1f3e5e6 into develop Sep 10, 2025
18 checks passed
@pearce8 pearce8 deleted the spack-1-update branch September 10, 2025 19:05
@codecov-commenter
Copy link

Codecov Report

❌ Patch coverage is 80.24691% with 16 lines in your changes missing coverage. Please review.
✅ Project coverage is 65.62%. Comparing base (11b9fec) to head (cae0603).
⚠️ Report is 2 commits behind head on develop.

Files with missing lines Patch % Lines
systems/llnl-elcapitan/system.py 23.52% 13 Missing ⚠️
lib/benchpark/system.py 95.65% 2 Missing ⚠️
lib/benchpark/runtime.py 93.33% 1 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           develop     #953      +/-   ##
===========================================
+ Coverage    65.21%   65.62%   +0.41%     
===========================================
  Files           44       44              
  Lines         3162     3223      +61     
  Branches       239      253      +14     
===========================================
+ Hits          2062     2115      +53     
- Misses        1093     1101       +8     
  Partials         7        7              
Files with missing lines Coverage Δ
lib/benchpark/cmd/setup.py 93.63% <100.00%> (+0.11%) ⬆️
lib/benchpark/runtime.py 92.10% <93.33%> (-0.28%) ⬇️
lib/benchpark/system.py 93.41% <95.65%> (+0.79%) ⬆️
systems/llnl-elcapitan/system.py 37.69% <23.52%> (-1.51%) ⬇️

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
application experiment New or modified experiment feature New feature or request system New or modified system config
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Update to Spack 1.0
6 participants