diff --git a/README.md b/README.md index 3996801d..3554660c 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,18 @@ +[![Lint](https://github.com/NOAA-GFDL/NDSL/actions/workflows/lint.yaml/badge.svg?branch=develop)](https://github.com/NOAA-GFDL/NDSL/actions/workflows/lint.yaml) +[![Unit tests](https://github.com/NOAA-GFDL/NDSL/actions/workflows/unit_tests.yaml/badge.svg?branch=develop)](https://github.com/NOAA-GFDL/NDSL/actions/workflows/unit_tests.yaml) + # NOAA/NASA Domain Specific Language middleware -NDSL is a middleware for climate and weather modelling developped conjointment by NOAA and NASA. The middleware brings together [GT4Py](https://github.com/GridTools/gt4py/) (the `cartesian` flavor), an ETH CSCS's stencil DSL, and [DaCE](https://github.com/spcl/dace/), an ETH SPCL's data flow framework, both developped for high-performance and portability. On top of those pillars, NDSL deploys a series of optimized APIs for common operations (Halo exchange, domain decomposition, MPI...) and a set of bespoke optimizations for the models targeted by the middleware. +NDSL is a middleware for climate and weather modelling developed jointly by NOAA and NASA. The middleware brings together [GT4Py](https://github.com/GridTools/gt4py/) (the `cartesian` flavor), ETH CSCS's stencil DSL, and [DaCE](https://github.com/spcl/dace/), ETH SPCL's data flow framework, both developed for high-performance and portability. On top of those pillars, NDSL deploys a series of optimized APIs for common operations (Halo exchange, domain decomposition, MPI...), a set of bespoke optimizations for the models targeted by the middleware and tools to port existing models. ## Battery-included for FV-based models -Historically NDSL was developed to port the FV3 dynamical core on the cube-sphere. Therefore, the middleware ships with ready-to-execute specilization for models based on cube-sphere grid and FV-based model in particular. +Historically NDSL was developed to port the FV3 dynamical core on the cube-sphere. Therefore, the middleware ships with ready-to-execute specialization for models based on cube-sphere grid and FV-based model in particular. ## Quickstart +Recommended Python is `3.11.x` all other dependencies will be pulled during install. + NDSL submodules `gt4py` and `dace` to point to vetted versions, use `git clone --recurse-submodule`. NDSL is __NOT__ available on `pypi`. Installation of the package has to be local, via `pip install ./NDSL` (`-e` supported). The packages has a few options: @@ -19,3 +24,32 @@ Tests are available via: - `pytest -x test`: running CPU serial tests (GPU as well if `cupy` is installed) - `mpirun -np 6 pytest -x test/mpi`: running CPU parallel tests (GPU as well if `cupy` is installed) + +## Requirements & supported compilers + +For CPU backends: + +- 3.11.x >= Python < 3.12.x +- Compilers: + - GNU 11.2+ +- Libraries: + - Boost headers 1.76+ (no lib installed, just headers) + +For GPU backends (the above plus): + +- CUDA 11.2+ +- Python package: + - `cupy` (latest with proper driver support [see install notes](https://docs.cupy.dev/en/stable/install.html)) +- Libraries: + - MPI compiled with cuda support + +## Development + +TBD: Code/contribution guideline + +TBD: Documentation + +Point of Contacts: + +- NOAA: Rusty Benson: rusty.benson -at- noaa.gov +- NASA: Florian Deconinck florian.g.deconinck -at- nasa.gov diff --git a/ndsl/stencils/__init__.py b/ndsl/stencils/__init__.py index 641e032a..cbbd3f82 100644 --- a/ndsl/stencils/__init__.py +++ b/ndsl/stencils/__init__.py @@ -1,4 +1,3 @@ -from .c2l_ord import CubedToLatLon from .corners import CopyCorners, CopyCornersXY, FillCornersBGrid diff --git a/setup.py b/setup.py index c0d71813..d81523d1 100644 --- a/setup.py +++ b/setup.py @@ -50,6 +50,6 @@ def local_pkg(name: str, relative_path: str) -> str: packages=find_namespace_packages(include=["ndsl", "ndsl.*"]), include_package_data=True, url="https://github.com/NOAA-GFDL/NDSL", - version="0.0.0", + version="2024.03.01", zip_safe=False, )