Pace
An implementation of the FV3GFS / SHiELD atmospheric model developed by NOAA/GFDL using the NDSL middleware in Python, itself based on GT4Py and DaCe.
https://github.com/NOAA-GFDL/pace
Category: Atmosphere
Sub Category: Atmospheric Composition and Dynamics
Keywords from Contributors
climate-model climate fms gfdl fv3 model-component
Last synced: about 11 hours ago
JSON representation
Repository metadata
Re-write of FV3GFS weather/climate model in Python
- Host: GitHub
- URL: https://github.com/NOAA-GFDL/pace
- Owner: NOAA-GFDL
- License: apache-2.0
- Created: 2022-02-07T20:08:10.000Z (almost 4 years ago)
- Default Branch: develop
- Last Pushed: 2025-12-12T15:48:53.000Z (14 days ago)
- Last Synced: 2025-12-14T12:36:12.604Z (12 days ago)
- Language: Python
- Size: 11.3 MB
- Stars: 21
- Watchers: 6
- Forks: 21
- Open Issues: 37
- Releases: 0
-
Metadata Files:
- Readme: README.md
- Changelog: changed_from_main.py
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
README.md
Pace
Pace is an implementation of the FV3GFS / SHiELD atmospheric model developed by NOAA/GFDL using the NDSL middleware in Python, itself based on GT4Py and DaCe. The model can be run on a laptop using Python-based backend or on thousands of heterogeneous compute nodes of a large supercomputer.
🚧 WARNING This repo is under active development - supported features and procedures can change rapidly and without notice. 🚧
The repository model code is split between pyFV3 for the dynamical core and pySHiELD for the physics parametrization. A full dependencies looks like the following:
flowchart TD
GT4Py.cartesian --> |Stencil DSL|NDSL
DaCe --> |Full program opt|NDSL
NDSL --> pyFV3
NDSL --> pySHiELD
pyFV3 --> |Dynamics|Pace
pySHiELD --> |Physics|Pace
Quickstart - bare metal
Build
Pace requires:
- GCC > 9.2
- MPI
- Python 3.8.
For GPU backends CUDA and/or ROCm is required depending on the targeted hardware.
When cloning Pace you will need to update the repository's submodules as well:
git clone --recursive https://github.com/NOAA-GFDL/pace.git
or if you have already cloned the repository:
git submodule update --init --recursive
We recommend creating a python venv or conda environment specifically for Pace.
python -m venv .venv
source .venv/bin/activate
Inside of your pace venv or conda environment, install pace and its dependencies. For developers, we recommend an editable install with the [dev] extra:
pip install -e .[dev]
To install editable versions of the submodules of Pace, use the -e flag followed by the name of the package (if editing the local version) or path to edited version of the submodule after base installation of Pace:
pip install -e .
pip install -e NDSL
# pip install -e /path/to/edited/NDSL
pip install -e pyFV3
# pip install -e /path/to/edited/pyFV3
pip install -e pySHiELD
# pip install -e /path/to/edited/pySHiELD
For running tests, we recommend to install pace with the [test] extra (avoid pulling other dev dependencies):
pip install .[test]
For just running pace, you don't need any extra:
pip install .
Shell scripts to install Pace on specific machines such as Gaea can be found in examples/build_scripts/.
Run
Located in the directory examples/configs/ there are several example configurations to exhibit the current functionality of Pace. We suggest a new user start with the baroclinic_c12.yaml configuration.
mpirun -n 6 python3 -m pace.run examples/configs/baroclinic_c12.yaml
# or with oversubscribe if you do not have at least 6 cores
mpirun -n 6 --oversubscribe python3 -m pace.run examples/configs/baroclinic_c12.yaml
After the run completes, you will see an output directory output.zarr. An example to visualize the output is provided in examples/plot_output.py. See the driver example section for more details.
Environment variable configuration
NDSL_CONSTANTS: Pace is bundled with various constants.GFDLNOAA's FV3 dynamical core constants (original port)GFSConstant as defined in NOAA GFSGEOSConstant as defined in GEOS v13
NDSL_LITERAL_PRECISION: default precision of the field & scalars in the numerics. Default to 64.NDSL_LOGLEVEL: logging level to display (DEBUG, INFO, WARNING, ERROR, CRITICAL). Default to INFO.
Quickstart - Docker
Build
While it is possible to install and build pace bare-metal, we can ensure all system libraries are installed with the correct versions by using a Docker container to test and develop pace.
First, you will need to update the git submodules so that any dependencies are cloned and at the correct version:
git submodule update --init --recursive
Then build the pace docker image at the top level.
make build
Run
make dev
mpirun --mca btl_vader_single_copy_mechanism none -n 6 python -m pace.run /examples/configs/baroclinic_c12.yaml
History
This repository was first developed at AI2 and the institute conserves an archived copy with the latest state before the NOAA took over.
Running pace in containers
Docker images exist in the Github Container Registry associated with the NOAA-GFDL organization.
These images are publicly accessible and can be used to run a Docker container to work with pace.
The following are directions on how to setup the pace conda environment interactively in a container.
The latest images can be pulled with the Docker as shown below or
with any other container management tools:
docker pull ghcr.io/noaa-gfdl/pace_mpich:3.8
for MPICH installation of MPI; and
docker pull ghcr.io/noaa-gfdl/pace_openmpi:3.8
for OpenMPI installation of MPI.
If permission issues arise during the pull, a Github personal token
may be required. The steps to create a personal token is found
here
Once the token has been generated, the image can be pulled for example with with:
docker login --username GITHUB_USERNAME --password TOKEN
docker pull ghcr.io/noaa-gfdl/pace_mpich:3.8
Any container management tools compatible with Docker images can be used
to run the container interactively from the pulled image.
With Docker, the following command runs the container interactively.
docker run -it pace_mpich:3.8
In the container, the default base conda environment is already activated.
The pace conda environment can be created by following the steps below:
git clone --recursive -b develop https://github.com/NOAA-GFDL/pace.git pace
cd pace
cp /home/scripts/setup_env.sh . && chmod +x setup_env.sh
source ./setup_env.sh
Owner metadata
- Name: NOAA - Geophysical Fluid Dynamics Laboratory
- Login: NOAA-GFDL
- Email: gfdl.climate.model.info@noaa.gov
- Kind: organization
- Description: U.S Department of Commerce, National Oceanic and Atmospheric Administration
- Website: www.gfdl.noaa.gov
- Location: Princeton, New Jersey
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/11219395?v=4
- Repositories: 47
- Last ynced at: 2023-08-13T13:41:07.559Z
- Profile URL: https://github.com/NOAA-GFDL
GitHub Events
Total
- Create event: 11
- Issues event: 10
- Watch event: 6
- Delete event: 12
- Member event: 1
- Issue comment event: 67
- Push event: 30
- Pull request review comment event: 34
- Pull request review event: 122
- Pull request event: 68
- Fork event: 9
Last Year
- Create event: 11
- Issues event: 7
- Watch event: 6
- Delete event: 12
- Member event: 1
- Issue comment event: 61
- Push event: 30
- Pull request event: 65
- Pull request review event: 119
- Pull request review comment event: 34
- Fork event: 9
Committers metadata
Last synced: 3 days ago
Total Commits: 1,251
Total Committers: 33
Avg Commits per committer: 37.909
Development Distribution Score (DDS): 0.854
Commits in past year: 46
Committers in past year: 9
Avg Commits per committer in past year: 5.111
Development Distribution Score (DDS) in past year: 0.587
| Name | Commits | |
|---|---|---|
| rheacangeo | 5****o | 183 |
| Jeremy McGibbon | j****m@v****m | 156 |
| Elynn Wu | e****0@g****m | 146 |
| Jeremy McGibbon | m****n@u****u | 126 |
| Florian Deconinck | d****n@g****m | 104 |
| Johann Dahm | j****d@v****m | 96 |
| Tobias Wicky | w****b@g****m | 64 |
| eddie-c-davis | 2****s | 60 |
| Rhea George | R****G@R****l | 50 |
| oelbert | o****6@g****m | 48 |
| Chris Kung | c****g@n****v | 42 |
| Oliver Fuhrer | o****r | 36 |
| dependabot[bot] | 4****] | 30 |
| Frank Malatino | 1****o | 29 |
| Roman Cattaneo | r****c | 19 |
| MiKyung Lee | 5****3 | 10 |
| ajdas1 | a****1@g****m | 9 |
| Noah D Brenowitz | n****2@g****m | 6 |
| Mark Cheeseman | M****C@v****m | 5 |
| Oliver Watt-Meyer | o****m@v****m | 5 |
| Janice Kim | J****m@n****v | 4 |
| Spencer Clark | s****k@g****m | 4 |
| dependabot-preview[bot] | 2****] | 4 |
| Brian Henn | b****n@a****g | 4 |
| Eddie Davis | e****d@v****m | 2 |
| Charles Kropiewnicki | 7****p | 2 |
| Ryan Mulhall | 3****6 | 1 |
| Tom Robinson | 3****n | 1 |
| Xingqiu Yuan | x****n@n****v | 1 |
| Anna Kwa | a****k@v****m | 1 |
| and 3 more... | ||
Committer domains:
- vulcan.com: 6
- noaa.gov: 2
- student.ethz.ch: 1
- allenai.org: 1
- nasa.gov: 1
- uw.edu: 1
Issue and Pull Request metadata
Last synced: 11 days ago
Total issues: 38
Total pull requests: 171
Average time to close issues: 2 months
Average time to close pull requests: 12 days
Total issue authors: 10
Total pull request authors: 11
Average comments per issue: 0.74
Average comments per pull request: 1.45
Merged pull request: 131
Bot issues: 0
Bot pull requests: 0
Past year issues: 7
Past year pull requests: 79
Past year average time to close issues: 6 days
Past year average time to close pull requests: 6 days
Past year issue authors: 5
Past year pull request authors: 9
Past year average comments per issue: 0.57
Past year average comments per pull request: 1.82
Past year merged pull request: 54
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- FlorianDeconinck (10)
- oelbert (7)
- fmalatino (7)
- bensonr (5)
- xyuan (3)
- mlee03 (2)
- jjuyeonkim (1)
- cponder (1)
- thomas-robinson (1)
- rem1776 (1)
Top Pull Request Authors
- fmalatino (59)
- romanc (32)
- FlorianDeconinck (22)
- oelbert (20)
- mlee03 (18)
- jjuyeonkim (10)
- CharlesKrop (4)
- lharris4 (2)
- xyuan (2)
- thomas-robinson (1)
- rem1776 (1)
Top Issue Labels
- enhancement (7)
- todo (2)
- question (2)
- documentation (1)
- good first issue (1)
Top Pull Request Labels
Package metadata
- Total packages: 2
- Total downloads: unknown
- Total dependent packages: 0 (may contain duplicates)
- Total dependent repositories: 0 (may contain duplicates)
- Total versions: 6
proxy.golang.org: github.com/noaa-gfdl/pace
- Homepage:
- Documentation: https://pkg.go.dev/github.com/noaa-gfdl/pace#section-documentation
- Licenses: apache-2.0
- Latest release: v0.6.0 (published almost 5 years ago)
- Last Synced: 2025-12-24T04:06:55.039Z (3 days ago)
- Versions: 3
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 5.395%
- Average: 5.576%
- Dependent repos count: 5.758%
proxy.golang.org: github.com/NOAA-GFDL/pace
- Homepage:
- Documentation: https://pkg.go.dev/github.com/NOAA-GFDL/pace#section-documentation
- Licenses: apache-2.0
- Latest release: v0.6.0 (published almost 5 years ago)
- Last Synced: 2025-12-24T04:06:54.923Z (3 days ago)
- Versions: 3
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 5.395%
- Average: 5.576%
- Dependent repos count: 5.758%
Score: -Infinity