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 Integer arguments, this is the ID of the entry in the state 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 110 of file broadcast-inter-io.F90.
|
private |
Performs a clean of the broadcast progresses that no longer need to be stored.
Definition at line 292 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 279 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 77 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 390 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 357 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 137 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 58 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 226 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 176 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 415 of file broadcast-inter-io.F90.
|
private |
Called by the thread pool, this will call onto the completion procedure before cleaning up Integer arguments, this is the ID of the entry in the state Unused here.
Definition at line 254 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.