Thanks to @cbengel for creating a branch of this suite without netCDF outputs, I got the IO server running.
The relevant parts of the umnsa.fort6.pe0
are
FILE_MANAGER: Assigned : pseudo-file for UNIX operations
FILE_MANAGER: : id : io_reserved_unit
FILE_MANAGER: : Unit : 10 (portio)
....
792 Processors initialised.
I am PE 0 on gadi-cpu-clx-1621.gadi.nci.org.au
[0] I am running with 2 thread(s).
[0] OpenMP Specification: 201611
FILE_MANAGER: Assigned : ATMOSCNTL
FILE_MANAGER: : id : atmoscntl
FILE_MANAGER: : Unit : 11 (fortran)
FILE_MANAGER: Assigned : SHARED
FILE_MANAGER: : id : shared
FILE_MANAGER: : Unit : 12 (fortran)
...
MPPIO_File_Utils: Initialised file utils using unit 10
...
FILE_MANAGER: Assigned : Reserved unit for re-initialised stream (/home/548/pag548/cylc-run/u-dq126/share/cycle/20220226T0000Z/Flags
hip_ERA5to1km/12km/GAL9/um//umnsaa_pb%N)
FILE_MANAGER: : id : pp1
FILE_MANAGER: : Unit : 11 (portio)
FILE_MANAGER: Assigned : Reserved unit for re-initialised stream (/home/548/pag548/cylc-run/u-dq126/share/cycle/20220226T0000Z/Flags
hip_ERA5to1km/12km/GAL9/um//umnsaa_pa%N)
FILE_MANAGER: : id : pp0
FILE_MANAGER: : Unit : 12 (portio)
FILE_MANAGER: Assigned : Reserved unit for re-initialised stream (/home/548/pag548/cylc-run/u-dq126/share/cycle/20220226T0000Z/Flags
hip_ERA5to1km/12km/GAL9/um//umnsaa_cb%N)
FILE_MANAGER: : id : ppmbc
FILE_MANAGER: : Unit : 13 (portio)
FILE_MANAGER: Assigned : Reserved unit for re-initialised stream (/home/548/pag548/cylc-run/u-dq126/share/cycle/20220226T0000Z/Flags
hip_ERA5to1km/12km/GAL9/um//umnsaa_pvera%N)
FILE_MANAGER: : id : verpp1
FILE_MANAGER: : Unit : 14 (portio)
FILE_MANAGER: Assigned : Reserved unit for re-initialised stream (/home/548/pag548/cylc-run/u-dq126/share/cycle/20220226T0000Z/Flags
hip_ERA5to1km/12km/GAL9/um//umnsaa_pverb%N)
FILE_MANAGER: : id : verpp2
FILE_MANAGER: : Unit : 15 (portio)
FILE_MANAGER: Assigned : Reserved unit for re-initialised stream (/home/548/pag548/cylc-run/u-dq126/share/cycle/20220226T0000Z/Flags
hip_ERA5to1km/12km/GAL9/um//umnsaa_pverc%N)
FILE_MANAGER: : id : verpp3
FILE_MANAGER: : Unit : 16 (portio)
FILE_MANAGER: Assigned : Reserved unit for re-initialised stream (/home/548/pag548/cylc-run/u-dq126/share/cycle/20220226T0000Z/Flags
hip_ERA5to1km/12km/GAL9/um//umnsaa_pverd%N)
FILE_MANAGER: : id : verpp4
FILE_MANAGER: : Unit : 17 (portio)
So when using field fields, Unit numbers 11 to 17 are used for outputs.
I’ll now proceed to test a larger I/O server on the larger domains to see what the speed-up is.
RE : Unit number allocations for netCDF outputs.
The file_manager
module (https://code.metoffice.gov.uk/trac/um/browser/main/trunk/src/io_services/model_api/file_manager.F90) suggests the units number for file I/O is read from the Fortran derived types
um_file_list % file_unit_min
um_file_list % file_unit_max
There are three types used for fortran
, portio
and netcdf
filetypes:
147 ! The instances of the type used as the master list objects by this module,
148 ! there are two distinct file lists depending on the type of file
149 !-------------------------------------------------------------------------------
150 TYPE(um_file_list_type), SAVE, TARGET :: um_file_list_fortran
151 TYPE(um_file_list_type), SAVE, TARGET :: um_file_list_portio
152 TYPE(um_file_list_type), SAVE, TARGET :: um_file_list_netcdf
And they are apparently defined here:
160 INTEGER, PARAMETER :: start_unit_fortran = 10
161 INTEGER, PARAMETER :: end_unit_fortran = 300
162
163 ! Portio
164 INTEGER, PARAMETER :: start_unit_portio = 10
165 INTEGER, PARAMETER :: end_unit_portio = 300
166
167 ! NetCDF
168 INTEGER, PARAMETER :: start_unit_netcdf = 10
169 INTEGER, PARAMETER :: end_unit_netcdf = 300
This suggests you can’t, by default, use the I/O server with netCDF outputs as both will want to use Unit number 10.
I can’t see from the source code anyway to override these values via a namelist input.
One fix is to set
168 INTEGER, PARAMETER :: start_unit_netcdf = 11
or to set
! A flag which forces the portio list to use unique unit numbers
155 LOGICAL, PUBLIC :: portio_unique_units = .FALSE.
to .TRUE.
(why would this be set to .FALSE.
by default? ), which suggests you have to recompile the code to use the I/O with netCDF outputs?
I’m very surprised this is the case, but happy to proceed with this if required.
What’s the best way to ask the UKMO about this?
A Trac ticket?
A post to https://cms-helpdesk.ncas.ac.uk ?