MONC
|
Broadcast inter IO communication which sends a value from one IO server to all others. This tracks field name and timestep and only issues one call (and one results call to completion) for that combination. More...
Data Types | |
type | inter_io_broadcast |
type | threaded_callback_parameters_type |
Functions/Subroutines | |
subroutine, public | init_broadcast_inter_io (io_configuration) |
Initialises the broadcast inter IO functionality. More... | |
subroutine, public | finalise_broadcast_inter_io () |
Finalises the broadcast inter IO functionality. More... | |
logical function, public | check_broadcast_inter_io_for_completion (io_configuration) |
Checks the statuses for broadcast completion and returns whether they are all finished or not. More... | |
subroutine | handle_recv_data_from_io_server (io_configuration, data_buffer, inter_io_index) |
Handles receiving data from another IO server and processing this. If the request has already been registered (with a callback) then this simply calls out. Otherwise it has to cache the data and awaits a thread calling the broadcast to call out to the callback. More... | |
subroutine, public | perform_inter_io_broadcast (io_configuration, field_values, field_size, field_name, root, timestep, completion_procedure) |
Performs an inter IO broadcast of data from the root to all other IO servers. Note that this is on the IO server (and not MONC level) so might require some translation between the user's logical view and this view. Broadcasts are only issued once for a specific field_name and timestep pair. More... | |
subroutine | issue_thread_call_to_completion (field_name, timestep, values, completion_procedure) |
Issues the call into the thread pool to call the completion procedure, this runs in a seperate thread and ensures the semantics of one IO server or many with message ordering are independent. More... | |
subroutine | thread_call_to_completion (arguments, data_buffer) |
Called by the thread pool, this will call onto the completion procedure before cleaning up @arguments Integer arguments, this is the ID of the entry in the state @data_buffer Unused here. More... | |
subroutine | clean_broadcast_progress_if_needed () |
Calls out to do a broadcast progress clean if needed (i.e. every n steps.) More... | |
subroutine | clean_broadcast_progress () |
Performs a clean of the broadcast progresses that no longer need to be stored. More... | |
type(inter_io_broadcast) function, pointer | find_or_add_broadcast_item (field_name, timestep, completion_procedure) |
Locates and returns or adds and returns a specific broadcast item representing a timestep and field. More... | |
type(inter_io_broadcast) function, pointer | find_broadcast_item (field_name, timestep, do_read_lock) |
Finds a specific broadcast item or null if none is found. More... | |
type(inter_io_broadcast) function, pointer | retrieve_broadcast_item (mapentry) |
Locates a broadcast item within a mapentry or null if none exists. More... | |
Variables | |
integer, parameter | my_inter_io_tag =2 |
integer, parameter | perform_clean_every =200 |
character(len= *), parameter | my_inter_io_name ="bcastinterio" |
Type keeping track of broadcast statuses. More... | |
type(io_configuration_type), pointer | stored_io_configuration |
type(hashmap_type), volatile | broadcast_statuses |
type(hashmap_type), volatile | thread_callback_params |
integer, volatile | broadcast_statuses_rwlock |
integer, volatile | inter_io_description_mutex |
integer, volatile | clean_progress_mutex |
integer, volatile | bcast_count_mutex |
integer, volatile | bcast_clean_reduction_count |
integer, volatile | bcast_count |
integer, volatile | thread_callback_params_id |
integer, volatile | thread_callback_params_mutex |
logical, volatile | initialised =.false. |
Broadcast inter IO communication which sends a value from one IO server to all others. This tracks field name and timestep and only issues one call (and one results call to completion) for that combination.
logical function, public broadcast_inter_io_mod::check_broadcast_inter_io_for_completion | ( | type(io_configuration_type), intent(inout) | io_configuration | ) |
Checks the statuses for broadcast completion and returns whether they are all finished or not.
io_configuration | The IO server configuration |
Definition at line 109 of file broadcast-inter-io.F90.
|
private |
Performs a clean of the broadcast progresses that no longer need to be stored.
Definition at line 291 of file broadcast-inter-io.F90.
|
private |
Calls out to do a broadcast progress clean if needed (i.e. every n steps.)
Definition at line 278 of file broadcast-inter-io.F90.
subroutine, public broadcast_inter_io_mod::finalise_broadcast_inter_io |
Finalises the broadcast inter IO functionality.
Definition at line 76 of file broadcast-inter-io.F90.
|
private |
Finds a specific broadcast item or null if none is found.
field_name | Corresponding field name to find |
timestep | Corresponding timestep to find |
do_read_lock | Whether to issue a read lock or not |
Definition at line 389 of file broadcast-inter-io.F90.
|
private |
Locates and returns or adds and returns a specific broadcast item representing a timestep and field.
field_name | The field name this represents |
timestep | The timestep this represents |
completion_procedure | The (optional) completion procedure which is called once values are received |
Definition at line 356 of file broadcast-inter-io.F90.
|
private |
Handles receiving data from another IO server and processing this. If the request has already been registered (with a callback) then this simply calls out. Otherwise it has to cache the data and awaits a thread calling the broadcast to call out to the callback.
io_configuration | The IO server configuration |
data_buffer | Data received from other IO server |
inter_io_index | Index of the inter IO communication description |
Definition at line 136 of file broadcast-inter-io.F90.
subroutine, public broadcast_inter_io_mod::init_broadcast_inter_io | ( | type(io_configuration_type), intent(inout), target | io_configuration | ) |
Initialises the broadcast inter IO functionality.
io_configuration | The IO server configuration |
Definition at line 57 of file broadcast-inter-io.F90.
|
private |
Issues the call into the thread pool to call the completion procedure, this runs in a seperate thread and ensures the semantics of one IO server or many with message ordering are independent.
field_name | The name of the field |
timestep | The timestep |
values | Data values |
completion_procedure | The completion procedure to call |
Definition at line 225 of file broadcast-inter-io.F90.
subroutine, public broadcast_inter_io_mod::perform_inter_io_broadcast | ( | type(io_configuration_type), intent(inout) | io_configuration, |
real(kind=double_precision), dimension(:) | field_values, | ||
integer, intent(in) | field_size, | ||
character(len=*), intent(in) | field_name, | ||
integer, intent(in) | root, | ||
integer, intent(in) | timestep, | ||
procedure(handle_completion) | completion_procedure | ||
) |
Performs an inter IO broadcast of data from the root to all other IO servers. Note that this is on the IO server (and not MONC level) so might require some translation between the user's logical view and this view. Broadcasts are only issued once for a specific field_name and timestep pair.
io_configuration | Configuration of the IO server |
field_values | The values to communicate |
field_size | Number of elements to communicate |
field_name | Field name that the reduction will be performed over |
root | The root IO server process |
timestep | The timestep this is issued at |
completion_procedure | Callback completion procedure |
Definition at line 174 of file broadcast-inter-io.F90.
|
private |
Locates a broadcast item within a mapentry or null if none exists.
mapentry | The map entry to use for this retrieval |
Definition at line 414 of file broadcast-inter-io.F90.
|
private |
Called by the thread pool, this will call onto the completion procedure before cleaning up @arguments Integer arguments, this is the ID of the entry in the state @data_buffer Unused here.
Definition at line 253 of file broadcast-inter-io.F90.
|
private |
Definition at line 48 of file broadcast-inter-io.F90.
|
private |
Definition at line 48 of file broadcast-inter-io.F90.
|
private |
Definition at line 48 of file broadcast-inter-io.F90.
|
private |
Definition at line 47 of file broadcast-inter-io.F90.
|
private |
Definition at line 48 of file broadcast-inter-io.F90.
|
private |
Definition at line 48 of file broadcast-inter-io.F90.
|
private |
Definition at line 50 of file broadcast-inter-io.F90.
|
private |
Definition at line 48 of file broadcast-inter-io.F90.
|
private |
Type keeping track of broadcast statuses.
Definition at line 26 of file broadcast-inter-io.F90.
|
private |
Definition at line 25 of file broadcast-inter-io.F90.
|
private |
Definition at line 25 of file broadcast-inter-io.F90.
|
private |
Definition at line 46 of file broadcast-inter-io.F90.
|
private |
Definition at line 47 of file broadcast-inter-io.F90.
|
private |
Definition at line 48 of file broadcast-inter-io.F90.
|
private |
Definition at line 48 of file broadcast-inter-io.F90.