---
# System prepended metadata

title: '[Blueline] Py2F: Support multinode runs and dycore'
tags: [cycle22]

---

# [Blueline] Py2F: Support multinode runs and dycore

<!-- Add the tag for the current cycle number in the top bar -->

- Shaped by: Sam, Abishek
- Appetite (FTEs, weeks): Full-cycle
- Developers:

## Problem
<!-- The raw idea, a use case, or something we’ve seen that motivates us to work on this -->

In order to run full-scale simulations multi-node runs need to be supported in Py2F via GHEX. This project is a continuation of the work done in cycle 21 to fully support multi-node runs and verify results from such runs. Furthermore after diffusion the next step is to support calling the dycore from ICON, however a wrapper for the dycore is missing and the current dycore in icon4py needs to be adapted to work with py2f.

## Appetite
<!-- Explain how much time we want to spend and how that constrains the solution -->
Full-cycle 

## Solution
<!-- The core elements we came up with, presented in a form that’s easy for people to immediately understand -->

- Enabling multi-node runs:
  - Support running experiments on multiple nodes and be able to verify those (probtest, cdo). Currently runs on two cores with MPI on CPU framework.
      - Run on >2 cores and then multiple nodes (CPU)
  - Try multi-node runs on GPU
      -  Does GHEX work out of the box for GPU?
  - Measure overhead of multi-node runs 
      - Try possible speed ups. 

- Integrate dycore granule:
  - Run the ICON4Py Dycore using the GTFN GPU backend, ideally with an integration test (datatest) for that in the CI.
  - Write a Python interface for a dycore granule and create a unit test to test it from Python.
  - Use Py2F to generate corresponding bindings for the dycore wrapper.
  - Integrate this into Fortran, writing a Fortran call to Py2F bindings, passing all the correct parameters and arrays.
  - Verify dycore results.

## Rabbit holes
<!-- Details about the solution worth calling out to avoid problems -->
[Fill in any potential complications or areas where additional attention may be needed]

## No-gos
<!-- Anything specifically excluded from the concept: functionality or use cases we intentionally aren’t covering to fit the appetite or make the problem tractable -->
[Fill in any functionalities or use cases intentionally excluded]

## Progress
<!-- Don't fill during shaping. This area is for collecting TODOs during building. As the first task during building, add a preliminary list of coarse-grained tasks for the project and refine them with finer-grained items when it makes sense as you work on them. -->
[This section will be filled during the project implementation phase]

- [x] Run ICON4Py Dycore using GTFN GPU backend (after several fixes)