---
# System prepended metadata

title: '[Blueline] Py2F infrastructure: Verification, CI/CD on alps/balfrin, muli-process runs'
tags: [cycle 23 - 07/24]

---

# [Blueline] Py2F infrastructure: Verification, CI/CD on alps/balfrin, muli-process runs

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

- Shaped by: Christoph, Sam, (Anurag?)
- Appetite (FTEs, weeks): 1 cycle
- Developers: <!-- Filled in at the betting table unless someone is specifically required here -->

## Problem

Currently missing:
* Way to verify each run of a granule against Fortran OpenACC
* Building icon-exclaim with the granule in one step (scripts, spack recipe)
* jenkins/(gitlab?) CI/CD on balfrin/santis based on venv
* successful verification of diffusion granule with multiple GPU

## Appetite
1 cycle

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

Verification and debugging approach:

- Re-use verification interface (`verify_field`) of Liskov blue line integration.
- Probtest after the full experiment
- Document the way we do verification.
- Test the (ITIR -> dace) backend instead of (ITIR -> gtfn)
- Build recipe based on uvenv
    - spack based?
    - non-spack based?
    - both?
- jenkins CI/CD on balfrin
    - verification mode (compare granule at every execution to Fortran)
    - substitution mode (only execute icon4py granule, probtest)
    - gitlab on santis?
- Switch from mch_ch_r04b09 to small production experiments of MCH (icon1, icon2, kenda1)
- successfully verify diffusion granule for multiple GPUs (MCH production and aquaplanet)

## Rabbit holes
<!-- Details about the solution worth calling out to avoid problems -->
Do not try to replicate any workflow and data processing platform. Keep it simple.

## No-gos

No performance optimizations yet.
## Progress
<!-- Don't fill during shaping. This area is for collecting TODOs during building. As 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. -->

- [x] Task 1 ([PR#xxxx](https://github.com/GridTools/gt4py/pulls))
    - [x] Subtask A
    - [x] Subtask X
- [ ] Task 2
    - [x] Subtask H
    - [ ] Subtask J
- [ ] Discovered Task 3
    - [ ] Subtask L
    - [ ] Subtask S
- [ ] Task 4

