gridtools

Libraries and utilities to develop performance portable applications for weather and climate.

https://github.com/gridtools/gridtools

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    3 of 46 committers (6.5%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.3%) to scientific vocabulary
Last synced: 7 months ago · JSON representation ·

Repository

Libraries and utilities to develop performance portable applications for weather and climate.

Basic Info
Statistics
  • Stars: 66
  • Watchers: 12
  • Forks: 23
  • Open Issues: 17
  • Releases: 32
Created over 12 years ago · Last pushed 12 months ago
Metadata Files
Readme License Citation Authors

README.md



License: BSD Gitpod Ready-to-Code

The GridTools framework is a set of libraries and utilities to develop performance portable applications in the area of weather and climate. To achieve the goal of performance portability, the user-code is written in a generic form which is then optimized for a given architecture at compile-time. The core of GridTools is the stencil composition module which implements a DSL embedded in C++ for stencils and stencil-like patterns. Further, GridTools provides modules for halo exchanges, boundary conditions, data management and bindings to C and Fortran.

GridTools is successfully used to accelerate the dynamical core of the COSMO model with improved performance on CUDA-GPUs compared to the current official version, demonstrating production quality and feature-completeness of the library for models on lat-lon grids. The GridTools-based dynamical core is shipped with COSMO v5.7 and later, see release notes COSMO v5.7.

Although GridTools was developed for weather and climate applications it might be applicable for other domains with a focus on stencil-like computations.

A detailed introduction can be found in the documentation.

Installation instructions

git clone https://github.com/GridTools/gridtools.git cd gridtools mkdir -p build && cd build cmake .. make -j8 make test

For choosing the compiler, use the standard CMake techniques, e.g. setting the environment variables CXX=`which g++` # full path to the C++ compiler CC=`which gcc` # full path to theC compiler FC=`which gfortran` # full path to theFortran compiler CUDACXX=`which nvcc` # full path to NVCC CUDAHOSTCXX=`which g++` # full path to the C++ compiler to be used as CUDA host compiler

Requirements
  • C++17 compiler (see also list of tested compilers)
  • CMake (3.21.0 or later)
  • CUDA Toolkit (11.0 or later, optional)
  • MPI (optional, CUDA-aware MPI for the GPU communication module gcl_gpu)

Supported compilers

The GridTools libraries are currently nightly tested with the following compilers on CSCS supercomputers.

| Compiler | Backend | Tested on | Comments | | --- | --- | --- | --- | | Cray clang version 12.0.3 | all backends | Piz Daint | P100 GPU | with Clang-CUDA | Cray clang version 10.0.2 + NVCC 11.2 | all backends | Piz Daint | P100 GPU | | Cray clang version 12.0.3 | all backends | Piz Daint | with -std=c++20 | GNU 11.2.0 + NVCC 11.0 | all backends | Piz Daint | P100 GPU | | GNU 11.2.0 + NVCC 11.2 | all backends | Dom | P100 GPU | | GNU 8.3.0 + NVCC 11.2 | all backends | Tsa | V100 GPU |

Known issues
  • CUDA 11.0.x has a severe issue, see https://github.com/GridTools/gridtools/issues/1522. Under certain conditions, GridTools code will not compile for this version of CUDA. CUDA 11.1.x and later should not be affected by this issue.
  • CUDA 12.1, 12.2, 12.3, 12.4 have various issues related to constexpr, see https://github.com/GridTools/gridtools/issues/1766. We recommend CUDA 12.5 or later.
  • Cray Clang version 11.0.0 has a problem with the gridtools::tuple conversion constructor, see https://github.com/GridTools/gridtools/issues/1615.
Partly supported (expected to work, but not tested regularly)

| Compiler | Backend | Date | Comments | | --- | --- | --- | --- | | Intel 19.1.1.217 | all backends | 2021-09-30 | with cmake . -DCMAKE_CXX_FLAGS=-qnextgen | | NVHPC 23.3 | all backends | 2023-04-20 | only compilation is tested regularly in CI | | ROCm 6.0.3 | all backends | 2024-09-24 | tested on AMD MI250X (LUMI) |

Contributing

Contributions to the GridTools framework are welcome. Please open an issue for any bugs that you encounter or provide a fix or enhancement as a PR. External contributions to GridTools require us a signed copy of a copyright release form to ETH Zurich. We will contact you on the PR.

Owner

  • Name: GridTools
  • Login: GridTools
  • Kind: organization

Citation (CITATION.cff)

# YAML 1.2
---
authors: 
  -
    affiliation: "Swiss National Supercomputing Centre, ETH Zurich, Lugano, Switzerland"
    family-names: Afanasyev
    given-names: Anton
  -
    affiliation: "Swiss National Supercomputing Centre, ETH Zurich, Lugano, Switzerland"
    family-names: Bianco
    given-names: Mauro
  -
    affiliation: "Swiss National Supercomputing Centre, ETH Zurich, Lugano, Switzerland"
    family-names: Mosimann
    given-names: Lukas
  -
    affiliation: "Federal Institute of Meteorology and Climatology MeteoSwiss, Zurich, Switzerland"
    family-names: Osuna
    given-names: Carlos
  -
    affiliation: "Swiss National Supercomputing Centre, ETH Zurich, Lugano, Switzerland"
    family-names: Thaler
    given-names: Felix
  -
    affiliation: "Swiss National Supercomputing Centre, ETH Zurich, Lugano, Switzerland"
    family-names: Vogt
    given-names: Hannes
  -
    affiliation: "Federal Institute of Meteorology and Climatology MeteoSwiss, Zurich, Switzerland and Vulcan Inc, Seattle, United States of America"
    family-names: Fuhrer
    given-names: Oliver
  -
    affiliation: "Swiss National Supercomputing Centre, ETH Zurich, Lugano, Switzerland"
    family-names: VandeVondele
    given-names: Joost
  -
    affiliation: "Swiss National Supercomputing Centre, ETH Zurich, Lugano, Switzerland and Institute for Theoretical Physics, ETH, Zurich, Switzerland"
    family-names: Schulthess
    given-names: "Thomas C."
cff-version: "1.1.0"
doi: "10.1016/j.softx.2021.100707"
keywords: 
  - "C++"
  - Weather
  - Climate
  - Library
  - "Embedded DSL"
license: "BSD-3-Clause"
message: "If you use this software, please cite it using these metadata."
repository-code: "https://github.com/GridTools/gridtools"
title: "GridTools: A framework for portable weather and climate applications"
...

GitHub Events

Total
  • Create event: 8
  • Issues event: 4
  • Release event: 4
  • Watch event: 5
  • Delete event: 3
  • Issue comment event: 53
  • Push event: 68
  • Pull request review comment event: 30
  • Pull request review event: 37
  • Pull request event: 27
  • Fork event: 2
Last Year
  • Create event: 8
  • Issues event: 4
  • Release event: 4
  • Watch event: 5
  • Delete event: 3
  • Issue comment event: 53
  • Push event: 68
  • Pull request review comment event: 30
  • Pull request review event: 37
  • Pull request event: 27
  • Fork event: 2

Committers

Last synced: about 3 years ago

All Time
  • Total Commits: 5,460
  • Total Committers: 46
  • Avg Commits per committer: 118.696
  • Development Distribution Score (DDS): 0.786
Top Committers
Name Email Commits
Mauro Bianco m****o@c****h 1,167
Carlos Osuna C****a@g****m 1,084
Paolo Crosetto p****o@u****h 1,044
Lucas Benedicic b****c@c****h 436
Hannes Vogt h****s@h****e 288
Carlos Osuna c****a@e****h 283
Stefan Moosbrugger s****r@g****m 180
Paolo Crosetto c****o@g****r 165
Anton Afanasyev 3****f@u****m 157
Paolo Crosetto c****o@g****r 107
Paolo Crosetto c****o@g****r 95
Felix Thaler f****r@n****h 81
lukasm91 l****1@u****m 77
Felix Thaler t****r@c****h 67
Mauro Bianco m****o@g****m 35
cosunae c****a@m****h 34
Paolo Crosetto c****o@l****g 26
Eric Niebler e****r@b****g 24
Paolo Crosetto c****o@d****h 14
mbianco m****o@g****h 11
Paolo Crosetto c****o@g****r 10
Paolo Crosetto c****o@g****r 10
Stephen Trofinoff s****t@g****h 10
Stephen Trofinoff s****f@c****h 8
Péter Kardos k****4@h****m 7
Gabriella Ceci g****i@c****h 6
Paolo Crosetto c****o@d****h 4
Willem Deconinck w****k@m****m 3
Andrea Arteaga a****s@g****m 2
Fabian f****g@h****m 2
and 16 more...

Issues and Pull Requests

Last synced: 7 months ago

All Time
  • Total issues: 27
  • Total pull requests: 148
  • Average time to close issues: over 1 year
  • Average time to close pull requests: 22 days
  • Total issue authors: 8
  • Total pull request authors: 12
  • Average comments per issue: 2.67
  • Average comments per pull request: 4.12
  • Merged pull requests: 118
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 27
  • Average time to close issues: N/A
  • Average time to close pull requests: 5 days
  • Issue authors: 1
  • Pull request authors: 4
  • Average comments per issue: 0.0
  • Average comments per pull request: 2.89
  • Merged pull requests: 19
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • havogt (14)
  • anstaf (7)
  • fthaler (1)
  • fometeo (1)
  • avocino (1)
  • lukasm91 (1)
  • tehrengruber (1)
  • jdahm (1)
  • yaomingamd (1)
Pull Request Authors
  • havogt (95)
  • fthaler (47)
  • anstaf (13)
  • petiaccja (9)
  • iomaganaris (7)
  • msimberg (6)
  • lukasm91 (2)
  • edopao (2)
  • stubbiali (1)
  • egparedes (1)
  • dependabot[bot] (1)
  • DropD (1)
  • tehrengruber (1)
Top Labels
Issue Labels
triage: feature (6) triage: bug (5) module: common (3) module: stencil_composition (2) triage: enhancement (2) triage: external bug (2) module: CMake (1) triage: user protections (1) module: communication (1) module: CI (1)
Pull Request Labels
dependencies (1)

Dependencies

.github/workflows/cmake-configure.yml actions
  • actions/checkout v2 composite
.github/workflows/issues_to_board.yml actions
  • alex-page/github-project-automation-plus v0.2.4 composite
.github/workflows/tests.yml actions
  • actions/checkout v2 composite
docs_src/manuals/requirements.txt pypi
  • Sphinx *
  • sphinx-rtd-theme *
pyutils/requirements.txt pypi
  • matplotlib *
  • numpy *
  • python-dateutil *
.github/workflows/python-package-tests-and-deploy.yml actions
  • actions/checkout v2 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v2 composite
  • actions/upload-artifact v3 composite
  • pypa/gh-action-pypi-publish release/v1 composite
.python_package/pyproject.toml pypi