E3SM-Project / E3SM-Project/E3SM

prefix for coupler-related timer names (discussion)

Open
#3,376 1 comment 1 reaction 4 assignees Claimed by @worleyph View on GitHub
CIME
Dominant language
Fortran
Stars
440
Forks
481
Avg merge
4d 6h
Merged PRs (30d)
36

Description

Each timer name has a prefix indicating which component a given timer is associated with (and whether associated with the initialization phase or with the run phase). This enables differentiating timers in different components (and phases) that otherwise have the same name, and differentiating between calls of utilities that are used across multiple components and phases (e.g. PIO). This also allows for the easy identification of the timers associated with each component.

For all but one prefix, this also indicates which processes a timer is associated with, e.g., timers with the "a:" and "a_i:" prefixes are called only on the ATM processes, as specified in the PE layout. The one outlier is "CPL:", which can be associated with all processes, with only CPL component processes, or with other component processes (ATM, LND, OCN, etc.), possibly in union with the CPL component processes.

It would be useful if the prefixes of these "CPL:" timers could be modified to be consistent with how the other prefixes are used. This is problematic in that the CPL prefixes predate the other component-specific prefixes and the names are used in the postprocessing performance analysis scripts. For backward compatibility with old data, we should avoid changing the names of any of these "special" timers. For example, the CPL timers occurring on all processes are probably better called driver timers, and perhaps should have a DRV prefix, but I am not proposing this.

We could change some of the other timing prefixes though. For example, the CPL timers that occur only of the CPL component processes are all called within the logic

if (iamin_CPLID) then
endif

The prefix for these could be changed to "c:". Then the timers associated with other components in union with the CPL processes, e.g. within the logic

if (iamin_CPLALLATMID) then
endif

could have prefixes like "c+a:" (for coupler call in union of ATM and CPL processes) and CPL timers within a call to component_run could have prefixes like "cl:" (for coupler call only in LND processes).

The strongest reason for not doing this is there are not that many timers with the "CPL:" prefix and nothing is "broken" per se - we just need to remember that timers with the "CPL:" prefix do not have the same interpretation as those for the other components (and we have to work a little harder to figure out what processes call the associated timers).

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.