Pace
A implementation of the FV3GFS / SHiELD atmospheric model developed by NOAA/GFDL using the GT4Py domain-specific language in Python.
https://github.com/ai2cm/pace
Category: Atmosphere
Sub Category: Atmospheric Composition and Dynamics
Keywords
climate-modeling hpc python
Keywords from Contributors
measuring transformations compose archives observation reporter water numeric sharing animations
Last synced: about 14 hours ago
JSON representation
Repository metadata
Implementation of the FV3GFS / SHiELD atmospheric model in Python
- Host: GitHub
- URL: https://github.com/ai2cm/pace
- Owner: ai2cm
- License: apache-2.0
- Created: 2021-08-02T22:05:11.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-04-23T15:27:34.000Z (about 1 year ago)
- Last Synced: 2024-10-29T20:38:05.485Z (6 months ago)
- Topics: climate-modeling, hpc, python
- Language: Python
- Homepage: https://ai2cm.github.io/pace/
- Size: 19.1 MB
- Stars: 37
- Watchers: 7
- Forks: 12
- Open Issues: 21
- Releases: 2
-
Metadata Files:
- Readme: README.md
- Changelog: changed_from_main.py
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
README.md
Pace
⚠️ READ-ONLY REPOSITORY ⚠️
Original development until
v0.2
was executed under AI2 patronage. Maintenance and further development has been taken over by NOAA-GFDL and can be reached here.
Pace is an implementation of the FV3GFS / SHiELD atmospheric model developed by NOAA/GFDL using the GT4Py domain-specific language in Python. The model can be run on a laptop using Python-based backend or on thousands of heterogeneous compute nodes of a large supercomputer.
Full Sphinx documentation can be found at https://ai2cm.github.io/pace/.
Quickstart - bare metal
Build
Pace requires GCC > 9.2, MPI, and Python 3.8 on your system, and CUDA is required to run with a GPU backend. You will also need the headers of the boost libraries in your $PATH
(boost itself does not need to be installed).
cd BOOST/ROOT
wget https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/boost_1_79_0.tar.gz
tar -xzf boost_1_79_0.tar.gz
mkdir -p boost_1_79_0/include
mv boost_1_79_0/boost boost_1_79_0/include/
export BOOST_ROOT=BOOST/ROOT/boost_1_79_0
When cloning Pace you will need to update the repository's submodules as well:
git clone --recursive https://github.com/ai2cm/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.
python3 -m venv venv_name
source venv_name/bin/activate
Inside of your pace venv
or conda environment pip install the Python requirements, GT4Py, and Pace:
pip3 install -r requirements_dev.txt -c constraints.txt
Shell scripts to install Pace on specific machines such as Gaea can be found in examples/build_scripts/
.
Run
With the environment activated, you can run an example baroclinic test case with the following command:
mpirun -n 6 python3 -m pace.driver.run driver/examples/configs/baroclinic_c12.yaml
# or with oversubscribe if you do not have at least 6 cores
mpirun -n 6 --oversubscribe python3 -m pace.driver.run driver/examples/configs/baroclinic_c12.yaml
After the run completes, you will see an output direcotry output.zarr
. An example to visualize the output is provided in driver/examples/plot_output.py
. See the driver example section for more details.
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 python3 -m pace.driver.run /pace/driver/examples/configs/baroclinic_c12.yaml
Running translate tests
See the translate tests section for more information.
Repository structure
The top-level directory contains the main components of pace such as the dynamical core, the physical parameterizations and utilities.
This git repository is laid out as a mono-repo, containing multiple independent projects. Because of this, it is important not to introduce unintended dependencies between projects. The graph below indicates a project depends on another by an arrow pointing from the parent project to its dependency. For example, the tests for fv3core should be able to run with only files contained under the fv3core and util projects, and should not access any files in the driver or physics packages. Only the top-level tests in Pace are allowed to read all files.
ML emulation
An example of integration of an ML model replacing the microphysics parametrization is available on the feature/microphysics-emulator
branch.
Owner metadata
- Name: ai2cm
- Login: ai2cm
- Email:
- Kind: organization
- Description: AI2 Climate Modeling
- Website: https://allenai.org/climate-modeling
- Location: Seattle WA, USA
- Twitter: ai2_climate
- Company:
- Icon url: https://avatars.githubusercontent.com/u/55798839?v=4
- Repositories: 26
- Last ynced at: 2023-03-03T19:43:00.047Z
- Profile URL: https://github.com/ai2cm
GitHub Events
Total
- Fork event: 1
Last Year
- Fork event: 1
Committers metadata
Last synced: 4 days ago
Total Commits: 1,118
Total Committers: 29
Avg Commits per committer: 38.552
Development Distribution Score (DDS): 0.847
Commits in past year: 1
Committers in past year: 1
Avg Commits per committer in past year: 1.0
Development Distribution Score (DDS) in past year: 0.0
Name | Commits | |
---|---|---|
rheacangeo | 5****o | 171 |
Jeremy McGibbon | j****m@v****m | 156 |
Elynn Wu | e****0@g****m | 146 |
Jeremy McGibbon | m****n@u****u | 87 |
Tobias Wicky | w****b@g****m | 64 |
eddie-c-davis | 2****s | 60 |
Johann Dahm | j****d@v****m | 60 |
FlorianDeconinck | d****n@g****m | 52 |
Rhea George | R****G@R****l | 50 |
Jeremy McGibbon | j****m@a****g | 39 |
oelbert | o****6@g****m | 36 |
Johann Dahm | j****m@g****m | 36 |
Oliver Fuhrer | o****r | 36 |
Chris Kung | c****g@n****v | 31 |
dependabot[bot] | 4****] | 30 |
Christopher Kung | 6****g | 11 |
ajdas1 | a****1@g****m | 9 |
Rhea George | r****g@v****m | 8 |
Noah D Brenowitz | n****2@g****m | 6 |
Oliver Watt-Meyer | o****m@v****m | 5 |
Mark Cheeseman | M****C@v****m | 5 |
Rhea George | r****g@a****g | 4 |
dependabot-preview[bot] | 2****] | 4 |
Spencer Clark | s****k@g****m | 4 |
Brian Henn | b****n@a****g | 3 |
Eddie Davis | e****d@v****m | 2 |
Anna Kwa | a****k@v****m | 1 |
brianhenn | b****n@g****m | 1 |
yniederm | y****n@s****h | 1 |
Committer domains:
- vulcan.com: 7
- allenai.org: 3
- student.ethz.ch: 1
- nasa.gov: 1
- uw.edu: 1
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 22
Total pull requests: 92
Average time to close issues: 3 months
Average time to close pull requests: 8 days
Total issue authors: 7
Total pull request authors: 8
Average comments per issue: 1.5
Average comments per pull request: 1.53
Merged pull request: 27
Bot issues: 0
Bot pull requests: 53
Past year issues: 0
Past year pull requests: 0
Past year average time to close issues: N/A
Past year average time to close pull requests: N/A
Past year issue authors: 0
Past year pull request authors: 0
Past year average comments per issue: 0
Past year average comments per pull request: 0
Past year merged pull request: 0
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- jdahm (8)
- elynnwu (4)
- FlorianDeconinck (4)
- mcgibbon (2)
- brianhenn (2)
- miaoneng (1)
- twicki (1)
Top Pull Request Authors
- dependabot[bot] (53)
- elynnwu (9)
- jdahm (9)
- mcgibbon (7)
- twicki (6)
- FlorianDeconinck (6)
- ajdas1 (1)
- oelbert (1)
Top Issue Labels
- refactor (6)
- enhancement (5)
- bug (3)
- question (2)
Top Pull Request Labels
- dependencies (53)
- blocked (2)
- duplicate (1)
Package metadata
- Total packages: 1
-
Total downloads:
- pypi: 136 last-month
- Total dependent packages: 0
- Total dependent repositories: 2
- Total versions: 3
- Total maintainers: 4
pypi.org: pace-util
- Homepage: https://github.com/ai2cm/pace
- Documentation: https://pace-util.readthedocs.io/
- Licenses: BSD license
- Latest release: 0.9.0 (published almost 3 years ago)
- Last Synced: 2025-04-25T12:09:41.726Z (1 day ago)
- Versions: 3
- Dependent Packages: 0
- Dependent Repositories: 2
- Downloads: 136 Last month
-
Rankings:
- Dependent packages count: 7.31%
- Downloads: 10.198%
- Average: 10.255%
- Forks count: 10.554%
- Stargazers count: 11.417%
- Dependent repos count: 11.798%
- Maintainers (4)
Dependencies
- python 3.8.13-bullseye@sha256 build
- ubuntu 20.04@sha256 build
- cftime * development
- dace >=0.14 development
- dask >=2021.10.0 development
- f90nml >=1.1.0 development
- fv3config >=0.9.0 development
- mpi4py * development
- nbmake * development
- netCDF4 * development
- numpy >=1.15 development
- pytest * development
- pytest-cov * development
- pytest-profiling * development
- pytest-regressions * development
- pytest-subtests * development
- xarray * development
- zarr * development
- recommonmark *
- sphinx >=1.4
- sphinx-argparse *
- sphinx-gallery *
- sphinx_rtd_theme *
- pre-commit *
- appdirs >=1.4.0
- bump2version *
- coverage *
- dask >=2021.10.0
- f90nml >=1.1.0
- flake8 ==3.8.4
- gcsfs >=0.7.0
- google-cloud-storage *
- h5netcdf *
- h5py >=2.10.0
- mypy ==0.790
- numcodecs >=0.7.2
- numpy >=1.15.
- pytest-cov *
- pytest-subtests *
- sphinx_rtd_theme *
- toolz *
- tox *
- wheel *
Score: 12.383565898134155