IODA
ioda::RoundRobin Class Reference

Round robin distribution. More...

#include <RoundRobin.h>

Inheritance diagram for ioda::RoundRobin:
Collaboration diagram for ioda::RoundRobin:

Public Member Functions

 RoundRobin (const eckit::mpi::Comm &Comm)
 
 ~RoundRobin ()
 
bool isMyRecord (std::size_t RecNum) const override
 Round-robin selector. More...
 
bool isDistributed () const override
 
- Public Member Functions inherited from ioda::Distribution
 Distribution (const eckit::mpi::Comm &Comm)
 
virtual ~Distribution ()=0
 

Additional Inherited Members

- Protected Attributes inherited from ioda::Distribution
const eckit::mpi::Comm & comm_
 Local MPI communicator. More...
 

Detailed Description

Round robin distribution.

This class implements a round-robin style of distribution which optimzes load balancing.

Author
Xin Zhang (JCSDA)

Definition at line 29 of file RoundRobin.h.

Constructor & Destructor Documentation

◆ RoundRobin()

ioda::RoundRobin::RoundRobin ( const eckit::mpi::Comm &  Comm)
explicit

Definition at line 19 of file RoundRobin.cc.

◆ ~RoundRobin()

ioda::RoundRobin::~RoundRobin ( )

Definition at line 24 of file RoundRobin.cc.

Member Function Documentation

◆ isDistributed()

bool ioda::RoundRobin::isDistributed ( ) const
inlineoverridevirtual

Implements ioda::Distribution.

Definition at line 34 of file RoundRobin.h.

◆ isMyRecord()

bool ioda::RoundRobin::isMyRecord ( std::size_t  RecNum) const
overridevirtual

Round-robin selector.

This method distributes observations according to a round-robin scheme. The round-robin scheme simply selects all locations where the modulus of the record number relative to the number of process elements equals the rank of the process element we are running on. This does a good job of distributing the observations evenly across processors which optimizes the load balancing.

Parameters
[in]RecNumRecord number, checked if belongs on this process element

Implements ioda::Distribution.

Definition at line 41 of file RoundRobin.cc.


The documentation for this class was generated from the following files: