Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Perlmutter support #167

Merged
merged 7 commits into from
Jan 31, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion configure_polaris_envs.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,12 @@ def setup_install_env(env_name, activate_base, use_local, logger, recreate,
channels = '--use-local'
else:
channels = ''
packages = f'jinja2 {mache} packaging progressbar2'
if mache == '':
# development mache so include dependencies
packages = 'importlib_resources jinja2 lxml packaging progressbar2 ' \
'pyyaml'
else:
packages = f'jinja2 {mache} packaging progressbar2'
if recreate or not os.path.exists(env_path):
print('Setting up a conda environment for installing polaris\n')
commands = f'{activate_base} && ' \
Expand Down
2 changes: 1 addition & 1 deletion deploy/default.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ mpi = nompi

# versions of conda packages
geometric_features = 1.2.0
mache = 1.16.0
mache = 1.19.0
mpas_tools = 0.27.0
otps = 2021.10
parallelio = 2.6.0
Expand Down
2 changes: 0 additions & 2 deletions deploy/unsupported.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,9 @@ compy, intel, mvapich2
compy, gnu, openmpi
compy, pgi, impi
compy, pgi, mvapich2
pm-cpu, nvidia, mpich
pm-cpu, aocc, mpich
pm-cpu, amdclang, mpich


# compiles but tests unreliable (errors or hanging),
# see https://github.com/MPAS-Dev/compass/issues/336
anvil, intel, mvapich
16 changes: 9 additions & 7 deletions docs/developers_guide/machines/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

# Machines

Polaris attempts to be aware of the capabilities of the machine it is running
on. This is a particular advantage for so-called "supported" machines with a
config file defined for them in the `polaris` package. But even for "unknown"
machines, it is not difficult to set a few config options in your user config
file to describe your machine. Then, polaris can use this data to make sure
Polaris attempts to be aware of the capabilities of the machine it is running
on. This is a particular advantage for so-called "supported" machines with a
config file defined for them in the `polaris` package. But even for "unknown"
machines, it is not difficult to set a few config options in your user config
file to describe your machine. Then, polaris can use this data to make sure
test cases are configured in a way that is appropriate for your machine.

(dev-supported-machines)=
Expand Down Expand Up @@ -57,6 +57,8 @@ supported for those configurations with `gnu` compilers.
| compy | intel | impi | intel-mpi |
+--------------+------------+-----------+-------------------+
| pm-cpu | gnu | mpich | gnu-cray |
| +------------+-----------+-------------------+
| | intel | mpich | intel-cray |
+--------------+------------+-----------+-------------------+
```

Expand Down Expand Up @@ -288,8 +290,8 @@ spack:
modules: []
environment: {}
extra_rpaths: []
```
```

Typically your system will already have compilers if nothing else, and this is
what we assume here. Give the appropriate path (replace `/usr` with the
appropriate path on your system). We have had better luck with `gcc` than
Expand Down
15 changes: 15 additions & 0 deletions docs/developers_guide/machines/perlmutter.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,18 @@ Then, you can build the MPAS model with
```bash
make [DEBUG=true] gnu-cray
```

## pm-cpu, intel

Similarly to `gnu`, for `intel`, if you've set things up right, sourcing the
load scrip will look something like:

```bash
source load_dev_polaris_0.1.0-alpha.1_pm-cpu_intel_mpich.sh
```

To build MPAS components, use:

```bash
make [DEBUG=true] intel-cray
```
6 changes: 6 additions & 0 deletions polaris/machines/pm-cpu.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,12 @@ software_compiler = gnu
# the system MPI library to use for gnu compiler
mpi_gnu = mpich

# the system MPI library to use for intel compiler
mpi_intel = mpich

# the system MPI library to use for nvidia compiler
mpi_nvidia = mpich

# the base path for spack environments used by polaris
spack = /global/cfs/cdirs/e3sm/software/polaris/pm-cpu/spack

Expand Down
50 changes: 50 additions & 0 deletions polaris/machines/pm-gpu.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# The paths section describes paths for data and environments
[paths]

# A shared root directory where polaris data can be found
database_root = /global/cfs/cdirs/e3sm/polaris

# the path to the base conda environment where polaris environments have
# been created
polaris_envs = /global/common/software/e3sm/polaris/pm-gpu/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 = nvidiagpu

# 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 gnugpu compiler
mpi_gnugpu = mpich

# the system MPI library to use for nvidia compiler
mpi_nvidia = mpich

# the system MPI library to use for nvidiagpu compiler
mpi_nvidiagpu = mpich

# the base path for spack environments used by polaris
spack = /global/cfs/cdirs/e3sm/software/polaris/pm-gpu/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

# The parallel section describes options related to running jobs in parallel.
# Most options in this section come from mache so here we just add or override
# some defaults
[parallel]

# 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
Loading