IODA
RoundRobin.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2017-2019 UCAR
3  *
4  * This software is licensed under the terms of the Apache Licence Version 2.0
5  * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
6  */
7 
8 #ifndef DISTRIBUTION_ROUNDROBIN_H_
9 #define DISTRIBUTION_ROUNDROBIN_H_
10 
11 #include <vector>
12 
13 #include "eckit/mpi/Comm.h"
14 #include "oops/util/Logger.h"
15 
16 #include "ioda/distribution/Distribution.h"
17 
18 namespace ioda {
19 
20 // ---------------------------------------------------------------------
21 /*!
22  * \brief Round robin distribution
23  *
24  * \details This class implements a round-robin style of distribution which
25  * optimzes load balancing.
26  *
27  * \author Xin Zhang (JCSDA)
28  */
29 class RoundRobin: public Distribution {
30  public:
31  explicit RoundRobin(const eckit::mpi::Comm & Comm);
32  ~RoundRobin();
33  bool isMyRecord(std::size_t RecNum) const override;
34  bool isDistributed() const override { return true; }
35 };
36 
37 } // namespace ioda
38 
39 #endif // DISTRIBUTION_ROUNDROBIN_H_
ioda::Distribution
class for distributing obs across multiple process elements
Definition: src/distribution/Distribution.h:30
ioda
Definition: IodaUtils.cc:13
ioda::RoundRobin::~RoundRobin
~RoundRobin()
Definition: RoundRobin.cc:24
ioda::RoundRobin::isMyRecord
bool isMyRecord(std::size_t RecNum) const override
Round-robin selector.
Definition: RoundRobin.cc:41
ioda::RoundRobin::RoundRobin
RoundRobin(const eckit::mpi::Comm &Comm)
Definition: RoundRobin.cc:19
ioda::RoundRobin
Round robin distribution.
Definition: RoundRobin.h:29
ioda::RoundRobin::isDistributed
bool isDistributed() const override
Definition: RoundRobin.h:34