Skip to content

Commit

Permalink
Merge pull request #263 from xylar/add-frontier-amdclang
Browse files Browse the repository at this point in the history
Add support for amdclang and amdclanggpu on Frontier
  • Loading branch information
xylar authored Jan 20, 2025
2 parents 87ba957 + c9a538e commit 943c86d
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 37 deletions.
77 changes: 62 additions & 15 deletions docs/developers_guide/machines/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ test cases are configured in a way that is appropriate for your machine.
If you follow the procedure in {ref}`dev-conda-env`, you will have an
activation script for activating the development conda environment, setting
loading system modules and setting environment variables so you can build
MPAS and work with polaris. Just source the script that should appear in
the base of your polaris branch, e.g.:
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
Expand All @@ -31,10 +31,25 @@ you were setting things up. You can can source this file on a compute node
MPI libraries and environment variables for running polaris tasks and
the MPAS model.

:::{note}
Albany (and therefore most of the functionality in MALI) is currently only
supported for those configurations with `gnu` compilers.
:::
Below are specifics for each supported machine

```{toctree}
:titlesonly: true
anvil
chicoma
chrysalis
compy
frontier
perlmutter
```

(dev-mpas-supported-machines)=

### MPAS-Ocean and -Seaice Supported Machines

These are the machines supported by MPAS-Ocean and -Seaice, including the
"make target" used to build the MPAS component.

```{eval-rst}
+--------------+------------+-----------+-------------------+
Expand Down Expand Up @@ -64,19 +79,51 @@ supported for those configurations with `gnu` compilers.
+--------------+------------+-----------+-------------------+
```

Below are specifics for each supported machine
(dev-omega-supported-machines)=

```{toctree}
:titlesonly: true
### Omega Supported Machines

anvil
chicoma
chrysalis
compy
frontier
perlmutter
These are the machines supported by Omega. The MPI library is always the
E3SM default for the given machine an compiler.

```{eval-rst}
+--------------+--------------+-----------+
| Machine | Compiler | MPI lib. |
+==============+==============+===========+
| chicoma-cpu | gnu | mpich |
+--------------+--------------+-----------+
| chrysalis | intel | openmpi |
| +--------------+-----------+
| | gnu | openmpi |
+--------------+--------------+-----------+
| frontier | gnu | mpich |
| +--------------+-----------+
| | gnugpu | mpich |
| +--------------+-----------+
| | amdclang | mpich |
| +--------------+-----------+
| | amdclanggpu | mpich |
| +--------------+-----------+
| | crayclang | mpich |
| +--------------+-----------+
| | crayclanggpu | mpich |
+--------------+--------------+-----------+
| pm-cpu | gnu | mpich |
| +--------------+-----------+
| | intel | mpich |
| +--------------+-----------+
| | nvidia | mpich |
+--------------+--------------+-----------+
| pm-gpu | gnugpu | mpich |
| +--------------+-----------+
| | nvidiagpu | mpich |
+--------------+--------------+-----------+
```

:::{note}
Omega does not currently support Compy and Anvil.
:::

(dev-other-machines)=

## Other Machines
Expand Down
34 changes: 12 additions & 22 deletions docs/developers_guide/quick_start.md
Original file line number Diff line number Diff line change
Expand Up @@ -458,13 +458,15 @@ be safe.
## Building E3SM components

There are 3 E3SM repositories that are submodules within the polaris
repository.
repository, but the MALI-Dev submodule is not yet used.

For MPAS-Ocean and MALI both, see the last column of the table in
{ref}`dev-supported-machines` for the right `<mpas_make_target>` command for
each machine and compiler.
(dev-mpas-build)=

### MPAS-Ocean or MPAS-Seaice

### MPAS-Ocean
For MPAS-Ocean and -Seaice both, see the last column of the table in
{ref}`dev-mpas-supported-machines` for the right `<mpas_make_target>` command for
each machine and compiler.

To build MPAS-Ocean, you would typically run:

Expand All @@ -474,27 +476,15 @@ cd e3sm_submodules/E3SM-Project/components/mpas-ocean/
make <mpas_make_target>
```

### MALI
The same applies to MPAS-Seaice except with `mpas-seaice` in the path above.

MALI should typically be compiled with the Albany library that contains the
first-order velocity solver. The Albany first-order velocity solver is the
only velocity option that is scientifically validated. On supported machines
and with compilers that support albany, you can run:

```bash
./configure_polaris_envs.py --with_albany ...
```

Then, you can build MALI:

```bash
source ./load_<env_name>_<machine>_<compiler>_<mpi>_albany.sh
cd e3sm_submodules/MALI-Dev/components/mpas-albany-landice
make ALBANY=true <mpas_make_target>
```
(dev-omega-build)=

### Omega

See the table in {ref}`dev-omega-supported-machines` for a list of supported
machines.

If you simply wish to run the CTests from Omega, you likely want to use the
[Omega CTest Utility](https://github.com/E3SM-Project/polaris/blob/main/utils/omega/ctest/README.md).

Expand Down
6 changes: 6 additions & 0 deletions polaris/machines/frontier.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,12 @@ mpi_crayclang = mpich
# the system MPI library to use for crayclanggpu compiler
mpi_crayclanggpu = mpich

# the system MPI library to use for amdclang compiler
mpi_amdclang = mpich

# the system MPI library to use for amdclanggpu compiler
mpi_amdclanggpu = mpich

# the base path for spack environments used by polaris
spack = /ccs/proj/cli115/software/polaris/frontier/spack

Expand Down

0 comments on commit 943c86d

Please sign in to comment.