ESCOMP / ESCOMP/CTSM

Try to speed up SurfaceAlbedo

Open
#688 0 comments 0 reactions 0 assignees View on GitHub
enhancement performance
Dominant language
Fortran
Stars
352
Forks
361
Avg merge
2d 21h
Merged PRs (30d)
7

Description

From test `PFS.f09_g17.I2000Ctsm50NwpSpGswpGs.cheyenne_intel` from 64afc8a, one thing that stands out is the 'surfalb' time: this is responsible for nearly 25% of the total run time.

One thing I notice about SurfaceAlbedo is that most calculations are done on full arrays, rather than using filters. I think this is done this way because this routine is called near the end of the time step in order to calculate albedos for the next time step - and it's possible that the set of active vs. inactive points could change in the next time step.

If it were acceptable to reorder this so that this routine were called at the start of the time step, calculating albedos for the current time step, then we could probably use filters here. (We could also then presumably decrease the restart file size.) Alternatively, maybe we could do the dyn subgrid stuff near the end of the time step (but before SurfaceAlbedo) calculating subgrid areas for the next time step; again, then we could use filters in SurfaceAlbedo. However, before doing either of those substantial changes, we could investigate whether we actually get a significant speedup in SurfaceAlbedo from using filters, in various configurations (maybe test this for a configuration where there aren't too many inactive points in memory and for another configuration that has many inactive points in memory).

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.