MONC
|
The IO server state module which will write out the current state of the IO server to a NetCDF file. More...
Data Types | |
interface | nc_def_dim |
ISO C binding interface for NetCDF dimension definition, needed to support 64 bit lengths. More... | |
interface | nc_def_var |
ISO C binding interface for NetCDF define variable, needed to support defining a long scalar variable. More... | |
interface | nc_put_var1_long |
ISO C binding interface for NetCDF put long scalar, needed to support putting longs into file. More... | |
interface | nc_put_vars_text |
ISO C binding interface for NetCDF put variable text, needed to support 64 bit starts, counts and strides. More... | |
interface | write_field_manager_determine_if_up_to_date |
interface | writer_field_manager_prepare_to_serialise_state |
interface | writer_field_manager_serialise_state |
Functions/Subroutines | |
subroutine, public | set_serialise_write_field_manager_state (serialise_writer_field_manager_state_arg, prepare_to_serialise_writer_field_manager_state_arg, is_write_field_manager_up_to_date_arg) |
Sets the procedure to call for serialises the field manager state, this is handled in this manner due to the ordering dependencies between these modules. More... | |
logical function, public | is_io_server_state_writer_ready (timestep) |
Determines whether the IO server state writer is ready (i.e. state is at a specific level for the timestep) @timestep The timestep to check the IO server is up to date with. More... | |
subroutine | prepare_io_server_state_storage (io_configuration, writer_entries, time_points) |
Will determine the size of the package for different facets of the IO server state and kick off non-blocking collective calls to aggregate the sizes on each IO server process which is needed for the NetCDF dimension sizing and location in this. Note that during this certain locks are issued to ensure sizes don't change between this and physical packaging. More... | |
integer(kind=8) function | prepare_to_serialise_writer_entries_time_points (time_points) |
Prepares to serialise the writer entry time points. More... | |
subroutine | serialise_writer_entries_time_points (time_points, byte_data) |
Serialises the writer entry time points which are held in a hashmap. More... | |
subroutine, public | define_io_server_state_contributions (io_configuration, writer_entries, time_points, netcdf_file) |
Defines the dimensions and variables in a NetCDF file that consitute the IO server current state. This will call out to prepare all IO state for storage (determines the size of each byte code and issues locks for consistency.) More... | |
subroutine | define_state_storage (netcdf_file, entries_directory_dim_id, base_key, expected_global_entries) |
Defines some state storate for a specific facet of the IO server. This creates the directory (location for each IO server where to load their data), the dimension and the variable. Note this uses the ISO C bindings to NetCDF to support 64 bit dimension and field lengths. More... | |
subroutine, public | write_io_server_state (io_configuration, writer_entries, time_points, netcdf_file) |
Packags up and writes the actual IO server state into the NetCDF file. The act of serialisation will effectively unlock the IO server state locks that were issued in the preparation call (this is to ensure consistency between reported size and actual size when it comes time to package up.) More... | |
subroutine | write_state_storage (netcdf_file, writer_entry_start_point, my_io_rank, base_key, raw_byte_code) |
Writes out the state for a specific facet into the NetCDF file. Note that this uses the ISO C bindings into NetCDF to support 64 bit counts, starts and strides. More... | |
Variables | |
character, dimension(:), allocatable | serialised_writer_entries |
character, dimension(:), allocatable | serialised_timeaveraged_manipulation_state |
character, dimension(:), allocatable | serialised_instantaneous_manipulation_state |
character, dimension(:), allocatable | serialised_writer_field_manager_state |
character, dimension(:), allocatable | serialised_writer_entries_time_points |
integer(kind=8), dimension(:), allocatable | global_writer_entry_byte_size |
integer(kind=8), dimension(:), allocatable | my_writer_entry_start_point |
integer(kind=8), dimension(:), allocatable | local_writer_entry_byte_size |
integer | global_writer_entry_byte_size_request |
integer | my_writer_entry_start_request |
procedure(writer_field_manager_serialise_state), pointer | serialise_writer_field_manager_state |
procedure(writer_field_manager_prepare_to_serialise_state), pointer | prepare_to_serialise_writer_field_manager_state |
procedure(write_field_manager_determine_if_up_to_date), pointer | is_write_field_manager_up_to_date |
The IO server state module which will write out the current state of the IO server to a NetCDF file.
subroutine, public io_server_state_writer_mod::define_io_server_state_contributions | ( | type(io_configuration_type), intent(inout) | io_configuration, |
type(writer_type), dimension(:), intent(inout), volatile | writer_entries, | ||
type(hashmap_type), intent(inout), volatile | time_points, | ||
type(netcdf_diagnostics_type), intent(inout) | netcdf_file | ||
) |
Defines the dimensions and variables in a NetCDF file that consitute the IO server current state. This will call out to prepare all IO state for storage (determines the size of each byte code and issues locks for consistency.)
io_configuration | IO server configuration |
netcdf_file | The NetCDF file state |
Definition at line 213 of file io_state_writer.F90.
|
private |
Defines some state storate for a specific facet of the IO server. This creates the directory (location for each IO server where to load their data), the dimension and the variable. Note this uses the ISO C bindings to NetCDF to support 64 bit dimension and field lengths.
netcdf_file | The NetCDF file state |
entries_directory_dim_id | NetCDF dimension ID for the directory entries |
base_key | The base key for this storage |
expected_global_entries | The number of expected global entries that will be stored |
Definition at line 263 of file io_state_writer.F90.
logical function, public io_server_state_writer_mod::is_io_server_state_writer_ready | ( | integer, intent(in) | timestep | ) |
Determines whether the IO server state writer is ready (i.e. state is at a specific level for the timestep) @timestep The timestep to check the IO server is up to date with.
Definition at line 122 of file io_state_writer.F90.
|
private |
Will determine the size of the package for different facets of the IO server state and kick off non-blocking collective calls to aggregate the sizes on each IO server process which is needed for the NetCDF dimension sizing and location in this. Note that during this certain locks are issued to ensure sizes don't change between this and physical packaging.
io_configuration | IO server configuration |
writer_entries | The writer entries that we are going to store |
Definition at line 133 of file io_state_writer.F90.
|
private |
Prepares to serialise the writer entry time points.
time_points | Hashmap of the timepoints that will need to be serialised |
Definition at line 176 of file io_state_writer.F90.
|
private |
Serialises the writer entry time points which are held in a hashmap.
time_points | The input time points which are to be serialised |
byte_data | Allocated byte data which will hold the serialised values |
Definition at line 188 of file io_state_writer.F90.
subroutine, public io_server_state_writer_mod::set_serialise_write_field_manager_state | ( | procedure(writer_field_manager_serialise_state) | serialise_writer_field_manager_state_arg, |
procedure(writer_field_manager_prepare_to_serialise_state) | prepare_to_serialise_writer_field_manager_state_arg, | ||
procedure(write_field_manager_determine_if_up_to_date) | is_write_field_manager_up_to_date_arg | ||
) |
Sets the procedure to call for serialises the field manager state, this is handled in this manner due to the ordering dependencies between these modules.
serialise_writer_field_manager_state_arg | The procedure to call for serialising the field manager state |
prepare_to_serialise_writer_field_manager_state_arg | Preparation of field manager state procedure |
is_write_field_manager_up_to_date_arg | Procedure to determine whether field manager is up to date |
Definition at line 101 of file io_state_writer.F90.
subroutine, public io_server_state_writer_mod::write_io_server_state | ( | type(io_configuration_type), intent(inout) | io_configuration, |
type(writer_type), dimension(:), intent(inout), volatile | writer_entries, | ||
type(hashmap_type), intent(inout), volatile | time_points, | ||
type(netcdf_diagnostics_type), intent(inout) | netcdf_file | ||
) |
Packags up and writes the actual IO server state into the NetCDF file. The act of serialisation will effectively unlock the IO server state locks that were issued in the preparation call (this is to ensure consistency between reported size and actual size when it comes time to package up.)
io_configuration | IO server configuration |
writer_entries | The writer types which need to be serialised |
time_points | The time points that need to be serialised |
netcdf_file | The NetCDF file state |
Definition at line 302 of file io_state_writer.F90.
|
private |
Writes out the state for a specific facet into the NetCDF file. Note that this uses the ISO C bindings into NetCDF to support 64 bit counts, starts and strides.
netcdf_file | The NetCDF file state |
writer_entry_start_point | The start point, this is uncorrected so it is actually the end point |
my_io_rank | My IO server rank |
base_key | The base key to use for look up |
raw_byte_code | The raw byte code to write |
Definition at line 367 of file io_state_writer.F90.
|
private |
Definition at line 85 of file io_state_writer.F90.
|
private |
Definition at line 87 of file io_state_writer.F90.
|
private |
Definition at line 90 of file io_state_writer.F90.
|
private |
Definition at line 85 of file io_state_writer.F90.
|
private |
Definition at line 85 of file io_state_writer.F90.
|
private |
Definition at line 87 of file io_state_writer.F90.
|
private |
Definition at line 89 of file io_state_writer.F90.
|
private |
Definition at line 88 of file io_state_writer.F90.
|
private |
Definition at line 83 of file io_state_writer.F90.
|
private |
Definition at line 83 of file io_state_writer.F90.
|
private |
Definition at line 83 of file io_state_writer.F90.
|
private |
Definition at line 83 of file io_state_writer.F90.
|
private |
Definition at line 83 of file io_state_writer.F90.