Skip to content

Conversation

@victorapm
Copy link
Contributor

@victorapm victorapm commented Jan 21, 2026

  • Update hypre to v3.1.0 (MGR improvements, particularly for thermal simulations)
  • Remove internal scotch package and rely on upstream one (from spack-packages) by @bmhan12
  • Update spack-packages commit to 21st Jan 2026
  • Update uberenv to latest develop
  • Update spack to v1.1.0
  • Update silo to v4.1.2 (preferable version by spack-packages)
  • Update hdf5 to v1.14.6 (preferable version by spack-packages)
  • Update rocky linux clang Dockerfile to use gcc-13 headers (required by GPU-enabled builds of hypre)

"spack_configs_path": "scripts/spack_configs",
"spack_packages_path": "scripts/spack_packages/packages",
"spack_packages_commit": "a75a7f75182ffc7a51c6ca7f0fec4bf9b2705be8"
"spack_packages_commit": "cfa8d650480c409de2d568cf1355bf7e509f4c1c" // (Jan 21st 2026)
Copy link
Contributor

@bmhan12 bmhan12 Jan 21, 2026

Choose a reason for hiding this comment

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

You'll need to update the uberenv submodule as well.
There is a bug in the current uberenv that locks the spack_packages commit being used.
More details in this uberenv PR: llnl/uberenv#152

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thanks for the heads up, Brian! Saved some time!

Copy link
Contributor

Choose a reason for hiding this comment

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

No problem! I have a branch here (https://github.com/GEOS-DEV/thirdPartyLibs/tree/feature/han12/spack_updates) that is testing out Spack 1.1.0 . Hopefully the other changes might be useful!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Oh nice, yes those do look useful and more comprehensive than this branch. Are you close to finishing it? Maybe we can put all together

Copy link
Contributor

Choose a reason for hiding this comment

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

Feel free to integrate the parts that work into your PR!
Last I checked, I was running into compilation errors when building GEOS related to newer hypre API changes.

Copy link
Contributor

Choose a reason for hiding this comment

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

Also, I think json is particular about comments, so C-style // comments may not work.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

That's a bummer, wish uberenv could understand jsonc
I fixed the hypre API changes here: GEOS-DEV/GEOS#3939
I'll go ahead and merge your stuff into this PR

@victorapm victorapm changed the title WIP - Update hypre Update spack packages Jan 23, 2026
bmhan12
bmhan12 previously approved these changes Jan 23, 2026
Copy link
Contributor

@bmhan12 bmhan12 left a comment

Choose a reason for hiding this comment

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

Thanks @victorapm!
Just have some comments related to cleanup/clarity.

EDIT: For reference, related PR GEOS-DEV/GEOS#3939

Comment on lines 62 to 64
# Run uberenv
# Have to create install directory first for uberenv
# -k flag is to ignore SSL errors
Copy link
Contributor

Choose a reason for hiding this comment

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

We should preserve comments like these for future reference.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good catch, restored

Comment on lines 78 to 80
scl enable gcc-toolset-13 ' \
export CXXFLAGS="--gcc-toolchain=/opt/rh/gcc-toolset-13/root/usr" && \
export CFLAGS="--gcc-toolchain=/opt/rh/gcc-toolset-13/root/usr" && \
Copy link
Contributor

Choose a reason for hiding this comment

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

There looks to be 3 methods to pass the specific toolchain to clang here and elsewhere:

  • Creating a bash wrapper script that invokes clang with --gcc-toolchain and setting those paths for the llvm external dependency inside docker/rocky-spack.yaml.
  • Setting CFLAGS and CXXFLAGS here with --gcc-toolchain
  • Specifying --gcc-toolchain through cxxflags/cflags under the spack toolchain inside docker/rocky-spack.yaml.

Are these all necessary? Is there any redundancy or methods that didn't end up working here?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

We should only need the first one. I had tried the other two solutions, but couldn't make it work. I cleaned up the stuff that I didn't need anymore in the code

./scripts/uberenv/uberenv.py \
--spec "+cuda~uncrustify~openmp~pygeosx cuda_arch=70 %clang-10 ^cuda@11.8.0+allow-unsupported-compilers ^caliper~gotcha~sampler~libunwind~libdw~papi" \
--spack-env-file=${SRC_DIR}/docker/spack.yaml \
--spack-env-file=${SRC_DIR}/docker/ubuntu20-spack.yaml \
Copy link
Contributor

@bmhan12 bmhan12 Jan 23, 2026

Choose a reason for hiding this comment

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

Maybe rename this file as ubuntu20-clang-cuda.yaml, spack-cuda.yaml, etc. ?
To indicate that this is now cuda-specific/config-specific.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Renamed to docker/ubuntu20-clang-cuda-spack.yaml

- ../versions.yaml

# Ubuntu 20.04 clang/cuda image only has clang/llvm 10.x available.
# Keep this environment llvm10-only to avoid concretizer conflicts with llvm@15.
Copy link
Contributor

Choose a reason for hiding this comment

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

Just curious - was spack failing to concretize and/or was it trying to use llvm@15?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I think here spack has hitting concretization issues because the environment could see multiple llvm externals and spack would either treat %llvm deps ambiguous (multiple external satisfies) and/or concretize into constraints that pulled in llvm@15 even though the image is clang/llvm 10.

@bmhan12 bmhan12 self-requested a review January 23, 2026 16:18
@bmhan12 bmhan12 dismissed their stale review January 23, 2026 16:20

spack passes clang-cuda build by not building hypre (false positive)

@bmhan12
Copy link
Contributor

bmhan12 commented Jan 23, 2026

Hm, looks like the clang-cuda configuration is passing, but spack does so by not building hypre:

Here's the geosx concretization from the CI run(https://github.com/GEOS-DEV/thirdPartyLibs/actions/runs/21274976099) :

geosx@develop+addr2line+caliper+cuda~docs~grpc~hypre~ipo+mathpresso~openmp~petsc~pygeosx~rocm+scotch+shared+trilinos~uncrustify+vtk build_system=cmake build_type=Release cuda_arch:=70 cuda_stack_size=0 dev_path=/tmp/thirdPartyLibs generator=make lai=trilinos platform=linux os=ubuntu20.04 target=x86_64 %fortran=gcc@9.4.0 %c,cxx=clang@10.0.0

That would explain why the associated CI job is failing inside GEOS with error: ENABLE_HYPRE is ON but HYPRE_DIR isn't defined. (https://github.com/GEOS-DEV/GEOS/actions/runs/21278342687/job/61285289879?pr=3939)

@victorapm
Copy link
Contributor Author

Thanks for catching this! Trying to force lai=hypre in 5765cc6. Let's see...

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.

3 participants