diff --git a/.github/workflows/build_workflow.yml b/.github/workflows/build_workflow.yml index c28f06ebb7..ba7e33f2cd 100644 --- a/.github/workflows/build_workflow.yml +++ b/.github/workflows/build_workflow.yml @@ -118,6 +118,9 @@ jobs: source load_polaris_test_mpich.sh fi python -c "import polaris; import polaris.version; print(polaris.version.__version__)" + polaris --help + polaris list --help + polaris list - if: ${{ steps.skip_check.outputs.should_skip != 'true' }} name: Build Sphinx Docs diff --git a/configure_polaris_envs.py b/configure_polaris_envs.py index be66d6954e..8b6dcae190 100755 --- a/configure_polaris_envs.py +++ b/configure_polaris_envs.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 import os import sys -from configparser import ConfigParser +from configparser import ConfigParser, ExtendedInterpolation from deploy.shared import ( check_call, @@ -105,7 +105,7 @@ def _get_config(config_file): # we can't load polaris so we find the config files here = os.path.abspath(os.path.dirname(__file__)) default_config = os.path.join(here, 'deploy/default.cfg') - config = ConfigParser() + config = ConfigParser(interpolation=ExtendedInterpolation()) config.read(default_config) if config_file is not None: diff --git a/deploy/albany_supported.txt b/deploy/albany_supported.txt index e919ad7cd5..3f1574609f 100644 --- a/deploy/albany_supported.txt +++ b/deploy/albany_supported.txt @@ -1,9 +1,6 @@ # a list of supported machine, compiler and mpi combinations for Albany -anvil, gnu, openmpi -chicoma-cpu, gnu, mpich chrysalis, gnu, openmpi -compy, gnu, openmpi frontier, craygnu, mpich frontier, craygnu-mphipcc, mpich frontier, craycray, mpich diff --git a/deploy/bootstrap.py b/deploy/bootstrap.py index 669bfd2245..b69c089f67 100755 --- a/deploy/bootstrap.py +++ b/deploy/bootstrap.py @@ -10,7 +10,7 @@ import stat import subprocess import time -from configparser import ConfigParser +from configparser import ConfigParser, ExtendedInterpolation from typing import Dict import progressbar @@ -269,7 +269,7 @@ def _get_config(config_file, machine): # we can't load polaris so we find the config files here = os.path.abspath(os.path.dirname(__file__)) default_config = os.path.join(here, 'default.cfg') - config = ConfigParser() + config = ConfigParser(interpolation=ExtendedInterpolation()) config.read(default_config) if machine is not None: @@ -554,7 +554,7 @@ def _build_conda_env(options, activate_base): else: mpi_prefix = f'mpi_{conda_mpi}' - channel_list = ['-c conda-forge', '-c defaults'] + channel_list = ['-c conda-forge'] if use_local: channel_list = ['--use-local'] + channel_list if local_conda_build is not None: @@ -772,15 +772,6 @@ def _get_env_vars(machine, compiler, mpi): env_vars = f'{env_vars}export MPAS_EXTERNAL_LIBS=""\n' - if 'intel' in compiler and machine == 'anvil': - env_vars = ( - f'{env_vars}' - f'export I_MPI_CC=icc\n' - f'export I_MPI_CXX=icpc\n' - f'export I_MPI_F77=ifort\n' - f'export I_MPI_F90=ifort\n' - ) - if machine.startswith('conda'): # we're using parallelio so we don't have ADIOS support env_vars = f'{env_vars}export HAVE_ADIOS=false\n' @@ -869,6 +860,7 @@ def _build_spack_soft_env(options): # noqa: C901 os.chdir(build_dir) esmf = config.get('deploy', 'esmf') + moab = config.get('deploy', 'spack_moab') if config.has_option('deploy', 'spack_mirror'): spack_mirror = config.get('deploy', 'spack_mirror') @@ -895,6 +887,11 @@ def _build_spack_soft_env(options): # noqa: C901 if esmf != 'None': specs.append(f'esmf@{esmf}+mpi+netcdf~pnetcdf~external-parallelio') + if moab != 'None': + specs.append( + f'moab@{moab}+eigen+fortran+hdf5+mpi+netcdf+pnetcdf+zoltan+tempest' + ) + yaml_template: str | None = None template_path = f'{spack_template_path}/{machine}_{compiler}_{mpi}.yaml' if os.path.exists(template_path): @@ -950,7 +947,6 @@ def _build_spack_libs_env(options, compiler, mpi, env_vars): # noqa: C901 cmake = config.get('deploy', 'cmake') lapack = config.get('deploy', 'lapack') metis = config.get('deploy', 'metis') - moab = config.get('deploy', 'spack_moab') parmetis = config.get('deploy', 'parmetis') petsc = config.get('deploy', 'petsc') scorpio = config.get('deploy', 'scorpio') @@ -984,10 +980,6 @@ def _build_spack_libs_env(options, compiler, mpi, env_vars): # noqa: C901 include_e3sm_lapack = True if metis != 'None': specs.append(f'metis@{metis}+int64+real64~shared') - if moab != 'None': - specs.append( - f'moab@{moab}+mpi+hdf5+netcdf+pnetcdf+metis+parmetis+tempest' - ) if parmetis != 'None': specs.append(f'parmetis@{parmetis}+int64~shared') if petsc != 'None': @@ -1038,10 +1030,8 @@ def _build_spack_libs_env(options, compiler, mpi, env_vars): # noqa: C901 mpi=mpi, shell='sh', machine=machine, - config_file=machine_config, include_e3sm_lapack=include_e3sm_lapack, include_e3sm_hdf5_netcdf=e3sm_hdf5_netcdf, - yaml_template=yaml_template, ) spack_view = ( @@ -1064,7 +1054,7 @@ def _build_spack_libs_env(options, compiler, mpi, env_vars): # noqa: C901 stdcxx = '-lc++' else: stdcxx = '-lstdc++' - if mpi == 'openmpi' and machine in ['anvil', 'chrysalis']: + if mpi == 'openmpi' and machine in ['chrysalis']: mpicxx = '-lmpi_cxx' else: mpicxx = '' @@ -1517,7 +1507,7 @@ def _get_possible_hosts(): possible_hosts = dict() for filename in files: machine = os.path.splitext(os.path.split(filename)[1])[0] - config = ConfigParser() + config = ConfigParser(interpolation=ExtendedInterpolation()) config.read(filename) if config.has_section('discovery') and config.has_option( 'discovery', 'hostname_contains' diff --git a/deploy/conda-dev-spec.template b/deploy/conda-dev-spec.template index 533d8068ed..e43f010b6b 100644 --- a/deploy/conda-dev-spec.template +++ b/deploy/conda-dev-spec.template @@ -11,9 +11,9 @@ importlib_resources ipython jupyter lxml -{% if include_mache %} +{%- if include_mache %} mache={{ mache }} -{% endif %} +{%- endif %} matplotlib-base>=3.9.0 metis={{ metis }} moab={{ moab }}=*_tempest_* @@ -22,9 +22,9 @@ mpas_tools={{ mpas_tools }} nco netcdf4=*=nompi_* numpy>=2.0,<3.0 -{% if supports_otps %} +{%- if supports_otps %} otps={{ otps }} -{% endif %} +{%- endif %} progressbar2 pyamg>=4.2.2 pyproj @@ -49,7 +49,7 @@ pre-commit ruff # Development -{% if mpi != "nompi" %} +{%- if mpi != "nompi" %} c-compiler cmake cxx-compiler @@ -62,7 +62,7 @@ m4 make {{ mpi }} {{ openmp }} -{% endif %} +{%- endif %} # CF-compliance cfchecker diff --git a/deploy/default.cfg b/deploy/default.cfg index f60642a49c..6c89fdb999 100644 --- a/deploy/default.cfg +++ b/deploy/default.cfg @@ -21,18 +21,18 @@ mpi = nompi # versions of conda packages geometric_features = 1.6.1 -mache = 1.32.0 -conda_moab = 5.5.1 -mpas_tools = 1.3.2 +mache = 2.1.0 +conda_moab = 5.6.0 +mpas_tools = 1.4.0 otps = 2021.10 parallelio = 2.6.6 # versions of conda or spack packages (depending on machine type) esmf = 8.9.0 metis = 5.1.0 -netcdf_c = 4.9.2 +netcdf_c = 4.9.3 netcdf_fortran = 4.6.2 -pnetcdf = 1.14.0 +pnetcdf = 1.14.1 # versions of spack packages albany = developcompass-2024-03-13 @@ -40,7 +40,7 @@ albany = developcompass-2024-03-13 cmake = 3.23.0: hdf5 = 1.14.6 lapack = 3.9.1 -spack_moab = master +spack_moab = ${conda_moab} parmetis = 4.0.3 petsc = 3.19.1 scorpio = 1.8.2 diff --git a/deploy/petsc_supported.txt b/deploy/petsc_supported.txt index a8e0000d10..e1c5710e4b 100644 --- a/deploy/petsc_supported.txt +++ b/deploy/petsc_supported.txt @@ -1,11 +1,7 @@ # a list of supported machine, compiler and mpi combinations for Netlib LAPACK # and PETSc -anvil, intel, impi -anvil, gnu, openmpi -chicoma-cpu, gnu, mpich chrysalis, intel, openmpi chrysalis, gnu, openmpi -compy, intel, impi frontier, craygnu, mpich pm-cpu, gnu, mpich diff --git a/deploy/unsupported.txt b/deploy/unsupported.txt index c3bbce57ce..5eae58f0f9 100644 --- a/deploy/unsupported.txt +++ b/deploy/unsupported.txt @@ -1,23 +1,9 @@ # a list of unsupported machine, compiler and mpi combinations # no spack available -anvil, gnu, impi -chicoma-cpu, aocc, mpich -chicoma-cpu, amdclang, mpich chrysalis, intel, impi chrysalis, gnu, impi chrysalis, oneapi-ifx, openmpi chrysalis, oneapi-ifx, impi -compy, intel, mvapich2 -compy, gnu, openmpi -compy, pgi, impi -compy, pgi, mvapich2 pm-cpu, aocc, mpich pm-cpu, amdclang, mpich - -# cannot build MOAB in spack -anvil, gnu, mvapich - -# compiles but tests unreliable (errors or hanging), -# see https://github.com/MPAS-Dev/compass/issues/336 -anvil, intel, mvapich diff --git a/docs/developers_guide/command_line.md b/docs/developers_guide/command_line.md index 9be6ac171b..ade00a6bfa 100644 --- a/docs/developers_guide/command_line.md +++ b/docs/developers_guide/command_line.md @@ -334,9 +334,9 @@ so that new revisions can be added without removing older ones (supported by older polaris versions). See {ref}`dev-step-cached-output` for more details. The command `polaris cache` is used to update the file `cached_files.json` -within a component. This command is only available on Anvil and Chrysalis, +within a component. This command is only available on Chrysalis, since developers can only copy files from a Polaris work directory onto the -LCRC server from these two machines. +LCRC server from Chrysalis. ```none $ polaris cache --help usage: polaris cache [-h] [-i STEP [STEP ...]] [-d DATE] [-r] diff --git a/docs/developers_guide/framework/build.md b/docs/developers_guide/framework/build.md index 6fb663203b..8f67a4d092 100644 --- a/docs/developers_guide/framework/build.md +++ b/docs/developers_guide/framework/build.md @@ -34,7 +34,7 @@ Common: submodules and templates) MPAS-Ocean: -- `POLARIS_MACHINE` — machine ID used by the template (e.g., chrysalis, anvil) +- `POLARIS_MACHINE` — machine ID used by the template (e.g., chrysalis, frontier) - `POLARIS_COMPILER` — compiler toolchain ID (e.g., intel, gnu) - `POLARIS_MPI` — MPI library ID (e.g., openmpi, mpich) - `LOAD_POLARIS_ENV` — path to the shell snippet used to load the Polaris build diff --git a/docs/developers_guide/machines/anvil.md b/docs/developers_guide/machines/anvil.md deleted file mode 100644 index ab2f8fe478..0000000000 --- a/docs/developers_guide/machines/anvil.md +++ /dev/null @@ -1,38 +0,0 @@ -(dev-machine-anvil)= - -# Anvil - -## intel - -This is the default polaris compiler on Anvil. If the environment has -been set up properly (see {ref}`dev-conda-env`), you should be able to source: - -```bash -source load_dev_polaris_0.1.0-alpha.1_anvil_intel_impi.sh -``` - -Then, you can build the MPAS model with - -```bash -make [DEBUG=true] [OPENMP=true] intel-mpi -``` - -For other MPI libraries (`openmpi` instead of `impi`), use - -```bash -make [DEBUG=true] [OPENMP=true] ifort -``` - -## gnu - -If you've set things up for this compiler, you should be able to: - -```bash -source load_dev_polaris_0.1.0-alpha.1_anvil_gnu_openmpi.sh -``` - -Then, you can build the MPAS model with - -```bash -make [DEBUG=true] [OPENMP=true] [ALBANY=true] gfortran -``` diff --git a/docs/developers_guide/machines/aurora.md b/docs/developers_guide/machines/aurora.md new file mode 100644 index 0000000000..5cdbf3d28c --- /dev/null +++ b/docs/developers_guide/machines/aurora.md @@ -0,0 +1,14 @@ +(dev-machine-aurora)= + +# Aurora + +## oneapi-ifx + +This is the default polaris compiler on Aurora. If the environment has +been set up properly (see {ref}`dev-conda-env`), you should be able to source: + +```bash +source load_dev_polaris_0.10.0-alpha.1_aurora_oneapi-ifx_mpich.sh +``` + +MPAS components do not yet support Aurora, but Omega does. diff --git a/docs/developers_guide/machines/chicoma.md b/docs/developers_guide/machines/chicoma.md deleted file mode 100644 index 6c20254389..0000000000 --- a/docs/developers_guide/machines/chicoma.md +++ /dev/null @@ -1,16 +0,0 @@ -# Chicoma - -## chicoma-cpu, gnu - -If you've set things up for this compiler, you should be able to source a load -script similar to: - -```bash -source load_dev_polaris_0.1.0-alpha.1_chicoma-cpu_gnu_mpich.sh -``` - -Then, you can build the MPAS model with - -```bash -make [DEBUG=true] gnu-cray -``` diff --git a/docs/developers_guide/machines/compy.md b/docs/developers_guide/machines/compy.md deleted file mode 100644 index 36bbee0bd4..0000000000 --- a/docs/developers_guide/machines/compy.md +++ /dev/null @@ -1,36 +0,0 @@ -(dev-machine-compy)= - -# CompyMcNodeFace - -## intel - -This works to build (but not yet run) standalone MPAS. Again, we will update -as soon as we have a solution. - -This is the default polaris compiler on CompyMcNodeFace. If the -environment has been set up properly (see {ref}`dev-conda-env`), you should be -able to source: - -```bash -source load_dev_polaris_0.1.0-alpha.1_compy_intel_impi.sh -``` - -Then, you can build the MPAS model with - -```bash -make [DEBUG=true] [OPENMP=true] intel-mpi -``` - -## gnu - -If you've set things up for this compiler, you should be able to: - -```bash -source load_dev_polaris_0.1.0-alpha.1_compy_gnu_openmpi.sh -``` - -Then, you can build the MPAS model with - -```bash -make [DEBUG=true] [OPENMP=true] [ALBANY=true] gfortran -``` diff --git a/docs/developers_guide/machines/index.md b/docs/developers_guide/machines/index.md index 041b02fcd7..bbcf7619b5 100644 --- a/docs/developers_guide/machines/index.md +++ b/docs/developers_guide/machines/index.md @@ -20,7 +20,7 @@ Omega or an MPAS component and work with polaris. Just source the script that should appear in the base of your polaris branch, e.g.: ```bash -source load_dev_polaris_0.1.0-alpha.1_anvil_intel_impi.sh +source load_dev_polaris_0.10.0-alpha.1_chrysalis_intel_openmpi.sh ``` After loading this environment, you can set up tasks or suites, and @@ -36,10 +36,8 @@ Below are specifics for each supported machine ```{toctree} :titlesonly: true -anvil -chicoma +aurora chrysalis -compy frontier perlmutter ``` @@ -55,20 +53,10 @@ These are the machines supported by MPAS-Ocean and -Seaice, including the +--------------+------------+-----------+-------------------+ | Machine | Compiler | MPI lib. | MPAS make target | +==============+============+===========+===================+ -| anvil | intel | impi | intel-mpi | -| | +-----------+-------------------+ -| | | openmpi | ifort | -| +------------+-----------+-------------------+ -| | gnu | openmpi | gfortran | -+--------------+------------+-----------+-------------------+ -| chicoma-cpu | gnu | mpich | gnu-cray | -+--------------+------------+-----------+-------------------+ | chrysalis | intel | openmpi | ifort | | +------------+-----------+-------------------+ | | gnu | openmpi | gfortran | +--------------+------------+-----------+-------------------+ -| compy | intel | impi | intel-mpi | -+--------------+------------+-----------+-------------------+ | frontier | craygnu | mpich | gnu-cray | | +------------+-----------+-------------------+ | | craycray | mpich | cray-cray | @@ -96,8 +84,6 @@ E3SM default for the given machine an compiler. +==============+==================+===========+ | aurora | oneapi-ifx | mpich | +--------------+------------------+-----------+ -| chicoma-cpu | gnu | mpich | -+--------------+------------------+-----------+ | chrysalis | intel | openmpi | | +------------------+-----------+ | | gnu | openmpi | @@ -122,10 +108,6 @@ E3SM default for the given machine an compiler. +--------------+------------------+-----------+ ``` -:::{note} -Omega does not currently support Compy and Anvil. -::: - (dev-other-machines)= ## Other Machines diff --git a/docs/developers_guide/organization/steps.md b/docs/developers_guide/organization/steps.md index fc2e2017d5..0ef9314f46 100644 --- a/docs/developers_guide/organization/steps.md +++ b/docs/developers_guide/organization/steps.md @@ -1032,9 +1032,9 @@ directory, providing the names of the steps whose outputs should be added to the cache. The resulting `_cached_files.json` should be copied to `polaris//cached_files.json` in a polaris branch. -Calls to `polaris cache` must be made on Chrysalis or Anvil. If outputs were -produced on another machine, they must be transferred to one of these two -machines before calling `polaris cache`. File can be added manually to the +Calls to `polaris cache` must be made on Chrysalis. If outputs were +produced on another machine, they must be transferred to Chrysalis +before calling `polaris cache`. File can be added manually to the LCRC server and the `cached_files.json` databases but this is not recommended. diff --git a/docs/developers_guide/updating_conda.md b/docs/developers_guide/updating_conda.md index bd76a853e3..e69670dc09 100644 --- a/docs/developers_guide/updating_conda.md +++ b/docs/developers_guide/updating_conda.md @@ -99,10 +99,11 @@ multiple places during the deployment workflow if needed. **Note:** We treat the MOAB package as a special case with different versions from conda-forge (`conda_moab`) and Spack (`spack_moab`). This is because -MOAB has infrequent releases and we currently need features and bug fixes for -many Polaris workflows that are only available from the `master` branch. -Since the `master` version is not available on conda-forge, we fall back on -the latest release for use on login nodes and unsupported machines. +MOAB has infrequent releases and, in the past, we have need features and bug +fixes that are only available from the `master` branch. Since the `master` +version is not available on conda-forge, when we need the latest MOAB features +on machines with spack support, we still must fall back on the latest release +for use on login nodes and unsupported machines. Some versions defined in `default.cfg` apply to both Conda and Spack package: diff --git a/docs/developers_guide/updating_spack/updating_packages.md b/docs/developers_guide/updating_spack/updating_packages.md index 3ab4706960..c375aebf6b 100644 --- a/docs/developers_guide/updating_spack/updating_packages.md +++ b/docs/developers_guide/updating_spack/updating_packages.md @@ -89,15 +89,9 @@ update Spack dependencies in Polaris. ## Testing MPAS-Ocean with `pr`: - - [ ] anvil (@xylar) - - [ ] intel and impi - - [ ] intel and openmpi - - [ ] gnu and openmpi - [ ] chrysalis (@xylar) - [ ] intel and openmpi - [ ] gnu and openmpi - - [ ] compy (@xylar) - - [ ] intel and impi - still seeing https://github.com/E3SM-Project/polaris/issues/205 - [ ] frontier (@xylar) - [ ] craygnu and mpich - [ ] craycray and mpich @@ -132,15 +126,9 @@ update Spack dependencies in Polaris. ## Deploying MPAS-Ocean with `pr`: - - [ ] anvil (@xylar) - - [ ] intel and impi - - [ ] intel and openmpi - - [ ] gnu and openmpi - [ ] chrysalis (@xylar) - [ ] intel and openmpi - [ ] gnu and openmpi - - [ ] compy (@xylar) - - [ ] intel and impi - [ ] frontier (@xylar) - [ ] craygnu and mpich - [ ] craycray and mpich diff --git a/docs/users_guide/config_files.md b/docs/users_guide/config_files.md index 8eceacb1c2..2824ad9c92 100644 --- a/docs/users_guide/config_files.md +++ b/docs/users_guide/config_files.md @@ -179,7 +179,7 @@ threads = 8 format = NETCDF3_64BIT # the NetCDF output engine: netcdf4 or scipy -# the netcdf4 engine is not performing well on Chrysalis and Anvil, so we will +# the netcdf4 engine is not performing well on Chrysalis, so we will # try scipy for now. If we can switch to NETCDF4 format, netcdf4 will be # required # source: /home/xylar/code/polaris/customize_config_parser/polaris/default.cfg diff --git a/docs/users_guide/invalid_quick_start.md b/docs/users_guide/invalid_quick_start.md index 526468af8c..d62d3c271c 100644 --- a/docs/users_guide/invalid_quick_start.md +++ b/docs/users_guide/invalid_quick_start.md @@ -20,35 +20,17 @@ For each polaris release, we maintain a (currently [ESMF](https://earthsystemmodeling.org/), [MOAB](https://sigma.mcs.anl.gov/moab-library/) and [SCORPIO](https://e3sm.org/scorpio-parallel-io-library/)) built with system -MPI using [spack](https://spack.io/) on our standard machines (Anvil, Chicoma, -Chrysalis, Compy, and Perlmutter). Once there is a polaris release, +MPI using [spack](https://spack.io/) on our standard machines (Aurora, +Chrysalis, Frontier, and Perlmutter). Once there is a polaris release, these will be the commands to load the environments and set you up for building the desired E3SM component (MPAS-Ocean, MALI or Omega): -- Anvil (Blues): - -```bash -source /lcrc/soft/climate/polaris/anvil/load_latest_polaris.sh -``` - -- Chicoma (CPU nodes): - -```bash -source /usr/projects/climate/SHARED_CLIMATE/polaris/chicoma-cpu/load_latest_polaris.sh -``` - - Chrysalis: ```bash source /lcrc/soft/climate/polaris/chrysalis/load_latest_polaris.sh ``` -- Compy: - -```bash -source /share/apps/E3SM/conda_envs/polaris/load_latest_polaris.sh -``` - - Perlmutter (CPU nodes): ```bash @@ -57,11 +39,11 @@ source /global/cfs/cdirs/e3sm/software/polaris/pm-cpu/load_latest_polaris.sh These same paths (minus `load_latest_polaris.sh`) also will have load scripts for the latest version of polaris with all the supported compiler and MPI -combinations. For example, on Anvil, you will be able to get an environment +combinations. For example, on Chrysalis, you will be able to get an environment appropriate for building E3SM components with Gnu compilers and OpenMPI using: ```bash -source /lcrc/soft/climate/polaris/anvil/load_latest_polaris_gnu_openmpi.sh +source /lcrc/soft/climate/polaris/chrysalis/load_latest_polaris_gnu_openmpi.sh ``` ### Other machines diff --git a/docs/users_guide/machines/anvil.md b/docs/users_guide/machines/anvil.md deleted file mode 100644 index ac0b6c298e..0000000000 --- a/docs/users_guide/machines/anvil.md +++ /dev/null @@ -1,80 +0,0 @@ -(machine-anvil)= - -# Anvil - -Anvil is a set of nodes used by E3SM and its "ecosystem" projects on -`blues` at [LCRC](https://www.lcrc.anl.gov/). To gain access to the -machine, you will need access to E3SM's confluence pages or the equivalent for -your ecosystem project. - -## config options - -Here are the default config options added when Anvil is automatically detected -or when you choose `-m anvil` when setting up tasks or a suite: - -```cfg -# The paths section describes paths for data and environments -[paths] - -# A shared root directory where polaris data can be found -database_root = /lcrc/group/e3sm/public_html/polaris - -# the path to the base conda environment where polars environments have -# been created -polaris_envs = /lcrc/soft/climate/polaris/anvil/base - - -# Options related to deploying a polaris conda and spack environments -[deploy] - -# the compiler set to use for system libraries and MPAS builds -compiler = intel - -# the compiler to use to build software (e.g. ESMF and MOAB) with spack -software_compiler = intel - -# the system MPI library to use for intel compiler -mpi_intel = impi - -# the system MPI library to use for gnu compiler -mpi_gnu = openmpi - -# the base path for spack environments used by polaris -spack = /lcrc/soft/climate/polaris/anvil/spack - -# whether to use the same modules for hdf5, netcdf-c, netcdf-fortran and -# pnetcdf as E3SM (spack modules are used otherwise) -use_e3sm_hdf5_netcdf = True -``` - -Additionally, some relevant config options come from the -[mache](https://github.com/E3SM-Project/mache/) package: - -```cfg -# The parallel section describes options related to running jobs in parallel -[parallel] - -# parallel system of execution: slurm, pbs or single_node -system = slurm - -# whether to use mpirun or srun to run a task -parallel_executable = srun - -# cores per node on the machine -cores_per_node = 36 - -# account for running diagnostics jobs -account = condo - -# available partition(s) (default is the first) -partitions = acme-small, acme-medium, acme-large - -# quality of service (default is the first) -qos = regular, acme_high -``` - -## Loading and running Polaris on Anvil - -Follow the developer's guide at {ref}`dev-machines` to get set up. There are -currently no plans to support a different deployment strategy (e.g. a shared -environoment) for users. diff --git a/docs/users_guide/machines/chicoma.md b/docs/users_guide/machines/chicoma.md deleted file mode 100644 index 99efaa941b..0000000000 --- a/docs/users_guide/machines/chicoma.md +++ /dev/null @@ -1,174 +0,0 @@ -(machine-chicoma)= - -# Chicoma - -[LANL IC overview and search](https://int.lanl.gov/hpc/institutional-computing/index.shtml) - -[DST Calendar](http://hpccalendar.lanl.gov/) (within LANL network) - -Information about Slurm: - -- [Introduction to Slurm at LANL](https://hpc.lanl.gov/job-scheduling/index.html#JobScheduling-IntroductiontoSlurm) -- [Basic Slurm Guide for LANL HPC Users](https://hpc.lanl.gov/job-scheduling/basic-slurm-guide-for-lanl-hpc-users.html) -- [Slurm Command Summary](https://hpc.lanl.gov/job-scheduling/slurm-commands.html) -- [Slurm: Running Jobs on HPC Platforms](https://hpc.lanl.gov/job-scheduling/slurm-commands.html#SlurmCommands-SlurmJobSubmission) -- [example of batch scripts](https://hpc.lanl.gov/job-scheduling/basic-slurm-guide-for-lanl-hpc-users.html#BasicSlurmGuideforLANLHPCUsers-BatchScriptGenerator) - -Machine specifications: [chicoma](https://hpc.lanl.gov/platforms/chicoma/index.html) -[turquoise network](https://hpc.lanl.gov/networks/turquoise-network/index.html) - -login: `ssh -t @wtrw.lanl.gov ssh ch-fe` - -File locations: - -- small home directory, for start-up scripts only: `/users/` -- home directory, backed up: `/usr/projects/climate/` -- scratch space, not backed up: `/lustre/scratch4/turquoise/` or - `scratch5` - -Check compute time: - -- `sacctmgr list assoc user= format=Cluster,Account%18,Partition,QOS%45` -- Which is my default account? `sacctmgr list user ` -- `sshare -a | head -2; sshare -a | grep $ACCOUNT | head -1` -- `sreport -t Hours cluster AccountUtilizationByUser start=2019-12-02 | grep $ACCOUNT` -- check job priority: `sshare -a | head -2; sshare -a | grep $ACCOUNT` -- [LANL Cluster Usage Overview](https://hpcinfo.lanl.gov) (within LANL yellow) - -Check disk usage: - -- your home space: `chkhome` -- total disk usage in Petabytes: `df -BP |head -n 1; df -BP|grep climate; df -BP |grep scratch` - -Archiving - -- [turquoise HPSS archive](https://hpc.lanl.gov/data/filesystems-and-storage-on-hpc-clusters/hpss-data-archive/index.html) -- archive front end: `ssh -t @wtrw.lanl.gov ssh ar-tn` -- storage available at: `cd /archive/` -- you can just copy files directly into here for a particular project. - -LANL uses slurm. To obtain an interactive node: - -```bash -salloc -N 1 -t 2:0:0 --qos=interactive -``` - -Use `--account=ACCOUNT_NAME` to change to a particular account. - -## Chicoma-CPU - -Chicoma's CPU and GPU nodes have different configuration options and compilers. -We only support Chicoma-CPU at this time. - -### config options - -Here are the default config options added when you choose `-m chicoma-cpu` -when setting up tasks or a suite: - -```cfg -# The paths section describes paths for data and environments -[paths] - -# A shared root directory where polaris data can be found -database_root = /usr/projects/e3sm/polaris/ - -# the path to the base conda environment where polaris environments have -# been created -polaris_envs = /usr/projects/e3sm/polaris/chicoma-cpu/conda/base - - -# Options related to deploying a polaris conda and spack environments -[deploy] - -# the compiler set to use for system libraries and MPAS builds -compiler = gnu - -# the compiler to use to build software (e.g. ESMF and MOAB) with spack -software_compiler = gnu - -# the system MPI library to use for gnu compiler -mpi_gnu = mpich - -# the system MPI library to use for nvidia compiler -mpi_nvidia = mpich - -# the base path for spack environments used by polaris -spack = /usr/projects/e3sm/polaris/chicoma-cpu/spack - -# whether to use the same modules for hdf5, netcdf-c, netcdf-fortran and -# pnetcdf as E3SM (spack modules are used otherwise) -use_e3sm_hdf5_netcdf = True - -# location of a spack mirror for polaris to use -spack_mirror = /usr/projects/e3sm/polaris/chicoma-cpu/spack/spack_mirror - - -# The parallel section describes options related to running jobs in parallel -[parallel] - -# account for running diagnostics jobs -account = - -# cores per node on the machine -cores_per_node = 128 - -# threads per core (set to 1 because trying to hyperthread seems to be causing -# hanging on perlmutter) -threads_per_core = 1 - -# quality of service -# overriding mache because the debug qos also requires --reservaiton debug, -# which polaris doesn't currently support -qos = standard - - -# Config options related to creating a job script -[job] - -# The job partition to use -partition = standard - -# The job quality of service (QOS) to use -qos = standard -``` - -Additionally, some relevant config options come from the -[mache](https://github.com/E3SM-Project/mache/) package: - -```cfg -# The parallel section describes options related to running jobs in parallel -[parallel] - -# parallel system of execution: slurm, pbs or single_node -system = slurm - -# whether to use mpirun or srun to run a task -parallel_executable = srun - -# cores per node on the machine -cores_per_node = 256 - -# available partition(s) (default is the first) -partitions = standard, gpu - -# quality of service (default is the first) -qos = standard, debug - - -# Config options related to spack environments -[spack] - -# whether to load modules from the spack yaml file before loading the spack -# environment -modules_before = False - -# whether to load modules from the spack yaml file after loading the spack -# environment -modules_after = False -``` - -## Loading and running Polaris on Chicoma - -Follow the developer's guide at {ref}`dev-machines` to get set up. There are -currently no plans to support a different deployment strategy (e.g. a shared -environoment) for users. diff --git a/docs/users_guide/machines/compy.md b/docs/users_guide/machines/compy.md deleted file mode 100644 index 6db1226b75..0000000000 --- a/docs/users_guide/machines/compy.md +++ /dev/null @@ -1,78 +0,0 @@ -(machine-compy)= - -# CompyMcNodeFace - -## config options - -Here are the default config options added when CompyMcNodeFace is automatically -detected or when you choose `-m compy` when setting up tasks or a test -suite: - -```cfg -# The paths section describes paths for data and environments -[paths] - -# A shared root directory where polaris data can be found -database_root = /compyfs/polaris - -# the path to the base conda environment where polaris environments have -# been created -polaris_envs = /share/apps/E3SM/conda_envs/polaris/conda/base - - -# Options related to deploying a polaris conda and spack environments -[deploy] - -# the compiler set to use for system libraries and MPAS builds -compiler = intel - -# the compiler to use to build software (e.g. ESMF and MOAB) with spack -software_compiler = intel - -# the system MPI library to use for intel compiler -mpi_intel = impi - -# the system MPI library to use for gnu compiler -mpi_gnu = openmpi - -# the base path for spack environments used by polaris -spack = /share/apps/E3SM/conda_envs/polaris/spack - -# whether to use the same modules for hdf5, netcdf-c, netcdf-fortran and -# pnetcdf as E3SM (spack modules are used otherwise) -# -# We don't use them on Compy because hdf5 and netcdf were build without MPI -use_e3sm_hdf5_netcdf = False -``` - -Additionally, some relevant config options come from the -[mache](https://github.com/E3SM-Project/mache/) package: - -```cfg -# The parallel section describes options related to running jobs in parallel -[parallel] - -# parallel system of execution: slurm, pbs or single_node -system = slurm - -# whether to use mpirun or srun to run a task -parallel_executable = srun --mpi=pmi2 - -# cores per node on the machine -cores_per_node = 40 - -# account for running diagnostics jobs -account = e3sm - -# available partition(s) (default is the first) -partitions = slurm - -# quality of service (default is the first) -qos = regular -``` - -## Loading and running Polaris on CompyMcNodeFace - -Follow the developer's guide at {ref}`dev-machines` to get set up. There are -currently no plans to support a different deployment strategy (e.g. a shared -environoment) for users. diff --git a/docs/users_guide/machines/index.md b/docs/users_guide/machines/index.md index d2684e0851..70ddb75647 100644 --- a/docs/users_guide/machines/index.md +++ b/docs/users_guide/machines/index.md @@ -142,11 +142,8 @@ to use the default MPI variant for each compiler on each machine. ```{toctree} :titlesonly: true -anvil aurora -chicoma chrysalis -compy frontier perlmutter ``` diff --git a/e3sm_submodules/E3SM-Project b/e3sm_submodules/E3SM-Project index 1fd4dcba63..27dae13296 160000 --- a/e3sm_submodules/E3SM-Project +++ b/e3sm_submodules/E3SM-Project @@ -1 +1 @@ -Subproject commit 1fd4dcba63d0e228bdd046a5d718cc53fbc06c44 +Subproject commit 27dae13296008ddcdfd119428a6b19fc316e8e75 diff --git a/e3sm_submodules/Omega b/e3sm_submodules/Omega index 209776a629..24f2fbd640 160000 --- a/e3sm_submodules/Omega +++ b/e3sm_submodules/Omega @@ -1 +1 @@ -Subproject commit 209776a6294ce90a5c87d0c0026f7a9965797e1d +Subproject commit 24f2fbd6407758bf3387a6a3424a90d4c2946370 diff --git a/polaris/__main__.py b/polaris/__main__.py index 7d8affca15..a9731d4826 100644 --- a/polaris/__main__.py +++ b/polaris/__main__.py @@ -52,10 +52,10 @@ def main(): 'serial': run_serial.main, } - # only allow the "polaris cache" command if we're on Anvil or Chrysalis + # only allow the "polaris cache" command if we're on Chrysalis allow_cache = 'POLARIS_MACHINE' in os.environ and os.environ[ 'POLARIS_MACHINE' - ] in ['anvil', 'chrysalis'] + ] in ['chrysalis'] if allow_cache: commands['cache'] = cache.main diff --git a/polaris/cache.py b/polaris/cache.py index 9e316c60a7..61834aa1a0 100644 --- a/polaris/cache.py +++ b/polaris/cache.py @@ -35,10 +35,10 @@ def update_cache(step_paths, date_string=None, dry_run=False): invalid = True else: machine = os.environ['POLARIS_MACHINE'] - invalid = machine not in ['anvil', 'chrysalis'] + invalid = machine not in ['chrysalis'] if invalid: - raise ValueError('You must cache files from either Anvil or Chrysalis') + raise ValueError('You must cache files from Chrysalis') config = PolarisConfigParser() config.add_from_package('polaris.machines', f'{machine}.cfg') diff --git a/polaris/job/__init__.py b/polaris/job/__init__.py index e2acc9754a..4f72754982 100644 --- a/polaris/job/__init__.py +++ b/polaris/job/__init__.py @@ -248,15 +248,7 @@ def _get_job_options( job_section = config['job'] partition_or_queue = job_section.get(partition_or_queue_option) if partition_or_queue == '<<>>': - if machine == 'anvil' and partition_or_queue == 'partition': - # choose the partition based on the number of nodes - if nodes <= 5: - partition_or_queue = 'acme-small' - elif nodes <= 60: - partition_or_queue = 'acme-medium' - else: - partition_or_queue = 'acme-large' - elif par_section.has_option(partitions_or_queues): + if par_section.has_option(partitions_or_queues): # get the first, which is the default partition_or_queue = par_section.getlist(partitions_or_queues)[0] else: diff --git a/polaris/machines/anvil.cfg b/polaris/machines/anvil.cfg deleted file mode 100644 index 7891fdf5a9..0000000000 --- a/polaris/machines/anvil.cfg +++ /dev/null @@ -1,41 +0,0 @@ -# The paths section describes paths for data and environments -[paths] - -# A shared root directory where polaris data can be found -database_root = /lcrc/group/e3sm/public_html/polaris - -# the path to the base conda environment where polars environments have -# been created -polaris_envs = /lcrc/soft/climate/polaris/anvil/base - - -# Options related to deploying a polaris conda and spack environments -[deploy] - -# the compiler set to use for system libraries and MPAS builds -compiler = intel - -# the compiler to use to build software (e.g. ESMF and MOAB) with spack -software_compiler = intel - -# the system MPI library to use for intel compiler -mpi_intel = impi - -# the system MPI library to use for gnu compiler -mpi_gnu = openmpi - -# the base path for spack environments used by polaris -spack = /lcrc/soft/climate/polaris/anvil/spack - -# whether to use the same modules for hdf5, netcdf-c, netcdf-fortran and -# pnetcdf as E3SM (spack modules are used otherwise) -use_e3sm_hdf5_netcdf = True - - -# Config options related to building components -[build] - -# make targets for different compilers and MPI libraries -intel_impi_target = intel-mpi -intel_openmpi_target = ifort -gnu_openmpi_target = gfortran diff --git a/polaris/machines/aurora.cfg b/polaris/machines/aurora.cfg index 530d70e6b6..19f7942f05 100644 --- a/polaris/machines/aurora.cfg +++ b/polaris/machines/aurora.cfg @@ -26,8 +26,15 @@ spack = /lus/flare/projects/E3SM_Dec/soft/polaris/aurora/spack # whether to use the same modules for hdf5, netcdf-c, netcdf-fortran and # pnetcdf as E3SM (spack modules are used otherwise) -use_e3sm_hdf5_netcdf = False +use_e3sm_hdf5_netcdf = True +# The parallel section describes options related to running jobs in parallel +[parallel] + +### NOTE: Adding this temporarily in Polaris but it should come from mache +### in future releases +# the flag to `parallel_executable` to specify the number of cpus per task +cpus_per_task_flag = --depth # Config options related to creating a job script [job] diff --git a/polaris/machines/chicoma-cpu.cfg b/polaris/machines/chicoma-cpu.cfg deleted file mode 100644 index 7bd5999a66..0000000000 --- a/polaris/machines/chicoma-cpu.cfg +++ /dev/null @@ -1,71 +0,0 @@ -# The paths section describes paths for data and environments -[paths] - -# A shared root directory where polaris data can be found -database_root = /usr/projects/e3sm/polaris/ - -# the path to the base conda environment where polaris environments have -# been created -polaris_envs = /usr/projects/e3sm/polaris/chicoma-cpu/conda/base - - -# Options related to deploying a polaris conda and spack environments -[deploy] - -# the compiler set to use for system libraries and MPAS builds -compiler = gnu - -# the compiler to use to build software (e.g. ESMF and MOAB) with spack -software_compiler = gnu - -# the system MPI library to use for gnu compiler -mpi_gnu = mpich - -# the system MPI library to use for nvidia compiler -mpi_nvidia = mpich - -# the base path for spack environments used by polaris -spack = /usr/projects/e3sm/polaris/chicoma-cpu/spack - -# whether to use the same modules for hdf5, netcdf-c, netcdf-fortran and -# pnetcdf as E3SM (spack modules are used otherwise) -use_e3sm_hdf5_netcdf = True - -# location of a spack mirror for polaris to use -spack_mirror = /usr/projects/e3sm/polaris/chicoma-cpu/spack/spack_mirror - - -# The parallel section describes options related to running jobs in parallel -[parallel] - -# account for running diagnostics jobs -account = - -# cores per node on the machine -cores_per_node = 128 - -# threads per core (set to 1 because trying to hyperthread seems to be causing -# hanging on perlmutter) -threads_per_core = 1 - -# quality of service -# overriding mache because the debug qos also requires --reservaiton debug, -# which polaris doesn't currently support -qos = standard - - -# Config options related to creating a job script -[job] - -# The job partition to use -partition = standard - -# The job quality of service (QOS) to use -qos = standard - - -# Config options related to building components -[build] - -# make targets for different compilers and MPI libraries -gnu_mpich_target = gnu-cray diff --git a/polaris/machines/compy.cfg b/polaris/machines/compy.cfg deleted file mode 100644 index 9021e58e66..0000000000 --- a/polaris/machines/compy.cfg +++ /dev/null @@ -1,41 +0,0 @@ -# The paths section describes paths for data and environments -[paths] - -# A shared root directory where polaris data can be found -database_root = /compyfs/polaris - -# the path to the base conda environment where polaris environments have -# been created -polaris_envs = /share/apps/E3SM/conda_envs/polaris/conda/base - - -# Options related to deploying a polaris conda and spack environments -[deploy] - -# the compiler set to use for system libraries and MPAS builds -compiler = intel - -# the compiler to use to build software (e.g. ESMF and MOAB) with spack -software_compiler = intel - -# the system MPI library to use for intel compiler -mpi_intel = impi - -# the system MPI library to use for gnu compiler -mpi_gnu = openmpi - -# the base path for spack environments used by polaris -spack = /share/apps/E3SM/conda_envs/polaris/spack - -# whether to use the same modules for hdf5, netcdf-c, netcdf-fortran and -# pnetcdf as E3SM (spack modules are used otherwise) -# -# We don't use them on Compy because hdf5 and netcdf were build without MPI -use_e3sm_hdf5_netcdf = False - - -# Config options related to building components -[build] - -# make targets for different compilers and MPI libraries -intel_impi_target = intel-mpi diff --git a/polaris/parallel/pbs.py b/polaris/parallel/pbs.py index da81bc27c3..2e7fbe15b3 100644 --- a/polaris/parallel/pbs.py +++ b/polaris/parallel/pbs.py @@ -1,4 +1,6 @@ import os +import re +import subprocess import warnings from polaris.parallel.login import LoginSystem @@ -15,16 +17,12 @@ def get_available_resources(self): if 'PBS_JOBID' not in os.environ: # fallback to login return LoginSystem(config).get_available_resources() - nodefile = os.environ.get('PBS_NODEFILE') - if nodefile and os.path.exists(nodefile): - with open(nodefile) as f: - nodes_list = [line.strip() for line in f if line.strip()] - nodes = len(set(nodes_list)) - # Count how many times the first node appears (cores per node) - first_node = nodes_list[0] - cores_per_node = nodes_list.count(first_node) - else: - # Fallback to config if PBS_NODEFILE is not available + + # First, try to get nodes and cores_per_node from qstat + nodes, cores_per_node = self._get_resources_from_qstat() + + if nodes is None or cores_per_node is None: + # Final fallback: use config values nodes = config.getint('parallel', 'nodes', fallback=1) cores_per_node = config.getint( 'parallel', 'cores_per_node', fallback=1 @@ -55,9 +53,86 @@ def set_cores_per_node(self, cores_per_node): def get_parallel_command(self, args, cpus_per_task, ntasks): config = self.config - command = config.get('parallel', 'parallel_executable').split(' ') - # PBS mpiexec/mpirun may not use -N for nodes, but -n for tasks and - # -c for cpus-per-task are common - command.extend(['-n', f'{ntasks}', '-c', f'{cpus_per_task}']) + section = config['parallel'] + command = section.get('parallel_executable').split(' ') + # PBS mpiexec/mpirun options are launcher's responsibility, so the + # flag used for CPUs per task is configurable per machine + if section.has_option('cpus_per_task_flag'): + cpus_per_task_flag = section.get('cpus_per_task_flag') + else: + cpus_per_task_flag = '-c' + command.extend( + ['-n', f'{ntasks}', cpus_per_task_flag, f'{cpus_per_task}'] + ) command.extend(args) return command + + def _get_resources_from_qstat(self): + """Try to determine nodes and cores_per_node from qstat output.""" + + jobid = os.environ.get('PBS_JOBID') + if not jobid: + return None, None + + try: + # text=True is available in Python 3.7+ + output = subprocess.check_output(['qstat', '-f', jobid], text=True) + except FileNotFoundError: # qstat executable not found + return None, None + except subprocess.CalledProcessError: # qstat returned non-zero + return None, None + + # Try to infer nodes and cores_per_node from various Resource_List + # fields. Different PBS installations format these differently. + + # Case 1: Aurora style (current ALCF Aurora machine): separate + # ncpus and nodect, and select + # Resource_List.ncpus = total_cores_for_job + # Resource_List.nodect = number_of_nodes + # Resource_List.select = number_of_nodes (or chunks) + ncpus_match = re.search(r'Resource_List\.ncpus\s*=\s*(\d+)', output) + nodect_match = re.search(r'Resource_List\.nodect\s*=\s*(\d+)', output) + simple_select_match = re.search( + r'Resource_List\.select\s*=\s*(\d+)', output + ) + + total_cores = int(ncpus_match.group(1)) if ncpus_match else None + nodect = int(nodect_match.group(1)) if nodect_match else None + simple_select = ( + int(simple_select_match.group(1)) if simple_select_match else None + ) + + if total_cores is not None and nodect is not None and nodect != 0: + nodes = nodect + cores_per_node = total_cores // nodect + return nodes, cores_per_node + + if ( + total_cores is not None + and simple_select is not None + and simple_select != 0 + ): + nodes = simple_select + cores_per_node = total_cores // simple_select + return nodes, cores_per_node + + # Case 2: PBS Pro style "select=N:ncpus=M" on a single line + select_match = re.search( + r'Resource_List\.select\s*=\s*(\d+)[^\n]*?:ncpus=(\d+)', + output, + ) + if select_match: + nodes = int(select_match.group(1)) + cores_per_node = int(select_match.group(2)) + return nodes, cores_per_node + + # Case 3: older PBS/Torque style: "nodes=N:ppn=M" + nodes_match = re.search( + r'Resource_List\.nodes\s*=\s*(\d+)[^\n]*?:ppn=(\d+)', + output, + ) + if nodes_match: + nodes = int(nodes_match.group(1)) + cores_per_node = int(nodes_match.group(2)) + return nodes, cores_per_node + return None, None diff --git a/polaris/version.py b/polaris/version.py index 6c11deaf89..ade57dd87c 100644 --- a/polaris/version.py +++ b/polaris/version.py @@ -1 +1 @@ -__version__ = '0.9.0-alpha.5' +__version__ = '0.10.0-alpha.1' diff --git a/utils/bisect/README.md b/utils/bisect/README.md index 4d5b21139c..e1bf044497 100644 --- a/utils/bisect/README.md +++ b/utils/bisect/README.md @@ -176,8 +176,7 @@ It then resets the E3SM repository so it is no longer in a `bisect` state. - Since the code is built and run on a compute node, any baseline you use for comparison (e.g., for non-bit-for-bit checks) should also be built on a compute node. Otherwise, you may see differences purely due to where the - code was compiled. This has been observed, for example, with Intel on - Anvil. + code was compiled. - The bisect process can be expensive (many builds and runs). Consider using a dedicated scratch directory for `work_base` with enough quota and performance. diff --git a/utils/bisect/example.cfg b/utils/bisect/example.cfg index 58e072fe25..cb626794f5 100644 --- a/utils/bisect/example.cfg +++ b/utils/bisect/example.cfg @@ -22,6 +22,6 @@ work_base = /lcrc/group/e3sm/ac.xylar/polaris_0.1/chrysalis/test_20230218/bisect setup_command = polaris setup -n 39 --model mpas-ocean -b /lcrc/group/e3sm/ac.xylar/polaris_0.1/chrysalis/test_20230218/baseline # the absolute or relative path to the load script use to activate the # polaris environment -load_script = load_polaris_bisect_anvil_intel_impi.sh +load_script = load_polaris_bisect_chrysalis_intel_openmpi.sh # the command to run polaris within the work directory run_command = polaris serial diff --git a/utils/matrix/example.cfg b/utils/matrix/example.cfg index bb84c8fb13..03226dfad2 100644 --- a/utils/matrix/example.cfg +++ b/utils/matrix/example.cfg @@ -24,7 +24,7 @@ work_base = /lcrc/group/e3sm/ac.xylar/polaris_0.1/chrysalis/test_20230218/matrix # the absolute or relative path for a baseline for comparison already build # and run with the same build matrix, for example: -# baseline_base = /lcrc/group/e3sm/ac.xylar/polaris_1.0/anvil/test_20220417/matrix_baseline +# baseline_base = /lcrc/group/e3sm/ac.xylar/polaris_1.0/chrysalis/test_20220417/matrix_baseline # The default is no baseline baseline_base = diff --git a/utils/matrix/setup_matrix.py b/utils/matrix/setup_matrix.py index 9c41ae6ef7..17ecae4c67 100755 --- a/utils/matrix/setup_matrix.py +++ b/utils/matrix/setup_matrix.py @@ -10,18 +10,11 @@ # build targets from # https://mpas-dev.github.io/polaris/latest/developers_guide/machines/index.html#supported-machines all_build_targets = { - 'anvil': { - ('intel', 'impi'): 'intel-mpi', - ('intel', 'openmpi'): 'ifort', - ('gnu', 'openmpi'): 'gfortran', - }, - 'chicoma-cpu': {('gnu', 'mpich'): 'gnu-cray'}, 'chrysalis': { ('intel', 'impi'): 'intel-mpi', ('intel', 'openmpi'): 'ifort', ('gnu', 'openmpi'): 'gfortran', }, - 'compy': {('intel', 'impi'): 'intel-mpi'}, 'frontier': { ('craygnu', 'mpich'): 'gnu-cray', ('craycray', 'mpich'): 'cray-cray',