Galois
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy > Class Template Reference

Local computation graph (i.e., graph structure does not change). More...

#include <LC_CSR_Graph.h>

Inheritance diagram for galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >:
galois::graphs::LC_CSR_CSC_Graph< NodeTy, EdgeTy, EdgeDataByValue, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >

Classes

struct  with_edge_data
 
struct  with_file_edge_data
 
struct  with_id
 
struct  with_no_lockable
 If true, do not use abstract locks in graph. More...
 
struct  with_node_data
 
struct  with_numa_alloc
 If true, use NUMA-aware graph allocation; otherwise, use NUMA interleaved allocation. More...
 
struct  with_out_of_line_lockable
 If true, store abstract locks separate from nodes. More...
 

Public Types

template<bool _has_no_lockable>
using _with_no_lockable = LC_CSR_Graph< NodeTy, EdgeTy, _has_no_lockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >
 
template<bool _use_numa_alloc>
using _with_numa_alloc = LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, _use_numa_alloc, HasOutOfLineLockable, FileEdgeTy >
 
typedef read_default_graph_tag read_tag
 
typedef uint32_t GraphNode
 
typedef EdgeTy edge_data_type
 
typedef FileEdgeTy file_edge_data_type
 
typedef NodeTy node_data_type
 
typedef EdgeData::reference edge_data_reference
 
typedef NodeInfoTypes::reference node_data_reference
 
using edge_iterator = boost::counting_iterator< typename EdgeIndData::value_type >
 
using iterator = boost::counting_iterator< typename EdgeDst::value_type >
 
typedef iterator const_iterator
 
typedef iterator local_iterator
 
typedef iterator const_local_iterator
 

Public Member Functions

 LC_CSR_Graph (LC_CSR_Graph &&rhs)=default
 
 LC_CSR_Graph ()=default
 
LC_CSR_Graphoperator= (LC_CSR_Graph &&)=default
 
void serializeNodeData (boost::archive::binary_oarchive &ar) const
 Serializes node data using Boost. More...
 
void deSerializeNodeData (boost::archive::binary_iarchive &ar)
 Deserializes a Boost archive containing node data to the local node data variable. More...
 
void serializeGraph (boost::archive::binary_oarchive &ar) const
 Serializes graph using Boost. More...
 
void deSerializeGraph (boost::archive::binary_iarchive &ar)
 Deserializes a Boost archive to the local graph. More...
 
uint64_t operator[] (uint64_t n)
 Accesses the "prefix sum" of this graph; takes advantage of the fact that edge_end(n) is basically prefix_sum[n] (if a prefix sum existed + if prefix_sum[0] = number of edges in node 0). More...
 
template<typename EdgeNumFnTy , typename EdgeDstFnTy , typename EdgeDataFnTy >
 LC_CSR_Graph (uint32_t _numNodes, uint64_t _numEdges, EdgeNumFnTy edgeNum, EdgeDstFnTy _edgeDst, EdgeDataFnTy _edgeData)
 
node_data_reference getData (GraphNode N, MethodFlag mflag=MethodFlag::WRITE)
 
edge_data_reference getEdgeData (edge_iterator ni, MethodFlag GALOIS_UNUSED(mflag)=MethodFlag::UNPROTECTED)
 
GraphNode getEdgeDst (edge_iterator ni)
 
size_t size () const
 
size_t sizeEdges () const
 
iterator begin () const
 
iterator end () const
 
const_local_iterator local_begin () const
 
const_local_iterator local_end () const
 
local_iterator local_begin ()
 
local_iterator local_end ()
 
edge_iterator edge_begin (GraphNode N, MethodFlag mflag=MethodFlag::WRITE)
 
edge_iterator edge_end (GraphNode N, MethodFlag mflag=MethodFlag::WRITE)
 
edge_iterator findEdge (GraphNode N1, GraphNode N2)
 
edge_iterator findEdgeSortedByDst (GraphNode N1, GraphNode N2)
 
runtime::iterable
< NoDerefIterator
< edge_iterator > > 
edges (GraphNode N, MethodFlag mflag=MethodFlag::WRITE)
 
runtime::iterable
< NoDerefIterator
< edge_iterator > > 
out_edges (GraphNode N, MethodFlag mflag=MethodFlag::WRITE)
 
template<typename CompTy >
void sortEdgesByEdgeData (GraphNode N, const CompTy &comp=std::less< EdgeTy >(), MethodFlag mflag=MethodFlag::WRITE)
 Sorts outgoing edges of a node. More...
 
template<typename CompTy >
void sortEdges (GraphNode N, const CompTy &comp, MethodFlag mflag=MethodFlag::WRITE)
 Sorts outgoing edges of a node. More...
 
void sortEdgesByDst (GraphNode N, MethodFlag mflag=MethodFlag::WRITE)
 Sorts outgoing edges of a node. More...
 
void sortAllEdgesByDst (MethodFlag mflag=MethodFlag::WRITE)
 Sorts all outgoing edges of all nodes in parallel. More...
 
void allocateFrom (const FileGraph &graph)
 
void allocateFrom (uint32_t nNodes, uint64_t nEdges)
 
void destroyAndAllocateFrom (uint32_t nNodes, uint64_t nEdges)
 
void constructNodes ()
 
void deallocate ()
 
void constructEdge (uint64_t e, uint32_t dst, const typename EdgeData::value_type &val)
 
void constructEdge (uint64_t e, uint32_t dst)
 
void fixEndEdge (uint32_t n, uint64_t e)
 
void transpose (const char *regionName=NULL)
 Perform an in-memory transpose of the graph, replacing the original CSR to CSC. More...
 
template<bool is_non_void = EdgeData::has_value>
void edgeDataCopy (EdgeData &edgeData_new, EdgeData &edgeData, uint64_t e_new, uint64_t e, typename std::enable_if< is_non_void >::type *=0)
 
template<bool is_non_void = EdgeData::has_value>
void edgeDataCopy (EdgeData &, EdgeData &, uint64_t, uint64_t, typename std::enable_if<!is_non_void >::type *=0)
 
template<typename E = EdgeTy, std::enable_if_t<!std::is_same< E, void >::value, int > * = nullptr>
void constructFrom (FileGraph &graph, unsigned tid, unsigned total, const bool readUnweighted=false)
 
template<typename E = EdgeTy, std::enable_if_t< std::is_same< E, void >::value, int > * = nullptr>
void constructFrom (FileGraph &graph, unsigned tid, unsigned total, const bool GALOIS_UNUSED(readUnweighted)=false)
 
const EdgeIndDatagetEdgePrefixSum () const
 Returns the reference to the edgeIndData LargeArray (a prefix sum of edges) More...
 
auto divideByNode (size_t nodeSize, size_t edgeSize, size_t id, size_t total)
 
void constructFrom (uint32_t numNodes, uint64_t numEdges, std::vector< uint64_t > &prefix_sum, std::vector< std::vector< uint32_t >> &edges_id, std::vector< std::vector< EdgeTy >> &edges_data)
 custom allocator for vector<vector<>> Adding for Louvain clustering TODO: Find better way to do this More...
 
void constructFrom (uint32_t numNodes, uint64_t numEdges, std::vector< uint64_t > &prefix_sum, galois::gstl::Vector< galois::PODResizeableArray< uint32_t >> &edges_id, std::vector< std::vector< EdgeTy >> &edges_data)
 
template<typename U = void, typename std::enable_if<!std::is_void< EdgeTy >::value, U >::type * = nullptr>
void readGraphFromGRFile (const std::string &filename)
 Reads the GR files directly into in-memory data-structures of LC_CSR graphs using freads. More...
 
template<typename U = void, typename std::enable_if< std::is_void< EdgeTy >::value, U >::type * = nullptr>
void readGraphFromGRFile (const std::string &filename)
 Reads the GR files directly into in-memory data-structures of LC_CSR graphs using freads. More...
 
void initializeLocalRanges ()
 Given a manually created graph, initialize the local ranges on this graph so that threads can iterate over a balanced number of vertices. More...
 

Protected Types

typedef LargeArray< EdgeTy > EdgeData
 
typedef LargeArray< uint32_t > EdgeDst
 
typedef
internal::NodeInfoBaseTypes
< NodeTy,!HasNoLockable
&&!HasOutOfLineLockable > 
NodeInfoTypes
 
typedef internal::NodeInfoBase
< NodeTy,!HasNoLockable
&&!HasOutOfLineLockable > 
NodeInfo
 
typedef LargeArray< uint64_t > EdgeIndData
 
typedef LargeArray< NodeInfoNodeData
 
typedef
internal::EdgeSortIterator
< GraphNode, typename
EdgeIndData::value_type,
EdgeDst, EdgeData
edge_sort_iterator
 

Protected Member Functions

edge_iterator raw_begin (GraphNode N) const
 
edge_iterator raw_end (GraphNode N) const
 
edge_sort_iterator edge_sort_begin (GraphNode N)
 
edge_sort_iterator edge_sort_end (GraphNode N)
 
template<bool _A1 = HasNoLockable, bool _A2 = HasOutOfLineLockable>
void acquireNode (GraphNode N, MethodFlag mflag, typename std::enable_if<!_A1 &&!_A2 >::type *=0)
 
template<bool _A1 = HasOutOfLineLockable, bool _A2 = HasNoLockable>
void acquireNode (GraphNode N, MethodFlag mflag, typename std::enable_if< _A1 &&!_A2 >::type *=0)
 
template<bool _A1 = HasOutOfLineLockable, bool _A2 = HasNoLockable>
void acquireNode (GraphNode, MethodFlag, typename std::enable_if< _A2 >::type *=0)
 
template<bool _A1 = EdgeData::has_value, bool _A2 = LargeArray<FileEdgeTy>::has_value>
void constructEdgeValue (FileGraph &graph, typename FileGraph::edge_iterator nn, typename std::enable_if<!_A1||_A2 >::type *=0)
 
template<bool _A1 = EdgeData::has_value, bool _A2 = LargeArray<FileEdgeTy>::has_value>
void constructEdgeValue (FileGraph &, typename FileGraph::edge_iterator nn, typename std::enable_if< _A1 &&!_A2 >::type *=0)
 
size_t getId (GraphNode N)
 
GraphNode getNode (size_t n)
 

Protected Attributes

NodeData nodeData
 
EdgeIndData edgeIndData
 
EdgeDst edgeDst
 
EdgeData edgeData
 
uint64_t numNodes
 
uint64_t numEdges
 

Friends

template<typename Graph >
class LC_InOut_Graph
 
class boost::serialization::access
 
void swap (LC_CSR_Graph &lhs, LC_CSR_Graph &rhs)
 

Detailed Description

template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
class galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >

Local computation graph (i.e., graph structure does not change).

The data representation is the traditional compressed-sparse-row (CSR) format.

The position of template parameters may change between Galois releases; the most robust way to specify them is through the with_XXX nested templates.

An example of use:

// Create graph
Graph g;
int sum = 0;
// Traverse graph
for (Graph::iterator ii = g.begin(), ei = g.end(); ii != ei; ++ii) {
Graph::GraphNode src = *ii;
for (Graph::edge_iterator jj = g.edge_begin(src), ej = g.edge_end(src);
jj != ej; ++jj) {
Graph::GraphNode dst = g.getEdgeDst(jj);
int edgeData = g.getEdgeData(jj);
int nodeData = g.getData(dst);
sum += edgeData * nodeData;
}
}

And in C++11:

// Create graph
Graph g;
int sum = 0;
// Traverse graph
for (Graph::GraphNode src : g) {
for (Graph::edge_iterator edge : g.out_edges(src)) {
Graph::GraphNode dst = g.getEdgeDst(edge);
int edgeData = g.getEdgeData(edge);
int nodeData = g.getData(dst);
sum += edgeData * nodeData;
}
}
Template Parameters
NodeTydata on nodes
EdgeTydata on out edges[doxygennuma]
Examples:
lonestar/tutorial_examples/GraphTraversalPullOperator.cpp, lonestar/tutorial_examples/GraphTraversalPushOperator.cpp, and lonestar/tutorial_examples/GraphTraversalSerial.cpp.

Member Typedef Documentation

template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
template<bool _has_no_lockable>
using galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::_with_no_lockable = LC_CSR_Graph<NodeTy, EdgeTy, _has_no_lockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy>
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
template<bool _use_numa_alloc>
using galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::_with_numa_alloc = LC_CSR_Graph<NodeTy, EdgeTy, HasNoLockable, _use_numa_alloc, HasOutOfLineLockable, FileEdgeTy>
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
typedef iterator galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::const_iterator
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
typedef iterator galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::const_local_iterator
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
typedef EdgeData::reference galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::edge_data_reference
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
typedef EdgeTy galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::edge_data_type
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
using galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::edge_iterator = boost::counting_iterator<typename EdgeIndData::value_type>
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
typedef internal::EdgeSortIterator< GraphNode, typename EdgeIndData::value_type, EdgeDst, EdgeData> galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::edge_sort_iterator
protected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
typedef LargeArray<EdgeTy> galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::EdgeData
protected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
typedef LargeArray<uint32_t> galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::EdgeDst
protected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
typedef LargeArray<uint64_t> galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::EdgeIndData
protected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
typedef FileEdgeTy galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::file_edge_data_type
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
typedef uint32_t galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::GraphNode
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
using galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::iterator = boost::counting_iterator<typename EdgeDst::value_type>
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
typedef iterator galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::local_iterator
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
typedef NodeInfoTypes::reference galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::node_data_reference
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
typedef NodeTy galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::node_data_type
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
typedef LargeArray<NodeInfo> galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::NodeData
protected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
typedef internal::NodeInfoBase<NodeTy, !HasNoLockable && !HasOutOfLineLockable> galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::NodeInfo
protected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
typedef internal::NodeInfoBaseTypes<NodeTy, !HasNoLockable && !HasOutOfLineLockable> galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::NodeInfoTypes
protected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
typedef read_default_graph_tag galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::read_tag

Constructor & Destructor Documentation

template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::LC_CSR_Graph ( LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy > &&  rhs)
default
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::LC_CSR_Graph ( )
default
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
template<typename EdgeNumFnTy , typename EdgeDstFnTy , typename EdgeDataFnTy >
galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::LC_CSR_Graph ( uint32_t  _numNodes,
uint64_t  _numEdges,
EdgeNumFnTy  edgeNum,
EdgeDstFnTy  _edgeDst,
EdgeDataFnTy  _edgeData 
)
inline

[numaallocex]

[numaallocex]

Member Function Documentation

template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
template<bool _A1 = HasNoLockable, bool _A2 = HasOutOfLineLockable>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::acquireNode ( GraphNode  N,
MethodFlag  mflag,
typename std::enable_if<!_A1 &&!_A2 >::type *  = 0 
)
inlineprotected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
template<bool _A1 = HasOutOfLineLockable, bool _A2 = HasNoLockable>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::acquireNode ( GraphNode  N,
MethodFlag  mflag,
typename std::enable_if< _A1 &&!_A2 >::type *  = 0 
)
inlineprotected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
template<bool _A1 = HasOutOfLineLockable, bool _A2 = HasNoLockable>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::acquireNode ( GraphNode  ,
MethodFlag  ,
typename std::enable_if< _A2 >::type *  = 0 
)
inlineprotected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::allocateFrom ( const FileGraph graph)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::allocateFrom ( uint32_t  nNodes,
uint64_t  nEdges 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
iterator galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::begin ( ) const
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::constructEdge ( uint64_t  e,
uint32_t  dst,
const typename EdgeData::value_type val 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::constructEdge ( uint64_t  e,
uint32_t  dst 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
template<bool _A1 = EdgeData::has_value, bool _A2 = LargeArray<FileEdgeTy>::has_value>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::constructEdgeValue ( FileGraph graph,
typename FileGraph::edge_iterator  nn,
typename std::enable_if<!_A1||_A2 >::type *  = 0 
)
inlineprotected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
template<bool _A1 = EdgeData::has_value, bool _A2 = LargeArray<FileEdgeTy>::has_value>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::constructEdgeValue ( FileGraph ,
typename FileGraph::edge_iterator  nn,
typename std::enable_if< _A1 &&!_A2 >::type *  = 0 
)
inlineprotected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
template<typename E = EdgeTy, std::enable_if_t<!std::is_same< E, void >::value, int > * = nullptr>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::constructFrom ( FileGraph graph,
unsigned  tid,
unsigned  total,
const bool  readUnweighted = false 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
template<typename E = EdgeTy, std::enable_if_t< std::is_same< E, void >::value, int > * = nullptr>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::constructFrom ( FileGraph graph,
unsigned  tid,
unsigned  total,
const bool   GALOIS_UNUSEDreadUnweighted = false 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::constructFrom ( uint32_t  numNodes,
uint64_t  numEdges,
std::vector< uint64_t > &  prefix_sum,
std::vector< std::vector< uint32_t >> &  edges_id,
std::vector< std::vector< EdgeTy >> &  edges_data 
)
inline

custom allocator for vector<vector<>> Adding for Louvain clustering TODO: Find better way to do this

template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::constructFrom ( uint32_t  numNodes,
uint64_t  numEdges,
std::vector< uint64_t > &  prefix_sum,
galois::gstl::Vector< galois::PODResizeableArray< uint32_t >> &  edges_id,
std::vector< std::vector< EdgeTy >> &  edges_data 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::constructNodes ( )
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::deallocate ( )
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::deSerializeGraph ( boost::archive::binary_iarchive &  ar)
inline

Deserializes a Boost archive to the local graph.

Parameters
arBoost archive to deserialize from.
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::deSerializeNodeData ( boost::archive::binary_iarchive &  ar)
inline

Deserializes a Boost archive containing node data to the local node data variable.

Parameters
arBoost archive to deserialize from.
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::destroyAndAllocateFrom ( uint32_t  nNodes,
uint64_t  nEdges 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
auto galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::divideByNode ( size_t  nodeSize,
size_t  edgeSize,
size_t  id,
size_t  total 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
edge_iterator galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::edge_begin ( GraphNode  N,
MethodFlag  mflag = MethodFlag::WRITE 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
edge_iterator galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::edge_end ( GraphNode  N,
MethodFlag  mflag = MethodFlag::WRITE 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
edge_sort_iterator galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::edge_sort_begin ( GraphNode  N)
inlineprotected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
edge_sort_iterator galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::edge_sort_end ( GraphNode  N)
inlineprotected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
template<bool is_non_void = EdgeData::has_value>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::edgeDataCopy ( EdgeData edgeData_new,
EdgeData edgeData,
uint64_t  e_new,
uint64_t  e,
typename std::enable_if< is_non_void >::type *  = 0 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
template<bool is_non_void = EdgeData::has_value>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::edgeDataCopy ( EdgeData ,
EdgeData ,
uint64_t  ,
uint64_t  ,
typename std::enable_if<!is_non_void >::type *  = 0 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
runtime::iterable<NoDerefIterator<edge_iterator> > galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::edges ( GraphNode  N,
MethodFlag  mflag = MethodFlag::WRITE 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
iterator galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::end ( ) const
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
edge_iterator galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::findEdge ( GraphNode  N1,
GraphNode  N2 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
edge_iterator galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::findEdgeSortedByDst ( GraphNode  N1,
GraphNode  N2 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::fixEndEdge ( uint32_t  n,
uint64_t  e 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
node_data_reference galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::getData ( GraphNode  N,
MethodFlag  mflag = MethodFlag::WRITE 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
edge_data_reference galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::getEdgeData ( edge_iterator  ni,
MethodFlag   GALOIS_UNUSEDmflag = MethodFlag::UNPROTECTED 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
GraphNode galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::getEdgeDst ( edge_iterator  ni)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
const EdgeIndData& galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::getEdgePrefixSum ( ) const
inline

Returns the reference to the edgeIndData LargeArray (a prefix sum of edges)

Returns
reference to LargeArray edgeIndData
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
size_t galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::getId ( GraphNode  N)
inlineprotected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
GraphNode galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::getNode ( size_t  n)
inlineprotected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::initializeLocalRanges ( )
inline

Given a manually created graph, initialize the local ranges on this graph so that threads can iterate over a balanced number of vertices.

template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
const_local_iterator galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::local_begin ( ) const
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
local_iterator galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::local_begin ( )
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
const_local_iterator galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::local_end ( ) const
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
local_iterator galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::local_end ( )
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
LC_CSR_Graph& galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::operator= ( LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy > &&  )
default
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
uint64_t galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::operator[] ( uint64_t  n)
inline

Accesses the "prefix sum" of this graph; takes advantage of the fact that edge_end(n) is basically prefix_sum[n] (if a prefix sum existed + if prefix_sum[0] = number of edges in node 0).

ONLY USE IF GRAPH HAS BEEN LOADED

Parameters
nIndex into edge prefix sum
Returns
The value that would be located at index n in an edge prefix sum array
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
runtime::iterable<NoDerefIterator<edge_iterator> > galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::out_edges ( GraphNode  N,
MethodFlag  mflag = MethodFlag::WRITE 
)
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
edge_iterator galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::raw_begin ( GraphNode  N) const
inlineprotected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
edge_iterator galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::raw_end ( GraphNode  N) const
inlineprotected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
template<typename U = void, typename std::enable_if<!std::is_void< EdgeTy >::value, U >::type * = nullptr>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::readGraphFromGRFile ( const std::string &  filename)
inline

Reads the GR files directly into in-memory data-structures of LC_CSR graphs using freads.

Edge is not void.

Load outIndex array

Load edgeDst array

Load edge data array

template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
template<typename U = void, typename std::enable_if< std::is_void< EdgeTy >::value, U >::type * = nullptr>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::readGraphFromGRFile ( const std::string &  filename)
inline

Reads the GR files directly into in-memory data-structures of LC_CSR graphs using freads.

Edge is void.

Load outIndex array

Load edgeDst array

template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::serializeGraph ( boost::archive::binary_oarchive &  ar) const
inline

Serializes graph using Boost.

Parameters
arBoost archive to serialize to.
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::serializeNodeData ( boost::archive::binary_oarchive &  ar) const
inline

Serializes node data using Boost.

Parameters
arBoost archive to serialize to.
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
size_t galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::size ( ) const
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
size_t galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::sizeEdges ( ) const
inline
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::sortAllEdgesByDst ( MethodFlag  mflag = MethodFlag::WRITE)
inline

Sorts all outgoing edges of all nodes in parallel.

Comparison is over getEdgeDst(e).

template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
template<typename CompTy >
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::sortEdges ( GraphNode  N,
const CompTy &  comp,
MethodFlag  mflag = MethodFlag::WRITE 
)
inline

Sorts outgoing edges of a node.

Comparison function is over EdgeSortValue<EdgeTy>.

template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::sortEdgesByDst ( GraphNode  N,
MethodFlag  mflag = MethodFlag::WRITE 
)
inline

Sorts outgoing edges of a node.

Comparison is over getEdgeDst(e).

template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
template<typename CompTy >
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::sortEdgesByEdgeData ( GraphNode  N,
const CompTy &  comp = std::less<EdgeTy>(),
MethodFlag  mflag = MethodFlag::WRITE 
)
inline

Sorts outgoing edges of a node.

Comparison function is over EdgeTy.

template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::transpose ( const char *  regionName = NULL)
inline

Perform an in-memory transpose of the graph, replacing the original CSR to CSC.

Friends And Related Function Documentation

template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
friend class boost::serialization::access
friend
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
template<typename Graph >
friend class LC_InOut_Graph
friend
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
void swap ( LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy > &  lhs,
LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy > &  rhs 
)
friend

Member Data Documentation

template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
EdgeData galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::edgeData
protected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
EdgeDst galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::edgeDst
protected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
EdgeIndData galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::edgeIndData
protected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
NodeData galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::nodeData
protected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
uint64_t galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::numEdges
protected
template<typename NodeTy, typename EdgeTy, bool HasNoLockable = false, bool UseNumaAlloc = false, bool HasOutOfLineLockable = false, typename FileEdgeTy = EdgeTy>
uint64_t galois::graphs::LC_CSR_Graph< NodeTy, EdgeTy, HasNoLockable, UseNumaAlloc, HasOutOfLineLockable, FileEdgeTy >::numNodes
protected

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