Skip to content
Snippets Groups Projects
user avatar
authored
Name Last commit Last update
src
tests
.gitignore
INSTALL.md
Overview.md
README.md

ELM Kernels

Kernels lifted from ELM, enucleated of their data structures, and then re-wrapped in a variety of drivers.

To build, see INSTALL.md in the top level directory.

ELM modules covered:

CanopyHydrologyMod

Kernels include:

  • Interception: partitions incoming precip into throughfall/precip
  • Fraction Wet/Dry: identifies fraction of LAI that is wet and dry
  • SnowWater: deals with a bunch of water balance aspects of the snowpack
  • Fraction H2O on the surface: partitions water streams between surface and soil column

Work Plan

Single kernel and single grid cell tests/questions:

  • how do we write kernels such that they can be called by: (Ethan)

    • fortran
    • c
    • Legion
    • Kokkos
  • how do we wrap a kernel for Legion (Himanshu)

    • sequence of blocked tasks
    • sequence of non-blocked tasks (based on futures)

Single kernel and multiple grid cell tests/questions: (Himanshu / Ethan)

  • work out how to use IndexSpace/FieldSpace

Multiple kernel and multiple grid cell tests (module test): (Ethan / Himanshu)

  • IndexSpace/FieldSpace + actual task graph that isn't trivial

Module level part 2: (Dali / Ethan / Himanshu)

  • Implement driver with ACTUAL ELM data layout (with filter / lake PFTs / ???) (masking??)
  • compare alternative data layouts
    • ragged layouts (no filter)
    • fixed layout with no filter (maybe better for threading models e.g. GPUs?)

automation...

  • automated kernel generation
  • automated C kernel wrapper
  • automated Legion wrappers?

and beyond...

  • integrate with ATS