/home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/physics/integration/distribution.hh Source File#

DiFfRG: /home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/physics/integration/distribution.hh Source File
DiFfRG
distribution.hh
Go to the documentation of this file.
1#pragma once
2
4
5namespace DiFfRG
6{
8 MPI_Comm mpi_comm = MPI_COMM_WORLD;
10 std::vector<uint> sizes;
11 std::vector<uint> nodes;
12
13 NodeDistribution() = default;
14 NodeDistribution(MPI_Comm mpi_comm, const std::vector<uint> &sizes, const std::vector<uint> &nodes);
15 };
16
18 {
19 public:
21
22 void balance();
23
24 template <typename INT> void register_integrator(INT &integrator)
25 {
26 // Other logic ....
27 integrators.push_back(&integrator);
28 }
29
30 private:
31 [[maybe_unused]] MPI_Comm mpi_comm;
32
33 std::vector<void *> integrators;
34 std::vector<NodeDistribution> node_distributions;
35 };
36} // namespace DiFfRG
Definition distribution.hh:18
IntegrationLoadBalancer(MPI_Comm mpi_comm)
std::vector< void * > integrators
Definition distribution.hh:33
void register_integrator(INT &integrator)
Definition distribution.hh:24
MPI_Comm mpi_comm
Definition distribution.hh:31
std::vector< NodeDistribution > node_distributions
Definition distribution.hh:34
Definition complex_math.hh:10
unsigned int uint
Definition utils.hh:24
Definition qmc.hpp:23
Definition distribution.hh:7
std::vector< uint > sizes
Definition distribution.hh:10
MPI_Comm mpi_comm
Definition distribution.hh:8
NodeDistribution(MPI_Comm mpi_comm, const std::vector< uint > &sizes, const std::vector< uint > &nodes)
std::vector< uint > nodes
Definition distribution.hh:11
uint total_size
Definition distribution.hh:9