BioCMAMC-ST
impl_lb.hpp
1#ifndef __IMPL_LOAD_BALANCER_HPP__
2#define __IMPL_LOAD_BALANCER_HPP__
3
4#include <load_balancing/iload_balancer.hpp>
5#include <vector>
6
8{
9public:
10 explicit UniformLoadBalancer(uint32_t s);
11
12protected:
13 [[nodiscard]] double getRatio(uint64_t n, uint32_t rank) const noexcept final;
14};
15
17{
18public:
19 HostImportantLoadBalancer(uint32_t s, double _alpha);
20
21protected:
22 [[nodiscard]] double getRatio(uint64_t n, uint32_t rank) const noexcept final;
23
24private:
25 double alpha;
26};
27
29{
30public:
31 CustomLoadBalancer(uint32_t s, std::vector<double> _ratio);
32
33protected:
34 [[nodiscard]] double getRatio(uint64_t n, uint32_t rank) const noexcept final;
35
36private:
37 std::vector<double> ratios;
38};
39
40class BoundLoadBalancer final : public ILoadBalancer
41{
42public:
43 BoundLoadBalancer(uint32_t s, uint64_t _n_max);
44
45protected:
46 [[nodiscard]] double getRatio(uint64_t n, uint32_t rank) const noexcept final;
47
48private:
49 uint64_t n_max;
50};
51
52#endif
double getRatio(uint64_t n, uint32_t rank) const noexcept final
Definition impl_lb.cpp:60
uint64_t n_max
Definition impl_lb.hpp:49
BoundLoadBalancer(uint32_t s, uint64_t _n_max)
Definition impl_lb.cpp:55
CustomLoadBalancer(uint32_t s, std::vector< double > _ratio)
Definition impl_lb.cpp:39
std::vector< double > ratios
Definition impl_lb.hpp:37
double getRatio(uint64_t n, uint32_t rank) const noexcept final
Definition impl_lb.cpp:48
double getRatio(uint64_t n, uint32_t rank) const noexcept final
Definition impl_lb.cpp:31
double alpha
Definition impl_lb.hpp:25
HostImportantLoadBalancer(uint32_t s, double _alpha)
Definition impl_lb.cpp:14
ILoadBalancer(uint32_t s)
Definition iload_balancer.cpp:4
UniformLoadBalancer(uint32_t s)
Definition impl_lb.cpp:5
double getRatio(uint64_t n, uint32_t rank) const noexcept final
Definition impl_lb.cpp:6