owned this note
owned this note
Published
Linked with GitHub
# Workshop: Architecture for Models with GT4Py
:::success
- Minutes: https://hackmd.io/@gridtools/HyE8uJkSC/edit
- Slides (password: the slack channel name without `#`): https://polybox.ethz.ch/index.php/s/SZUHMAYJbsWn0mQ
:::
Informal workshop for people who are developing/contributing to (or developed in the past) the architecture for models with GT4Py. We assume advanced knowledge of (one version of) GT4Py in the context of writing full applications.
## Location
June 6th and 7th 2024
```
Andreasturm
Andreasstrasse 5 (next to train station Oerlikon)
Zürich, 8050
14th floor, room S15
```
Zoom: https://cscs.zoom.us/my/cscsvrlily
## Attendees
If you are not yet in the list, please register at https://forms.office.com/e/XG1ExJhM3p.
- Jeremy McGibbon (AI2, Pace)
- Mauro Bianco (CSCS-ETH, GT4Py)
- Enrique Gonzalez Paredes (CSCS-ETH, GT4Py)
- Hannes Vogt (CSCS-ETH, GT4Py)
- Sara Faghih-Naini (ECMWF, PMAP)
- Christian Kühnlein (ECMWF, PMAP)
- Stefano Ubbiali (ETH, PMAP)
- Magdalena Luz (EXCLAIM-ETH, ICON)
- Chia Rui Ong (EXCLAIM-ETH, ICON)
- Xavier Lapillonne (MeteoSwiss, ICON)
- Christoph Müller (MeteoSwiss, ICON)
- Loïc Maurin (Meteo France, AROME)
- Rusty Benson (NOAA, Pace)
- Oliver Elbert (NOAA, Pace)
- Mikael Stellio (MCH, ICON) ?
- Arash Hamzehloo (?)
### Remote
- Florian Deconinck (NASA, Pace)
## Goals
Exchange among implementers of models using GT4Py:
- Inform each other about approaches and tools used for implementing the model; discuss their value and possible future directions
- Discuss strategies for writing (maintainable, modifiable, understandable) model code using those tools
- Identify if their is value/interest in the different groups to use a common strategy and common support libraries for developing the models
## Preparation
**Before the workshop please prepare the following**
To get to know each other, every attendee introduces themself and presents one or more interesting points of working with GT4Py (e.g. patterns or antipatterns on how to use GT4Py, sorely missing GT4Py features, …). (Max. 5 mins per person).
## Provisional Agenda
Time slots in the agenda are not meant to be strict but just a reference for guiding the discussion of the topics.
### Thursday 6th June: 9:00 to 17:00
- **9:00 - 9:30** Welcome coffee
- **9:30 - 11:00** Warmup session and introductions
To get to know each other, every attendee introduces themself and presents one or more interesting points of working with GT4Py (e.g. patterns or antipatterns on how to use GT4Py, sorely missing GT4Py features, ...). (Max. 5 mins per person).
- **11:00 - 11:15** Coffee break
- **11:15 - 12:30** Current infrastructure & support libraries
- PMAP infrastructure (~30 mins)
- NDSL infrastructure ([NOAA/NASA Domain Specific Language middleware](https://github.com/NOAA-GFDL/NDSL)) (~45 mins)
- ICON4Py infrastructure with Python driver (green-line)) (15 mins)
- **12:30 - 13:30** Lunch
<!--
- **13:30 - 15:00** Future requirements
- How to integrate other components written with machine learning frameworks
- Integration with other libraries in the Python scientific ecosystem
- Wishlist of tools & libraries that we would like to use together with GT4Py
-->
- **13:30 - 15:00** Strategies for writing maintainable weather models
- Flexible architectures and useful design patterns
- Interoperability with other software components
- key libraries of the scientific Python ecosystem
- ML frameworks
- Legacy CF frameworks in Fortran
- **15:00 - 15:30** Coffee break
- **15:30 - 16:30** Open discussion
- Are we already using maintainable designs and practices in our current projects/prototypes?
- Are we already duplicating work which could be easily shared?
- Which features should be moved to core GT4Py? Which features should be in a shared support library?
- How can we share utilities across GT4Py versions (`cartesian` & `next`)?
- Other topics
- **16:30 - 17:00** Plan topics for day 2
- Maybe informal dinner together?
### Friday 7th June: 9:00 to 13:00
Let's flexibly decide if we talk about the topics proposed here or if we should deepen the discussion of the first day. Possibly create break-out sessions for the topics.
- **9:00 - 9:15** Coffee
- **9:15 - 10:30** Multi-node GT4Py?
- How are we doing things today? (explicit MPI or halo exchange library calls)
- Examples from Pace/PMAP/icon4py
- Sketch the vision for a multi-node aware GT4Py API
- **10:30 - 11:00** Coffee break
- **11:00 - 12:30** Using GT4Py for physical parametrizations
- What are common physical patterns that GT4Py (`cartesian` and `next`) currently does not support properly or at all?
- What is the interface we wish for?
- ...
### New Friday
- **9:15** Jeremy's summary
- **10:00** Shared Libraries
- **11:00** Physics
## Discussion points
If there are any topics you would like to discuss and are not covered in the agenda, please add them here.
- Physics
- Multinode GT4Py
- Interfacing with Fortran
- Composing components
- Layers
- Shared Libraries
- Flavors of GT4Py
- What belongs to GT4Py?
- Autodiff