Skip to content

eCLM performance: I/O operations #82

@s-poll

Description

@s-poll

General

This is an issue to collect information and discuss the I/O behavior of eCLM. I/O operations in standard configuration take ~ 20% and strong scaling shown that it can easily take up to 50% of the runtime. This should be a discussion board to discuss eCLM performance in respect to I/O operations.

eCLM uses the ParallelIO library for I/O. Some I/O operations can be managed via the namelist lnd_modelio.nml. Details are below as well as discussion points for I/O strategy in coupled system.

namlist parameter &pio_inparm

'pio_netcdf_format'

Netcdf format. Currently set to '64BIT_OFFSET'.

'pio_numiotasks'

Pio number of IO tasks

It is hardcoded to 64, if not set (e.g. negative values)!

It should propably be set to the number of mpi-tasks. Not done any investigation on runtime yet.

'pio_rearranger'

pio_rearranger= 1 --> Box rearrangement
pio_rearranger= 2 --> Subset rearrangement

https://ncar.github.io/ParallelIO/decomp.html

'pio_root'

I/O root. Set in code

'pio_stride'

Stride in the mpi rank between io tasks.

'pio_typename'

NetCDF type. e.g. netcdf 3 or 4. Currently 'netcdf4p' (netcdf 4 HDF5 - parrallel) is chosen. Other option: 'netcdf4c' (compressed)

Discussion point

Tuning of runtime in interplay between 'pio_rearranger', 'pio_root' and 'pio_stride'. This will be case-dependent, but has potential for improving runtime performance.

Asychnronsous IO: The PIO library seems to be able asychnronsously. However, it seems that this is not integrated in eCLM.

I/O strategy in coupled system

eCLM is run sequentially coupled in the TSMP2 coupled system. The exchange of to the OASIS-coupler is done before/after the CLM call (clm_drv) and the I/O operation are done within the clm_drv. Thus, the I/O time is added to the total runtime of the coupled system. One approach would be that the I/O operations are done after the oas_send (OASIS send), so that the consumed time for I/O operations .

An alternative would be to include asynchronous I/O, with the aim that I/O operations minimizes the impact on the total runtime of the eCLM itself.

Metadata

Metadata

Assignees

No one assigned

    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