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
11{
12public:
13 explicit UniformLoadBalancer(uint32_t s);
14
15protected:
16 [[nodiscard]] double getRatio(uint64_t n, uint32_t rank) const noexcept final;
17};
18
24{
25public:
26 HostImportantLoadBalancer(uint32_t s, double _alpha);
27
28protected:
29 [[nodiscard]] double getRatio(uint64_t n, uint32_t rank) const noexcept final;
30
31private:
32 double alpha;
33};
34
39{
40public:
41 CustomLoadBalancer(uint32_t s, std::vector<double> _ratio);
42
43protected:
44 [[nodiscard]] double getRatio(uint64_t n, uint32_t rank) const noexcept final;
45
46private:
47 std::vector<double> ratios;
48};
49
50// Specify maximum amount of particle for rank 0
51class BoundLoadBalancer final : public ILoadBalancer
52{
53public:
54 BoundLoadBalancer(uint32_t s, uint64_t _n_max);
55
56protected:
57 [[nodiscard]] double getRatio(uint64_t n, uint32_t rank) const noexcept final;
58
59private:
60 uint64_t n_max;
61};
62
63#endif
double getRatio(uint64_t n, uint32_t rank) const noexcept final
Definition impl_lb.cpp:61
uint64_t n_max
Definition impl_lb.hpp:60
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:47
double getRatio(uint64_t n, uint32_t rank) const noexcept final
Definition impl_lb.cpp:49
double getRatio(uint64_t n, uint32_t rank) const noexcept final
Definition impl_lb.cpp:31
double alpha
Definition impl_lb.hpp:32
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:7