DistributedMeter Derived Type

type, public, extends(AdvancedMeter) :: DistributedMeter


Inherits

type~~distributedmeter~~InheritsGraph type~distributedmeter DistributedMeter type~advancedmeter AdvancedMeter type~distributedmeter->type~advancedmeter type~distributedstatistics DistributedStatistics type~distributedmeter->type~distributedstatistics statistics type~abstractgauge AbstractGauge type~advancedmeter->type~abstractgauge gauge type~abstractmeter AbstractMeter type~advancedmeter->type~abstractmeter type~distributedinteger DistributedInteger type~distributedstatistics->type~distributedinteger num_cycles type~distributedreal64 DistributedReal64 type~distributedstatistics->type~distributedreal64 total, exclusive, min_cycle, max_cycle, mean_cycle, sum_square_deviation

Constructor

public interface DistributedMeter

  • private function new_DistributedMeter(gauge) result(distributed_meter)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractGauge), intent(in) :: gauge

    Return Value type(DistributedMeter)


Type-Bound Procedures

procedure, public :: accumulate

  • private subroutine accumulate(this, lap)

    Arguments

    Type IntentOptional Attributes Name
    class(AdvancedMeter), intent(inout) :: this
    class(AbstractMeter), intent(in) :: lap

procedure, public :: add_cycle

  • private subroutine add_cycle(this, increment)

    Arguments

    Type IntentOptional Attributes Name
    class(AdvancedMeter), intent(inout) :: this
    real(kind=REAL64), intent(in) :: increment

procedure, public :: finalize

  • private subroutine finalize(this, rc)

    Arguments

    Type IntentOptional Attributes Name
    class(AbstractMeter), intent(in) :: this
    integer, intent(out), optional :: rc

procedure, public :: get_max_cycle

  • private function get_max_cycle(this) result(max_cycle)

    Arguments

    Type IntentOptional Attributes Name
    class(AdvancedMeter), intent(in) :: this

    Return Value real(kind=REAL64)

procedure, public :: get_mean_cycle

  • private function get_mean_cycle(this) result(mean_cycle)

    Arguments

    Type IntentOptional Attributes Name
    class(AdvancedMeter), intent(in) :: this

    Return Value real(kind=REAL64)

procedure, public :: get_min_cycle

  • private function get_min_cycle(this) result(min_cycle)

    Arguments

    Type IntentOptional Attributes Name
    class(AdvancedMeter), intent(in) :: this

    Return Value real(kind=REAL64)

procedure, public :: get_num_cycles

  • private function get_num_cycles(this) result(num_cycles)

    Arguments

    Type IntentOptional Attributes Name
    class(AdvancedMeter), intent(in) :: this

    Return Value integer

procedure, public :: get_overhead

  • private function get_overhead(this) result(overhead)

    Arguments

    Type IntentOptional Attributes Name
    class(AdvancedMeter), intent(in) :: this

    Return Value real(kind=REAL64)

procedure, public :: get_relative_deviation

  • private function get_relative_deviation(this) result(relative_deviation)

    Arguments

    Type IntentOptional Attributes Name
    class(AdvancedMeter), intent(in) :: this

    Return Value real(kind=REAL64)

procedure, public :: get_standard_deviation

  • private function get_standard_deviation(this) result(standard_deviation)

    Arguments

    Type IntentOptional Attributes Name
    class(AdvancedMeter), intent(in) :: this

    Return Value real(kind=REAL64)

procedure, public :: get_statistics

  • private function get_statistics(this) result(statistics)

    Arguments

    Type IntentOptional Attributes Name
    class(DistributedMeter), intent(in) :: this

    Return Value type(DistributedStatistics)

procedure, public :: get_stats_max_cycle

  • private function get_stats_max_cycle(this) result(max_cycle)

    Arguments

    Type IntentOptional Attributes Name
    class(DistributedMeter), intent(in) :: this

    Return Value type(DistributedReal64)

procedure, public :: get_stats_min_cycle

  • private function get_stats_min_cycle(this) result(min_cycle)

    Arguments

    Type IntentOptional Attributes Name
    class(DistributedMeter), intent(in) :: this

    Return Value type(DistributedReal64)

procedure, public :: get_stats_num_cycles

$ procedure :: get_stats_sum_square_deviation

  • private function get_stats_num_cycles(this) result(num_cycles)

    Arguments

    Type IntentOptional Attributes Name
    class(DistributedMeter), intent(in) :: this

    Return Value type(DistributedInteger)

procedure, public :: get_stats_total

  • private function get_stats_total(this) result(total)

    Arguments

    Type IntentOptional Attributes Name
    class(DistributedMeter), intent(in) :: this

    Return Value type(DistributedReal64)

procedure, public :: get_status

  • private function get_status(this) result(status)

    Arguments

    Type IntentOptional Attributes Name
    class(AdvancedMeter), intent(in) :: this

    Return Value integer

procedure, public :: get_sum_square_deviation

  • private function get_sum_square_deviation(this) result(sum_square_deviation)

    Arguments

    Type IntentOptional Attributes Name
    class(AdvancedMeter), intent(in) :: this

    Return Value real(kind=REAL64)

procedure, public :: get_total

  • private function get_total(this) result(val)

    Arguments

    Type IntentOptional Attributes Name
    class(AdvancedMeter), intent(in) :: this

    Return Value real(kind=REAL64)

procedure, public :: is_active

  • private function is_active(this)

    Arguments

    Type IntentOptional Attributes Name
    class(AdvancedMeter), intent(in) :: this

    Return Value logical

generic, public :: make_mpi_type => make_mpi_type_distributed_data

  • private subroutine make_mpi_type_distributed_data(this, d, new_type, ierror)

    Arguments

    Type IntentOptional Attributes Name
    class(DistributedMeter), intent(in) :: this
    type(DistributedStatistics), intent(in) :: d
    integer, intent(out) :: new_type
    integer, intent(out) :: ierror

generic, public :: make_mpi_type => make_mpi_type_distributed_real64

  • private subroutine make_mpi_type_distributed_real64(this, r64, new_type, ierror)

    Arguments

    Type IntentOptional Attributes Name
    class(DistributedMeter), intent(in) :: this
    type(DistributedReal64), intent(in) :: r64
    integer, intent(out) :: new_type
    integer, intent(out) :: ierror

generic, public :: make_mpi_type => make_mpi_type_distributed_integer

  • private subroutine make_mpi_type_distributed_integer(this, int, new_type, ierror)

    Arguments

    Type IntentOptional Attributes Name
    class(DistributedMeter), intent(in) :: this
    type(DistributedInteger), intent(in) :: int
    integer, intent(out) :: new_type
    integer, intent(out) :: ierror

procedure, public :: make_mpi_type_distributed_data

  • private subroutine make_mpi_type_distributed_data(this, d, new_type, ierror)

    Arguments

    Type IntentOptional Attributes Name
    class(DistributedMeter), intent(in) :: this
    type(DistributedStatistics), intent(in) :: d
    integer, intent(out) :: new_type
    integer, intent(out) :: ierror

procedure, public :: make_mpi_type_distributed_integer

  • private subroutine make_mpi_type_distributed_integer(this, int, new_type, ierror)

    Arguments

    Type IntentOptional Attributes Name
    class(DistributedMeter), intent(in) :: this
    type(DistributedInteger), intent(in) :: int
    integer, intent(out) :: new_type
    integer, intent(out) :: ierror

procedure, public :: make_mpi_type_distributed_real64

  • private subroutine make_mpi_type_distributed_real64(this, r64, new_type, ierror)

    Arguments

    Type IntentOptional Attributes Name
    class(DistributedMeter), intent(in) :: this
    type(DistributedReal64), intent(in) :: r64
    integer, intent(out) :: new_type
    integer, intent(out) :: ierror

generic, public :: reduce => reduce_mpi

  • private subroutine reduce_mpi(this, comm, exclusive)

    Arguments

    Type IntentOptional Attributes Name
    class(DistributedMeter), intent(inout) :: this
    integer, intent(in) :: comm
    real(kind=REAL64), intent(in) :: exclusive

procedure, public :: reduce_mpi

  • private subroutine reduce_mpi(this, comm, exclusive)

    Arguments

    Type IntentOptional Attributes Name
    class(DistributedMeter), intent(inout) :: this
    integer, intent(in) :: comm
    real(kind=REAL64), intent(in) :: exclusive

procedure, public :: reset

  • private subroutine reset(this)

    Arguments

    Type IntentOptional Attributes Name
    class(AdvancedMeter), intent(inout) :: this

procedure, public :: start

  • private subroutine start(this)

    Arguments

    Type IntentOptional Attributes Name
    class(AdvancedMeter), intent(inout) :: this

procedure, public :: stop

  • private subroutine stop(this)

    Arguments

    Type IntentOptional Attributes Name
    class(AdvancedMeter), intent(inout) :: this

Source Code

   type, extends(AdvancedMeter) :: DistributedMeter
      private
      type(DistributedStatistics) :: statistics
   contains
      !procedure :: reduce_global
      procedure :: reduce_mpi
      generic :: reduce => reduce_mpi !,reduce_global

      procedure :: get_statistics
      procedure :: get_stats_total
      procedure :: get_stats_min_cycle
      procedure :: get_stats_max_cycle
      procedure :: get_stats_num_cycles
!!$      procedure :: get_stats_sum_square_deviation

      procedure :: make_mpi_type_distributed_data
      procedure :: make_mpi_type_distributed_real64
      procedure :: make_mpi_type_distributed_integer
      generic :: make_mpi_type => make_mpi_type_distributed_data
      generic :: make_mpi_type => make_mpi_type_distributed_real64
      generic :: make_mpi_type => make_mpi_type_distributed_integer
   end type DistributedMeter