Skip to content
New issue

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

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

Already on GitHub? # to your account

Add support for Chicoma and Perlmutter #941

Closed
wants to merge 7 commits into from
Closed
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
16 changes: 13 additions & 3 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,11 @@ jobs:
eval "$(conda shell.bash hook)"
conda config --add channels conda-forge
conda config --set channel_priority strict
conda install --yes "conda!=22.11.0" conda-build mamba boa
conda update --yes --all
conda install --yes mamba
# workaround based on recent failures
rm /usr/share/miniconda/pkgs/cache/*.json
mamba install --yes conda-build boa
displayName: Update conda base environment

- bash: |
Expand Down Expand Up @@ -158,7 +162,11 @@ jobs:
eval "$(conda shell.bash hook)"
conda config --add channels conda-forge
conda config --set channel_priority strict
conda install --yes python=$PYTHON_VERSION "conda!=22.11.0" conda-build mamba boa
conda update --yes --all
conda install --yes mamba
# workaround based on recent failures
rm /usr/share/miniconda/pkgs/cache/*.json
mamba install --yes conda-build boa
displayName: Update conda base environment

- bash: |
Expand Down Expand Up @@ -213,7 +221,9 @@ jobs:
eval "$(conda shell.bash hook)"
conda config --add channels conda-forge
conda config --set channel_priority strict
conda install --yes "conda!=22.11.0" conda-build mamba boa
conda update --yes --all
conda install --yes mamba
mamba install --yes conda-build boa
displayName: Update conda base environment

- bash: |
Expand Down
2 changes: 1 addition & 1 deletion ci/recipe/meta.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ requirements:
- geometric_features >=0.5.0
- gsw
- lxml
- mache >=1.1.2
- mache >=1.11.0
- matplotlib-base >=3.0.2
- mpas_tools >=0.14.0
- nco >=4.8.1
Expand Down
2 changes: 1 addition & 1 deletion dev-spec.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ f90nml
geometric_features>=0.5.0
gsw
lxml
mache >=1.1.2
mache >=1.11.0
matplotlib-base>=3.0.2
mpas_tools>=0.14.0
nco>=4.8.1
Expand Down
17 changes: 9 additions & 8 deletions docs/tutorials/dev_getting_started.rst
Original file line number Diff line number Diff line change
Expand Up @@ -480,7 +480,7 @@ Anvil or Chrysalis:
/lcrc/group/e3sm/ac.xylar/acme_scratch/anvil/20200305.A_WCYCL1850.ne4_oQU480.anvil
/lcrc/group/e3sm/ac.xylar/acme_scratch/anvil/20201025.GMPAS-IAF.T62_oQU240wLI.anvil

Cori:
Cori and Perlmutter:

.. code-block::

Expand Down Expand Up @@ -597,7 +597,7 @@ match your own preferred workflow.

.. note::

On some E3SM supported machines like Badger and Chicoma, there is no
On some E3SM supported machines like Chicoma, there is no
web portal so you will want to just manually replace the part of the
``basePath`` given by ``/lcrc/group/e3sm/${web_portal:username}`` in the
example above.
Expand Down Expand Up @@ -700,9 +700,10 @@ Then, running MPAS-Analysis is as simple as:

$ mpas_analysis -m <machine> myrun.cfg

where ``<machine>`` is the name of the machine (all lowercase). We treat
``cori-haswell`` and ``cori-knl`` as separate machines (and we strongly
recommend that you use only ``cori-haswell``).
where ``<machine>`` is the name of the machine (all lowercase). On Cori, we
only support the Haswell nodes (so the machine name is ``cori-haswell``). For
now, we only support CPU nodes on Perlmutter (``pm-cpu``) and Chicoma
(``chicoma-cpu``).

Typical output is the analysis is running correctly looks something like:

Expand Down Expand Up @@ -777,14 +778,14 @@ e.g.:

.. note::

On Cori, you will need to change the permissions so you can see the
webpage online:
On Cori and Perlmutter, you will need to change the permissions so you can
see the webpage online:

.. code-block:: bash

$ chmod -R ugo+rX /global/cfs/cdirs/e3sm/www/<username>

where ``<username>`` is your Cori username.
where ``<username>`` is your NERSC username.

If the web page is incomplete, it presumably means there was an error during
the analysis run, since the web page is generated as the final step. Check
Expand Down
12 changes: 4 additions & 8 deletions docs/users_guide/config/execute.rst
Original file line number Diff line number Diff line change
Expand Up @@ -110,26 +110,22 @@ for calls to ``ncremap`` from E3SM-Unified on compute nodes:

ncremapParallelExec = srun

E3SM supported machines with system MPI support in E3SM-Unified 1.5.0:
E3SM supported machines with system MPI support in E3SM-Unified 1.8.1:

* Anvil

* Badger
* Chicoma

* Chrysalis

* Compy

* Cori-Haswell

* Grizzly
* Perlmutter

These machines do **not** have MPI support in E3SM-Unified:

* Cori-KNL

* Cooley

* Andes

* Acme1
Expand All @@ -143,7 +139,7 @@ Parallel Mask Creation

Tasks that involve :ref:`config_region_groups` can generate the masks for each
region in the group on the fly. This is done with the mask generation
command-line tools form MPAS-Tools (see
command-line tools form MPAS-Tools (see
`Mask Creation with Python Multiprocessing <http://mpas-dev.github.io/MPAS-Tools/stable/mesh_conversion.html#mask-creation-with-pthon-multiprocessing>`_),
which support 3 modes of parallelism: "spawn", "fork" and "forkserver". For
technical details on these modes, see
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
## options related to executing parallel tasks

# the number of parallel tasks (1 means tasks run in serial, the default)
parallelTaskCount = 12
parallelTaskCount = 24

# the parallelism mode in ncclimo ("serial", "bck" or "mpi")
# Set this to "bck" (background parallelism) in most cases. The default number
Expand All @@ -18,7 +18,7 @@ ncclimoThreads = 12

# the number of MPI tasks to use in creating mapping files (1 means tasks run in
# serial, the default)
mapMpiTasks = 12
mapMpiTasks = 24

# "None" if ESMF should perform mapping file generation in serial without a
# command, or one of "srun" or "mpirun" if it should be run in parallel (or ins
Expand Down
30 changes: 30 additions & 0 deletions mpas_analysis/configuration/pm-cpu.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
[execute]
## options related to executing parallel tasks

# the number of parallel tasks (1 means tasks run in serial, the default)
parallelTaskCount = 24

# the parallelism mode in ncclimo ("serial", "bck" or "mpi")
# Set this to "bck" (background parallelism) in most cases. The default number
# of threads (see below) is 12, one for each monthly climatology. Set to "mpi"
# to run one MPI task on each node and however many threads per node to reach
# 12 total threads.
ncclimoParallelMode = bck

# the number of total threads to use when ncclimo runs in "bck" or "mpi" mode.
# Reduce this number if ncclimo is crashing (maybe because it is out of memory).
# The number of threads must be a factor of 12 (1, 2, 3, 4, 6 or 12).
ncclimoThreads = 12

# the number of MPI tasks to use in creating mapping files (1 means tasks run in
# serial, the default)
mapMpiTasks = 24

# "None" if ESMF should perform mapping file generation in serial without a
# command, or one of "srun" or "mpirun" if it should be run in parallel (or ins
# serial but with a command)
mapParallelExec = srun

# "None" if ncremap should perform remapping without a command, or "srun"
# possibly with some flags if it should be run with that command
ncremapParallelExec = srun
2 changes: 1 addition & 1 deletion mpas_analysis/ocean/time_series_antarctic_melt.py
Original file line number Diff line number Diff line change
Expand Up @@ -557,7 +557,7 @@ def run_task(self):
obsFileName = '{}/{}'.format(observationsDirectory,
obsFileNameDict[obsName])
obsDict[obsName] = {}
obsFile = csv.reader(open(obsFileName, 'rU'))
obsFile = csv.reader(open(obsFileName, 'r'))
next(obsFile, None) # skip the header line
for line in obsFile: # some later useful values commented out
shelfName = line[0]
Expand Down
2 changes: 1 addition & 1 deletion suite/run_suite.bash
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ do
env=test_mpas_analysis_py${py}
mamba create -y -n ${env} --use-local python=${py} mpas-analysis sphinx \
mock sphinx_rtd_theme "tabulate>=0.8.2" m2r2 "mistune<2" pytest \
"mache>=1.1.2" jinja2
"esmf=*=nompi_*" jinja2
conda activate ${env}
pytest
conda deactivate
Expand Down
6 changes: 6 additions & 0 deletions suite/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@ def main():
output_base = f'{scratch}/analysis_testing'
simulation = '20200305.A_WCYCL1850.ne4_oQU480.anvil'
mesh = 'QU480'
elif machine == 'pm-cpu':
input_base = '/global/cfs/cdirs/e3sm/xylar'
scratch = os.environ['SCRATCH']
output_base = f'{scratch}/analysis_testing'
simulation = '20200305.A_WCYCL1850.ne4_oQU480.anvil'
mesh = 'QU480'
elif machine == 'compy':
input_base = '/compyfs/asay932/analysis_testing/test_output'
output_base = f'/compyfs/{username}/analysis_testing'
Expand Down