Skip to content

support concurrent coupling step #1700

@juliasloan25

Description

@juliasloan25

Right now, we only support sequential component model stepping. We may see improved performance if we switch to concurrent/parallel component stepping.

Note that because of the land/atmosphere ordering restriction, and the comparative costs of each component, this will probably only result in speedup of CMIP, not AMIP.

Restrictions

Currently, the integrated land model computes fluxes implicitly as part of its step (whereas for other surface models, surface fluxes are computed explicitly before each step). This imposes an ordering in the step_model_sims! function and prevents parallelization of the atmosphere and land steps. This is conveyed by labeling the ClimaLandSimulation as a subtype of the AbstractImplicitFluxSimulation abstract type.

We will eventually have the same restriction for sea ice but don't yet.

Approach

  • Link atmosphere and land in a sub-stepped model, since their timesteps are similar and they can't be stepped in parallel
  • Instead of the for loop in step_model_sims!, we should spawn 3 threads: @spawn atmos/land step, @spawn ocean step, and @spawn ice step
  • We should add a flag to the config options so we can choose which timestepping scheme we want to use - e.g. coupler_timestepping with options explicit or concurrent
  • Test out performance gains by comparing CMIP SYPD between the two timestepping options, given the same compute resources

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions