OpenFPM_pdata  4.1.0
Project that contain the implementation of distributed structures
 
Loading...
Searching...
No Matches
DistGraph_CSR_s< V, E > Class Template Reference

Simplified implementation of DistGraph_CSR. More...

Detailed Description

template<typename V, typename E>
class DistGraph_CSR_s< V, E >

Simplified implementation of DistGraph_CSR.

Used when DistGraph_CSR is used as a default template argument to avoid 7 arguments

[Example]

template<template<typename,typename> class T=DistGraph_CSR_s> class cool_structure { T<Vertex,Edge> graph }

only 2 parameter are needed, if you use DistGraph_CSR you have to define 7 regardless that DistGraph_CSR has some default template

template<template<typename,typename> class T=DistGraph_CSR> class cool_structure { T<Vertex,Edge> graph }

THIS DO NOT COMPILE

Definition at line 2387 of file dist_map_graph.hpp.

#include <dist_map_graph.hpp>

+ Inheritance diagram for DistGraph_CSR_s< V, E >:

Additional Inherited Members

- Public Types inherited from DistGraph_CSR< V, E >
typedef V V_type
 Vertex typedef.
 
typedef E E_type
 Edge typedef.
 
typedef openfpm::vector< V, HeapMemory, memory_traits_lin, openfpm::grow_policy_double, openfpm::vect_isel< V >::value >::container V_container
 Object container for the vertex, for example can be encap<...> (map_grid or openfpm::vector)
 
typedef openfpm::vector< E, HeapMemory, memory_traits_lin, openfpm::grow_policy_double, openfpm::vect_isel< E >::value >::container E_container
 Object container for the edge, for example can be encap<...> (map_grid or openfpm::vector)
 
- Public Member Functions inherited from DistGraph_CSR< V, E >
DistGraph_CSR< V, E, HeapMemory, typename memory_traits_lin< V >::type, typename memory_traits_lin< E >::type, memory_traits_lin, memory_traits_lin, openfpm::grow_policy_doubleduplicate () const
 It duplicate the graph.
 
 DistGraph_CSR (const DistGraph_CSR &dg)
 Constructor.
 
 DistGraph_CSR (DistGraph_CSR &&dg)
 Constructor.
 
 DistGraph_CSR ()
 Constructor.
 
 DistGraph_CSR (size_t n_vertex)
 Constructor.
 
 DistGraph_CSR (size_t n_vertex, size_t n_slot)
 Constructor.
 
 DistGraph_CSR (Vcluster<> &vcl, DistGraph_CSR< V, E, HeapMemory > &&g)
 Copy constructor.
 
void getDecompositionVector (openfpm::vector< idx_t > &v)
 Operator to access the decomposition vector.
 
openfpm::vector< idx_t > * getVtxdist ()
 Operator to access the decomposition vector.
 
void initDistributionVector (openfpm::vector< idx_t > &v)
 Operator to access the decomposition vector.
 
void initDistributionVector ()
 Initialize the vtxdist and the fvtxdist.
 
DistGraph_CSR< V, E, HeapMemory > & operator= (DistGraph_CSR< V, E, HeapMemory > &&g)
 Copy the graph.
 
DistGraph_CSR< V, E, HeapMemory > & operator= (const DistGraph_CSR< V, E, HeapMemory > &g)
 Copy the graph.
 
auto vertex_p (size_t id) -> decltype(v.template get< i >(id))
 operator to access the vertex
 
auto vertex_p (grid_key_dx< 1 > id) -> decltype(v.template get< i >(id))
 Access the vertex.
 
auto vertex (size_t id) -> decltype(v.get(id))
 Function to access the vertexes.
 
auto vertex (grid_key_dx< 1 > id) -> decltype(v.get(id.get(0)))
 operator to access the vertex
 
auto vertex (openfpm::vector_key_iterator id) -> decltype(v.get(0))
 operator to access the vertex
 
auto vertex (size_t id) const -> const decltype(v.get(id))
 Function to access the vertexes.
 
auto vertex (grid_key_dx< 1 > id) const -> const decltype(v.get(id.get(0)))
 operator to access the vertex
 
auto vertex (openfpm::vector_key_iterator id) const -> const decltype(v.get(0))
 operator to access the vertex
 
auto vertex_info (openfpm::vector_key_iterator id) const -> const decltype(v_m.get(0))
 operator to access the vertex info
 
auto getVertex (size_t id) -> decltype(v.get(id))
 Function to access the vertexes.
 
auto getVertex (size_t id) const -> const decltype(v.get(0))
 Function to access the vertexes.
 
size_t nodeById (size_t id) const
 operator to access the vertex position index by id property
 
size_t firstId () const
 
size_t lastId () const
 
size_t getVertexId (size_t i) const
 Get the id of a vertex given its index position.
 
size_t getVertexGlobalId (size_t i) const
 Get the id of a vertex given its index position.
 
bool vertexIsInThisGraph (size_t id)
 Check if the vertex with GLOBAL id is in this graph.
 
void map_v (size_t n, size_t g, size_t l)
 operator to update all the hashmap
 
void clear ()
 operator to clear the whole graph
 
auto edge_p (grid_key_dx< 1 > id) -> decltype(e.template get< i >(id))
 Access the edge.
 
auto edge_p (size_t id) -> decltype(e.template get< i >(id))
 Access the edge.
 
auto edge (grid_key_dx< 1 > id) const -> const decltype(e.get(id.get(0)))
 Access the edge.
 
auto edge (edge_key ek) const -> const decltype(e.get(0))
 operator to access the edge
 
auto edge (size_t id) const -> const decltype(e.get(id))
 operator to access the edge
 
auto getEdge (edge_key ek) const -> const decltype(e.get(0))
 operator to access the edge
 
auto getEdge (size_t v, size_t v_e) -> decltype(e.get(0))
 Get the vertex edge given the vertex global id as source.
 
size_t getNChilds (size_t c) const
 Return the number of children of a vertex.
 
size_t getNChilds (typename openfpm::vector< V, HeapMemory, memory_traits_lin, openfpm::grow_policy_double, openfpm::vect_isel< V >::value >::iterator_key &c)
 Return the number of childs of a vertex.
 
size_t getNEdge (size_t v) const
 Return the number of children of a vertex given its global id.
 
size_t getNEdge () const
 Return the number of edges.
 
auto getChildEdge (size_t v, size_t v_e) -> decltype(e.get(0))
 Get the vertex edge.
 
auto getChildInfo (size_t v, size_t v_e) -> decltype(e_m.get(0))
 Get the vertex edge info.
 
size_t getChild (size_t v, size_t i) const
 Get the child edge.
 
size_t getChild (size_t i) const
 Get the child edge.
 
size_t getChild (typename openfpm::vector< V, HeapMemory, memory_traits_lin, openfpm::grow_policy_double, openfpm::vect_isel< V >::value >::iterator_key &v, size_t i)
 Get the child edge.
 
void add_vertex (const V &vrt, size_t id, size_t gid)
 Add vertex vrt with global id and id properties.
 
void add_vertex (const encapc< dim, V, Mem > &vrt, size_t id, size_t gid)
 Add vertex vrt with global id and id properties.
 
void add_vertex (const V &vrt, size_t gid)
 Add vertex vrt with global id and id properties.
 
void setGlobalMap (size_t g, size_t l, size_t i)
 map global id to local id
 
auto addEdge (size_t v1, size_t v2, size_t srcgid, size_t dstgid) -> decltype(e.get(0))
 
auto addEdge (size_t v1, size_t v2, size_t srcgid, size_t dstgid, const E &ed) -> decltype(e.get(0))
 
auto addEdge (size_t v1, size_t v2, const encapc< dim, E, Mem > &ed, const encapc< dim, e_info, Mem1 > &ei) -> decltype(e.get(0))
 
auto addEdge (size_t v1, size_t v2, const E &ed, const e_info &ei) -> decltype(e.get(0))
 
size_t getChildSrcGid (size_t v1, size_t s)
 Get the global id of edge's source vertex.
 
size_t getChildDstGid (size_t v1, size_t s)
 Get the global id of edge's destination vertex.
 
void add_edge (size_t v1, size_t v2)
 Add an edge between vertices v1 end v2, needs syncEdge() to complete the action.
 
void syncEdge ()
 Execute a synchronization through processor to finalize the add of the edges requested in the e_queue.
 
void swap (DistGraph_CSR< V, E > &g)
 Swap the memory of g with this graph.
 
void swap (DistGraph_CSR< V, E > &&g)
 Swap the memory of g with this graph.
 
auto getVertexIterator () const -> decltype(v.getIterator())
 Get the vertex iterator.
 
edge_iterator< DistGraph_CSR< V, E, HeapMemory > > getEdgeIterator () const
 Get the vertex iterator.
 
size_t getNVertex () const
 Return the number of the vertices in this subgraph.
 
size_t getTotNVertex () const
 Return the total number of the vertices.
 
void init ()
 Once added all the vertices this function must be called to initialize all the properties, useless if a graph factory is used.
 
bool isGhost (size_t id)
 Check if a vertex is a ghost vertex (not belonging to this processor)
 
void deleteGhosts ()
 Remove all the ghosts from this graph.
 
void q_move (size_t i, size_t t)
 Prepare to send vertex i from the local processor to the target processor.
 
bool moveQueueIsEmpty ()
 Check if the move queue is empty.
 
void redistribute ()
 Redistribute function that wraps different stages of the redistribution.
 
void reqVertex (size_t gid)
 Put a vertex request in queue.
 
void sync ()
 Execute all vertex requests and add them as ghosts inside this graph, they will be available until a redistribution is executed.
 

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