Definition of a time control.
The control is active in the range of time between min and max. It will trigger its action after a time interval specified in interval. For all time definitions always the one that occurs first is being used.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(tem_time_type), | public | :: | min |
Minimal point in time, from where on, this control should be active. Whichever time definition happens first will be used. |
|||
type(tem_time_type), | public | :: | max |
Maximal point in time, after which the control should not be active anymore. Whichever time definition happens first will be used. |
|||
type(tem_time_type), | public | :: | interval |
A regular interval at which an action should be triggered between min and max. |
|||
type(tem_time_type), | public | :: | trigger |
Keep track of the next point in time, at which an action should be triggered by this control. |
|||
logical, | public | :: | delay_check | = | .false. |
Configuration flag, whether to use nonblocking allreduces to determine whether an event has triggered across all processes. Note that this delays the reaction on the trigger by one check interval (given by check_iter in number of iterations). |
|
integer, | public | :: | check_iter | = | 1 |
Trigger checking can involve communication and is potentially hurting the performance. With this setting, the iteration interval at which these trigger updates should be done, can be controlled. Per default each iteration a check is done, but if this is too frequent, it can be increased here. However, it should be noted, that all trigger checks are only done every check_iter iteration. |
|
integer, | public | :: | check_request | = | MPI_REQUEST_NULL |
IAllreduce request handle |
|
logical, | public | :: | globally_triggered |
Flag to indicate whether trigger was globally activated |
|||
logical, | public | :: | needs_reduce |
Flag to indicate if this control object needs a MPI_reduce to determine trigger status. |
|||
logical, | public | :: | min_reached | = | .false. |
Flag that indicates whether the minimal point in time specified in min has already been reached. |
type tem_timeControl_type !> Minimal point in time, from where on, this control should be active. !! Whichever time definition happens first will be used. type(tem_time_type) :: min !> Maximal point in time, after which the control should not be active !! anymore. Whichever time definition happens first will be used. type(tem_time_type) :: max !> A regular interval at which an action should be triggered between !! min and max. type(tem_time_type) :: interval !> Keep track of the next point in time, at which an action should be !! triggered by this control. type(tem_time_type) :: trigger !> Configuration flag, whether to use nonblocking allreduces to determine !! whether an event has triggered across all processes. !! !! Note that this delays the reaction on the trigger by one check interval !! (given by check_iter in number of iterations). logical :: delay_check = .false. !> Trigger checking can involve communication and is potentially hurting !! the performance. !! !! With this setting, the iteration interval at which these trigger !! updates should be done, can be controlled. !! Per default each iteration a check is done, but if this is too !! frequent, it can be increased here. !! However, it should be noted, that all trigger checks are only done !! every check_iter iteration. integer :: check_iter = 1 !> IAllreduce request handle integer :: check_request = MPI_REQUEST_NULL !> Flag to indicate whether trigger was globally activated logical :: globally_triggered !> Flag to indicate if this control object needs a MPI_reduce to determine !! trigger status. logical :: needs_reduce !> Flag that indicates whether the minimal point in time specified in min !! has already been reached. logical :: min_reached = .false. end type tem_timeControl_type