-
Notifications
You must be signed in to change notification settings - Fork 13
Description
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.