Skip to content

Commit 9862a02

Browse files
authored
Merge pull request #167 from xylar/add-pm-gpu
Update Perlmutter support
2 parents ae783f7 + 02a0318 commit 9862a02

File tree

7 files changed

+87
-11
lines changed

7 files changed

+87
-11
lines changed

configure_polaris_envs.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,12 @@ def setup_install_env(env_name, activate_base, use_local, logger, recreate,
4343
channels = '--use-local'
4444
else:
4545
channels = ''
46-
packages = f'jinja2 {mache} packaging progressbar2'
46+
if mache == '':
47+
# development mache so include dependencies
48+
packages = 'importlib_resources jinja2 lxml packaging progressbar2 ' \
49+
'pyyaml'
50+
else:
51+
packages = f'jinja2 {mache} packaging progressbar2'
4752
if recreate or not os.path.exists(env_path):
4853
print('Setting up a conda environment for installing polaris\n')
4954
commands = f'{activate_base} && ' \

deploy/default.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ mpi = nompi
2121

2222
# versions of conda packages
2323
geometric_features = 1.2.0
24-
mache = 1.16.0
24+
mache = 1.19.0
2525
mpas_tools = 0.27.0
2626
otps = 2021.10
2727
parallelio = 2.6.0

deploy/unsupported.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,9 @@ compy, intel, mvapich2
1313
compy, gnu, openmpi
1414
compy, pgi, impi
1515
compy, pgi, mvapich2
16-
pm-cpu, nvidia, mpich
1716
pm-cpu, aocc, mpich
1817
pm-cpu, amdclang, mpich
1918

20-
2119
# compiles but tests unreliable (errors or hanging),
2220
# see https://github.com/MPAS-Dev/compass/issues/336
2321
anvil, intel, mvapich

docs/developers_guide/machines/index.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
# Machines
44

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

1212
(dev-supported-machines)=
@@ -57,6 +57,8 @@ supported for those configurations with `gnu` compilers.
5757
| compy | intel | impi | intel-mpi |
5858
+--------------+------------+-----------+-------------------+
5959
| pm-cpu | gnu | mpich | gnu-cray |
60+
| +------------+-----------+-------------------+
61+
| | intel | mpich | intel-cray |
6062
+--------------+------------+-----------+-------------------+
6163
```
6264

@@ -288,8 +290,8 @@ spack:
288290
modules: []
289291
environment: {}
290292
extra_rpaths: []
291-
```
292-
293+
```
294+
293295
Typically your system will already have compilers if nothing else, and this is
294296
what we assume here. Give the appropriate path (replace `/usr` with the
295297
appropriate path on your system). We have had better luck with `gcc` than

docs/developers_guide/machines/perlmutter.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,18 @@ Then, you can build the MPAS model with
1414
```bash
1515
make [DEBUG=true] gnu-cray
1616
```
17+
18+
## pm-cpu, intel
19+
20+
Similarly to `gnu`, for `intel`, if you've set things up right, sourcing the
21+
load scrip will look something like:
22+
23+
```bash
24+
source load_dev_polaris_0.1.0-alpha.1_pm-cpu_intel_mpich.sh
25+
```
26+
27+
To build MPAS components, use:
28+
29+
```bash
30+
make [DEBUG=true] intel-cray
31+
```

polaris/machines/pm-cpu.cfg

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ software_compiler = gnu
2121
# the system MPI library to use for gnu compiler
2222
mpi_gnu = mpich
2323

24+
# the system MPI library to use for intel compiler
25+
mpi_intel = mpich
26+
27+
# the system MPI library to use for nvidia compiler
28+
mpi_nvidia = mpich
29+
2430
# the base path for spack environments used by polaris
2531
spack = /global/cfs/cdirs/e3sm/software/polaris/pm-cpu/spack
2632

polaris/machines/pm-gpu.cfg

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# The paths section describes paths for data and environments
2+
[paths]
3+
4+
# A shared root directory where polaris data can be found
5+
database_root = /global/cfs/cdirs/e3sm/polaris
6+
7+
# the path to the base conda environment where polaris environments have
8+
# been created
9+
polaris_envs = /global/common/software/e3sm/polaris/pm-gpu/conda/base
10+
11+
12+
# Options related to deploying a polaris conda and spack environments
13+
[deploy]
14+
15+
# the compiler set to use for system libraries and MPAS builds
16+
compiler = nvidiagpu
17+
18+
# the compiler to use to build software (e.g. ESMF and MOAB) with spack
19+
software_compiler = gnu
20+
21+
# the system MPI library to use for gnu compiler
22+
mpi_gnu = mpich
23+
24+
# the system MPI library to use for gnugpu compiler
25+
mpi_gnugpu = mpich
26+
27+
# the system MPI library to use for nvidia compiler
28+
mpi_nvidia = mpich
29+
30+
# the system MPI library to use for nvidiagpu compiler
31+
mpi_nvidiagpu = mpich
32+
33+
# the base path for spack environments used by polaris
34+
spack = /global/cfs/cdirs/e3sm/software/polaris/pm-gpu/spack
35+
36+
# whether to use the same modules for hdf5, netcdf-c, netcdf-fortran and
37+
# pnetcdf as E3SM (spack modules are used otherwise)
38+
use_e3sm_hdf5_netcdf = True
39+
40+
# The parallel section describes options related to running jobs in parallel.
41+
# Most options in this section come from mache so here we just add or override
42+
# some defaults
43+
[parallel]
44+
45+
# cores per node on the machine
46+
cores_per_node = 128
47+
48+
# threads per core (set to 1 because trying to hyperthread seems to be causing
49+
# hanging on perlmutter)
50+
threads_per_core = 1

0 commit comments

Comments
 (0)