fpmas 1.6
Public Member Functions | List of all members
fpmas::graph::DistributedClusteredGraphBuilder< T > Class Template Reference

#include <clustered_graph_builder.h>

Inheritance diagram for fpmas::graph::DistributedClusteredGraphBuilder< T >:
Inheritance graph
[legend]
Collaboration diagram for fpmas::graph::DistributedClusteredGraphBuilder< T >:
Collaboration graph
[legend]

Public Member Functions

template<typename EdgeDist , typename X_Dist , typename Y_Dist >
 DistributedClusteredGraphBuilder (random::DistributedGenerator<> &generator, EdgeDist &edge_distribution, X_Dist &x_distribution, Y_Dist &y_distribution)
 
template<typename EdgeDist , typename X_Dist , typename Y_Dist >
 DistributedClusteredGraphBuilder (EdgeDist &edge_distribution, X_Dist &x_distribution, Y_Dist &y_distribution)
 
template<typename EdgeDist >
 DistributedClusteredGraphBuilder (random::DistributedGenerator<> &generator, EdgeDist &edge_distribution)
 
template<typename EdgeDist >
 DistributedClusteredGraphBuilder (EdgeDist &edge_distribution)
 
std::vector< api::graph::DistributedNode< T > * > build (api::graph::DistributedNodeBuilder< T > &node_builder, api::graph::LayerId layer, api::graph::DistributedGraph< T > &graph) override
 
virtual std::vector< api::graph::DistributedNode< T > * > build (DistributedNodeBuilder< T > &node_builder, LayerId layer, DistributedGraph< T > &graph)=0
 

Detailed Description

template<typename T>
class fpmas::graph::DistributedClusteredGraphBuilder< T >

Distributed version of the ClusteredGraphBuilder.

The DistributedClusteredGraphBuilder should generally be used, since it has been proved to achieve much better performances.

Constructor & Destructor Documentation

◆ DistributedClusteredGraphBuilder() [1/4]

template<typename T >
template<typename EdgeDist , typename X_Dist , typename Y_Dist >
fpmas::graph::DistributedClusteredGraphBuilder< T >::DistributedClusteredGraphBuilder ( random::DistributedGenerator<> &  generator,
EdgeDist &  edge_distribution,
X_Dist &  x_distribution,
Y_Dist &  y_distribution 
)
inline

DistributedClusteredGraphBuilder constructor.

The RandomGraphBuilder::distributed_rd random generator is used. It can be seeded with RandomGraphBuilder::seed() or fpmas::seed().

Template Parameters
EdgeDistedge count distribution (must satisfy RandomNumberDistribution)
X_Distx coordinates distribution (must satisfy RandomNumberDistribution)
Y_Disty coordinates distribution (must satisfy RandomNumberDistribution)
Parameters
generatorrandom number generator provided to the distribution
edge_distributionrandom distribution that manages edges generation. See build()
x_distributionrandom distribution used to assign an x coordinate to each node
y_distributionrandom distribution used to assign an y coordinate to each node

◆ DistributedClusteredGraphBuilder() [2/4]

template<typename T >
template<typename EdgeDist , typename X_Dist , typename Y_Dist >
fpmas::graph::DistributedClusteredGraphBuilder< T >::DistributedClusteredGraphBuilder ( EdgeDist &  edge_distribution,
X_Dist &  x_distribution,
Y_Dist &  y_distribution 
)
inline

DistributedClusteredGraphBuilder constructor.

Template Parameters
EdgeDistedge count distribution (must satisfy RandomNumberDistribution)
X_Distx coordinates distribution (must satisfy RandomNumberDistribution)
Y_Disty coordinates distribution (must satisfy RandomNumberDistribution)
Parameters
edge_distributionrandom distribution that manages edges generation. See build()
x_distributionrandom distribution used to assign an x coordinate to each node
y_distributionrandom distribution used to assign an y coordinate to each node

◆ DistributedClusteredGraphBuilder() [3/4]

template<typename T >
template<typename EdgeDist >
fpmas::graph::DistributedClusteredGraphBuilder< T >::DistributedClusteredGraphBuilder ( random::DistributedGenerator<> &  generator,
EdgeDist &  edge_distribution 
)
inline

DistributedClusteredGraphBuilder constructor.

Built nodes are implicitly and uniformly distributed in a 2D space.

Template Parameters
EdgeDistedge count distribution (must satisfy RandomNumberDistribution)
Parameters
generatorrandom number generator provided to the distribution
edge_distributionrandom distribution that manages edges generation. See build()

◆ DistributedClusteredGraphBuilder() [4/4]

template<typename T >
template<typename EdgeDist >
fpmas::graph::DistributedClusteredGraphBuilder< T >::DistributedClusteredGraphBuilder ( EdgeDist &  edge_distribution)
inline

DistributedClusteredGraphBuilder constructor.

Built nodes are implicitly and uniformly distributed in a 2D space.

Template Parameters
EdgeDistedge count distribution (must satisfy RandomNumberDistribution)
Parameters
edge_distributionrandom distribution that manages edges generation. See build()

Member Function Documentation

◆ build()

template<typename T >
std::vector< api::graph::DistributedNode< T > * > fpmas::graph::DistributedClusteredGraphBuilder< T >::build ( api::graph::DistributedNodeBuilder< T > &  node_builder,
api::graph::LayerId  layer,
api::graph::DistributedGraph< T > &  graph 
)
overridevirtual

Same as ClusteredGraphBuilder::build(), but distributed and much more efficient.

This process is synchronous and should be called from all processes.

Parameters
node_builderDistributedNodeBuilder instance used to generate nodes
layerlayer on which nodes will be linked
graphgraph in which nodes and edges will be inserted

Implements fpmas::api::graph::DistributedGraphBuilder< T >.


The documentation for this class was generated from the following file: