Before pre-betting table: Name in parenthesis means, proposed by this person.
After pre-betting table: Name in parenthesis means taking the lead in shaping. Please involve the right people or distribute the work.
## Blue line
- Continue benchmarking on Pre-Alps (Abishek, Sam, Will)
- Performance optimizations for fused stencils (Christoph)
- measure and understand performance
- including possible optimizations in GT4Py
- Explore viability of other optimization options discussed with nvidia (Christoph)
- Integrate diffusion Python granule into Fortran ICON (Magdalena, Sam, Abishek)
- Test `py2f` with larger stencils (granules), improve test coverage, and benchmark execution from Fortran (with benchmarking). -> .
- Update of `icon-dsl` to pull upstream changes, including `nblocks_e` and new license info. (Christoph, Abishek)
- Refactor `icon4pygen` to make it production ready (Christoph, Sam)
- Finish fused stencils (Christoph)
- ~~Use [`ruff`](https://docs.astral.sh/ruff/) for pre-commit and QA pipeline in `icon4py` and `icon4pytools`, to improve developer experience and QA runtime (Sam)~~ Done
## Green line
- Research: Python model architecture (Magdalena)
- IO system: requirements and first implementation
- Concept MVP: what features does it need? architecture draft
- stencil ports (Magdalena):
- finish interpolation (with exception of RBF)
- 2 more stencils and projections(-> pygmt or similar)
- metrics: remaining metrics fields for diffusion (and the ones used in dycore that come there with)
- consolidate test configuration: test configuration and setup has grown and is not handled in a consistent way troughout the repository. (Magdalena)
- use same commandline options, configuration fixtures throughout
- use icon-grid from grid file in `not datatests`
- test hierarchy: do we need more refined test suits for CI (speedup)
## GT4Py
- jax pytree-like: for tuples, structs, mesh, expandable parameters (Hannes)
- Workflowify toolchain (Hannes)
- cleanups/concepts: (Hannes)
- hierarchy of Field, NDArray implementation, etc
- dimensions and offsets
- each dimension should be a generator of an offset
- E2V vs E2VDim is a concept discussion
- [E2V_0, E2V_1] == E2V
- constant fields and gtx.int32, etc (Hannes) `gtx.int32(1) < field` or ufuncs or https://wrapt.readthedocs.io/en/master/wrappers.html#object-proxy
- `concat_where(k % 2 == 0, foo, bar)` `1 < k & k < ksize`
- [ 0 1 0 1 0 1 0 1]
- [-0 -1 -2 -3]
- [ 0 1 2 3 4 5 6 7]
- [[0][-1][2][-3][4]]
- as_offset
- multi-dimension
- Batch of cleanups (related to concepts above, Hannes):
- NamedTuple instead tuple for NamedRange (to allow attribute access)
- ...
- program -> fieldop call `domain` kwarg with same syntax as allowed in `domain()`
- Field[Dims[]] variadic
- ~~Runtime (contrary to compile time) Optimizations:~~ shape in the blueline project(Till)
- Play with torus grid for strided access (Magdalena, Ioannis)
- Minimal combined IR (Till)
- Performance & compile time regression testing (Till)
- Index access in local dimension (Hannes, if time)
## DaCe
- Optimize nabla4 with DaCe starting from jax/field view (Philip, Edoardo)
- Continue investigating halo exchanges with DaCe for diffusion (Christos, Edoardo)