BioCMAMC-ST
iload_balancer.hpp
1#ifndef __ILOAD_BALANCER_HPP__
2#define __ILOAD_BALANCER_HPP__
3
4#include <cmath>
5#include <cstdint>
6#include <memory>
7
9{
10public:
11 virtual ~ILoadBalancer() = default;
12 explicit ILoadBalancer(uint32_t s);
13 ILoadBalancer() = delete;
14 ILoadBalancer(const ILoadBalancer&) = delete;
18
19 [[nodiscard]] bool check(uint64_t n=0) const;
20
21 uint64_t balance(uint32_t rank, uint64_t n);
22
23protected:
24 [[nodiscard]] virtual double getRatio(uint64_t n, uint32_t rank) const noexcept =0;
25
26 [[nodiscard]] inline auto size() const noexcept
27 {
28 return _size;
29 }
30
31private:
32 [[nodiscard]] uint64_t get_alloc(uint64_t n, uint32_t rank) const noexcept;
33 uint32_t _size;
34};
35
36std::unique_ptr<ILoadBalancer> lb_factory();
37
38#endif
Definition iload_balancer.hpp:9
virtual ~ILoadBalancer()=default
auto size() const noexcept
Definition iload_balancer.hpp:26
uint64_t balance(uint32_t rank, uint64_t n)
Definition iload_balancer.cpp:22
bool check(uint64_t n=0) const
Definition iload_balancer.cpp:11
ILoadBalancer(ILoadBalancer &&)=delete
ILoadBalancer & operator=(const ILoadBalancer &)=delete
ILoadBalancer(const ILoadBalancer &)=delete
ILoadBalancer()=delete
uint64_t get_alloc(uint64_t n, uint32_t rank) const noexcept
Definition iload_balancer.cpp:6
ILoadBalancer & operator=(ILoadBalancer &&)=delete
uint32_t _size
Definition iload_balancer.hpp:33
virtual double getRatio(uint64_t n, uint32_t rank) const noexcept=0