Skip to content

Commit 6010c23

Browse files
committed
Merge remote-tracking branch 'jcsda/feature/update_to_spack_v1' into feature/new_atlas_and_dependency_versions
2 parents 22880b2 + d857097 commit 6010c23

File tree

9 files changed

+59
-31
lines changed

9 files changed

+59
-31
lines changed

configs/common/modules_lmod.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,8 @@ modules:
142142
^[email protected]+debug snapshot=none: 'esmf-8.8.0-debug'
143143
^[email protected]~debug snapshot=none: 'esmf-8.9.0'
144144
^[email protected]+debug snapshot=none: 'esmf-8.9.0-debug'
145+
^[email protected]~debug snapshot=none: 'esmf-8.9.1'
146+
^[email protected]+debug snapshot=none: 'esmf-8.9.1-debug'
145147
fms:
146148
suffixes:
147149
constants=GFS: 'gfs-constants'

configs/common/modules_tcl.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,8 @@ modules:
161161
^[email protected]+debug snapshot=none: 'esmf-8.8.0-debug'
162162
^[email protected]~debug snapshot=none: 'esmf-8.9.0'
163163
^[email protected]+debug snapshot=none: 'esmf-8.9.0-debug'
164+
^[email protected]~debug snapshot=none: 'esmf-8.9.1'
165+
^[email protected]+debug snapshot=none: 'esmf-8.9.1-debug'
164166
fms:
165167
suffixes:
166168
constants=GFS: 'gfs-constants'

configs/common/packages.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ packages:
8484
esmf:
8585
require:
8686
- ~xerces ~pnetcdf +shared +external-parallelio
87-
- any_of: ['@=8.6.1 snapshot=none', '@=8.8.0 snapshot=none', '@=8.9.0 snapshot=none']
87+
- any_of: ['@=8.6.1 snapshot=none', '@=8.8.0 snapshot=none', '@=8.9.0 snapshot=none', '@=8.9.1 snapshot=none']
8888
- any_of: ['fflags="-fp-model precise" cxxflags="-fp-model precise"']
8989
when: '%intel'
9090
message: Extra ESMF compile options for Intel
@@ -305,6 +305,10 @@ packages:
305305
py-cartopy:
306306
require:
307307
- +plotting
308+
# Pin py-colorama to avoid duplicate packages, hopefully can be removed soon
309+
py-colorama:
310+
require:
311+
- '@0.4.6'
308312
# Pin to version 42 to avoid maturin dependency that breaks Intel oneAPI builds
309313
py-cryptography:
310314
require:

configs/sites/tier1/nautilus/packages_gcc-13.3.1.yaml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ packages:
22
mpi:
33
buildable: False
44
require:
5-
- openmpi@4.1.8
5+
- openmpi@5.0.8
66
gcc-runtime:
77
buildable: False
88
externals:
@@ -23,8 +23,14 @@ packages:
2323
openmpi:
2424
buildable: False
2525
externals:
26-
- spec: openmpi@4.1.8
27-
prefix: /p/app/penguin/openmpi/4.1.8/gcc-13.3.1
26+
- spec: openmpi@5.0.8
27+
prefix: /p/app/penguin/openmpi/5.0.8/gcc-13.3.1
2828
modules:
29-
- penguin/openmpi/4.1.8/gcc-13.3.1
29+
- penguin/openmpi/5.0.8/gcc-13.3.1
3030
- slurm
31+
extra_attributes:
32+
environment:
33+
set:
34+
OMPI_MCA_coll: "^hcoll,cuda"
35+
OMPI_MCA_pml: "ucx"
36+

configs/templates/neptune-dev/spack.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ spack:
88
include: []
99

1010
specs:
11-
- neptune-env ~debug +espc ^esmf@=8.9.0
12-
- neptune-env +debug +espc ^esmf@=8.9.0
13-
- neptune-python-env ^neptune-env ~debug +espc ^esmf@=8.9.0
14-
- jedi-neptune-env +adp ^neptune-env ~debug +espc ^esmf@=8.9.0
11+
- neptune-env ~debug +espc ^esmf@=8.9.1
12+
- neptune-env +debug +espc ^esmf@=8.9.1
13+
- neptune-python-env ^neptune-env ~debug +espc ^esmf@=8.9.1
14+
- jedi-neptune-env +adp ^neptune-env ~debug +espc ^esmf@=8.9.1
1515
1616
1717

configs/templates/neptune-ops/spack.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ spack:
88
include: []
99

1010
specs:
11-
- neptune-env ~debug +espc ^esmf@=8.9.0
11+
- neptune-env ~debug +espc ^esmf@=8.9.1
1212

1313
packages:
1414
# Turn off python variant for esmf

configs/templates/skylab-dev/spack.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,16 @@ spack:
1010
specs:
1111
- ewok-env
1212
#- ai-env
13-
- geos-gcm-env ^esmf@=8.6.1
13+
- geos-gcm-env ^esmf@=8.9.1
1414
- jedi-fv3-env
15-
- jedi-geos-env ^esmf@=8.6.1
15+
- jedi-geos-env ^esmf@=8.9.1
1616
- jedi-mpas-env
17-
- jedi-neptune-env ^esmf@=8.9.0
17+
- jedi-neptune-env ^esmf@=8.9.1
1818
- jedi-tools-env
1919
- jedi-ufs-env ^esmf@=8.8.0
2020
#- jedi-um-env
21-
- neptune-env ^esmf@=8.9.0
22-
- neptune-python-env ^esmf@=8.9.0
21+
- neptune-env ^esmf@=8.9.1
22+
- neptune-python-env ^esmf@=8.9.1
2323
- soca-env
2424

2525
# Various crtm tags (list all to avoid duplicate packages)
@@ -33,7 +33,7 @@ spack:
3333
# Various esmf tags (list all to avoid duplicate packages)
3434
- esmf@=8.6.1
3535
- esmf@=8.8.0
36-
- esmf@=8.9.0
36+
- esmf@=8.9.1
3737

3838
packages:
3939
# Turn on python variant for esmf

configs/templates/unified-dev/spack.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,19 @@ spack:
1010
specs:
1111
- ewok-env
1212
#- ai-env
13-
- geos-gcm-env ^esmf@=8.9.0
13+
- geos-gcm-env ^esmf@=8.9.1
1414
- global-workflow-env ^esmf@=8.6.1 ^crtm@=3.1.2
1515
- gmao-swell-env ^crtm@=v2.4.1-jedi.2
1616
- gsi-env ^crtm@=3.1.2
1717
- jedi-fv3-env
18-
- jedi-geos-env ^esmf@=8.9.0
18+
- jedi-geos-env ^esmf@=8.9.1
1919
- jedi-mpas-env
20-
- jedi-neptune-env ^esmf@=8.9.0
20+
- jedi-neptune-env ^esmf@=8.9.1
2121
#- jedi-tools-env
2222
- jedi-ufs-env ^esmf@=8.8.0
2323
#- jedi-um-env
24-
- neptune-env ^esmf@=8.9.0
25-
- neptune-python-env ^esmf@=8.9.0
24+
- neptune-env ^esmf@=8.9.1
25+
- neptune-python-env ^esmf@=8.9.1
2626
- soca-env
2727
- ufs-srw-app-env ^esmf@=8.8.0 ^crtm@=3.1.2
2828
- ufs-weather-model-env ^esmf@=8.8.0 ^crtm@=3.1.2
@@ -38,7 +38,7 @@ spack:
3838
# Various esmf tags (list all to avoid duplicate packages)
3939
- esmf@=8.6.1
4040
- esmf@=8.8.0
41-
- esmf@=8.9.0
41+
- esmf@=8.9.1
4242

4343
# Various fms builds
4444
- fms +gfs_phys constants=GFS

spack-ext/lib/jcsda-emc/spack-stack/stack/meta_modules.py

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,12 @@ def custom_sort_key(entry):
373373
raise Exception(f"Expected no or one MPI provider, but got {mpi_providers}")
374374
logging.info(f" ... mpi_providers: {mpi_providers}")
375375

376+
# To catch errors (invalid compilers, etc) we check that the number of written
377+
# stack-* meta modules matches what we expect: One module for the preferred
378+
# compiler, and (if applicable) one for each (currently one) MPI provider.
379+
number_of_meta_modules_expected = 1 + len(mpi_providers)
380+
number_of_meta_modules_written = 0
381+
376382
# Prepare meta module directory
377383
logging.info("Preparing meta module directory ...")
378384
meta_module_dir = os.path.join(module_dir, "Core")
@@ -508,6 +514,7 @@ def custom_sort_key(entry):
508514
with open(compiler_module_file, "w") as f:
509515
f.write(module_content)
510516
logging.info(" ... writing {}".format(compiler_module_file))
517+
number_of_meta_modules_written += 1
511518

512519
# If this is the last compiler in the list (i.e. the preferred compiler),
513520
# then save the substitutes for later when building the MPI meta module
@@ -520,13 +527,15 @@ def custom_sort_key(entry):
520527
# Create mpi modules - currently, only one mpi provider is allowed
521528
for mpi_provider in mpi_providers:
522529

530+
if module_choice == "lmod":
531+
mpi_alias = mpi_provider.name
532+
else:
533+
mpi_alias = ALIASES[mpi_provider.name]
534+
523535
# For tcl, append modulepath for external specs and for specs without
524536
# compiler dependencies; remove the compiler/mpi prefices from the moduless
525537
if module_choice == "tcl":
526538

527-
# Module paths are short names for tcl modules
528-
mpi_alias = ALIASES[mpi_provider.name]
529-
530539
modulepath_save = os.path.join(module_dir, mpi_alias, str(mpi_provider.version), "none", "none")
531540
if not os.path.isdir(modulepath_save):
532541
os.makedirs(modulepath_save)
@@ -548,7 +557,7 @@ def custom_sort_key(entry):
548557

549558
# Module paths are short names for tcl modules
550559
if module_choice == "lmod":
551-
mpi_alias = compiler.name
560+
compiler_alias = compiler.name
552561
else:
553562
compiler_alias = ALIASES[compiler.name]
554563

@@ -654,10 +663,10 @@ def custom_sort_key(entry):
654663
substitutes["FC"] = COMPILER_SUBSTITUTES_SAVE["FC"]
655664

656665
# Environment variables
657-
if "environment" in compiler.extra_attributes.keys():
658-
for action in compiler.extra_attributes["environment"].keys():
659-
for env_name in compiler.extra_attributes["environment"][action]:
660-
env_values = compiler.extra_attributes["environment"][action][env_name]
666+
if "environment" in mpi_provider.extra_attributes.keys():
667+
for action in mpi_provider.extra_attributes["environment"].keys():
668+
for env_name in mpi_provider.extra_attributes["environment"][action]:
669+
env_values = mpi_provider.extra_attributes["environment"][action][env_name]
661670
substitutes["ENVVARS"] += envmod_command(
662671
module_choice,
663672
action,
@@ -689,5 +698,10 @@ def custom_sort_key(entry):
689698
with open(mpi_module_file, "w") as f:
690699
f.write(module_content)
691700
logging.info(" ... writing {}".format(mpi_module_file))
701+
number_of_meta_modules_written += 1
692702

693-
logging.info("Metamodule generation completed successfully in {}".format(meta_module_dir))
703+
704+
if number_of_meta_modules_written == number_of_meta_modules_expected:
705+
logging.info("Metamodule generation completed successfully in {}".format(meta_module_dir))
706+
else:
707+
raise Exception("Metamodule generation NOT successful, check output (invalid compiler?)")

0 commit comments

Comments
 (0)