libgrape-lite
A C++ library for parallel graph processing
Public Member Functions | Private Member Functions | Private Attributes | List of all members
grape::ThreadLocalMessageBuffer< MM_T > Class Template Reference

Public Member Functions

void Init (fid_t fnum, MM_T *mm, size_t block_size, size_t block_cap)
 Initialize thread local message buffer. More...
 
template<typename GRAPH_T , typename MESSAGE_T >
void SyncStateOnOuterVertex (const GRAPH_T &frag, const typename GRAPH_T::vertex_t &v, const MESSAGE_T &msg)
 Communication by synchronizing the status on outer vertices, for edge-cut fragments. More...
 
template<typename GRAPH_T >
void SyncStateOnOuterVertex (const GRAPH_T &frag, const typename GRAPH_T::vertex_t &v)
 
template<typename GRAPH_T , typename MESSAGE_T >
void SendMsgThroughIEdges (const GRAPH_T &frag, const typename GRAPH_T::vertex_t &v, const MESSAGE_T &msg)
 Communication via a crossing edge a<-c. It sends message from a to c. More...
 
template<typename GRAPH_T , typename MESSAGE_T >
void SendMsgThroughOEdges (const GRAPH_T &frag, const typename GRAPH_T::vertex_t &v, const MESSAGE_T &msg)
 Communication via a crossing edge a->b. It sends message from a to b. More...
 
template<typename GRAPH_T , typename MESSAGE_T >
void SendMsgThroughEdges (const GRAPH_T &frag, const typename GRAPH_T::vertex_t &v, const MESSAGE_T &msg)
 Communication via crossing edges a->b and a<-c. It sends message from a to b and c. More...
 
template<typename MESSAGE_T >
void SendToFragment (fid_t dst_fid, const MESSAGE_T &msg)
 Send message to a fragment. More...
 
void FlushMessages ()
 Flush messages to message manager.
 
size_t SentMsgSize () const
 
void Reset ()
 

Private Member Functions

void flushLocalBuffer (fid_t fid)
 

Private Attributes

std::vector< InArchiveto_send_
 
MM_T * mm_
 
fid_t fnum_
 
size_t block_size_
 
size_t block_cap_
 
size_t sent_size_
 

Member Function Documentation

◆ Init()

template<typename MM_T >
void grape::ThreadLocalMessageBuffer< MM_T >::Init ( fid_t  fnum,
MM_T *  mm,
size_t  block_size,
size_t  block_cap 
)
inline

Initialize thread local message buffer.

Parameters
fnumNumber of fragments.
mmMessageManager pointer.
block_sizeSize of thread local message buffer.
block_capCapacity of thread local message buffer.

◆ SendMsgThroughEdges()

template<typename MM_T >
template<typename GRAPH_T , typename MESSAGE_T >
void grape::ThreadLocalMessageBuffer< MM_T >::SendMsgThroughEdges ( const GRAPH_T &  frag,
const typename GRAPH_T::vertex_t &  v,
const MESSAGE_T &  msg 
)
inline

Communication via crossing edges a->b and a<-c. It sends message from a to b and c.

Template Parameters
GRAPH_TGraph type.
MESSAGE_TMessage type.
Parameters
fragSource fragment.
va
msg

◆ SendMsgThroughIEdges()

template<typename MM_T >
template<typename GRAPH_T , typename MESSAGE_T >
void grape::ThreadLocalMessageBuffer< MM_T >::SendMsgThroughIEdges ( const GRAPH_T &  frag,
const typename GRAPH_T::vertex_t &  v,
const MESSAGE_T &  msg 
)
inline

Communication via a crossing edge a<-c. It sends message from a to c.

Template Parameters
GRAPH_TGraph type.
MESSAGE_TMessage type,
Parameters
fragSource fragment.
va
msg

◆ SendMsgThroughOEdges()

template<typename MM_T >
template<typename GRAPH_T , typename MESSAGE_T >
void grape::ThreadLocalMessageBuffer< MM_T >::SendMsgThroughOEdges ( const GRAPH_T &  frag,
const typename GRAPH_T::vertex_t &  v,
const MESSAGE_T &  msg 
)
inline

Communication via a crossing edge a->b. It sends message from a to b.

Template Parameters
GRAPH_TGraph type.
MESSAGE_TMessage type.
Parameters
fragSource fragment.
va
msg

◆ SendToFragment()

template<typename MM_T >
template<typename MESSAGE_T >
void grape::ThreadLocalMessageBuffer< MM_T >::SendToFragment ( fid_t  dst_fid,
const MESSAGE_T &  msg 
)
inline

Send message to a fragment.

Template Parameters
MESSAGE_TMessage type.
Parameters
dst_fidDestination fragment id.
msg

◆ SyncStateOnOuterVertex()

template<typename MM_T >
template<typename GRAPH_T , typename MESSAGE_T >
void grape::ThreadLocalMessageBuffer< MM_T >::SyncStateOnOuterVertex ( const GRAPH_T &  frag,
const typename GRAPH_T::vertex_t &  v,
const MESSAGE_T &  msg 
)
inline

Communication by synchronizing the status on outer vertices, for edge-cut fragments.

Assume a fragment F_1, a crossing edge a->b' in F_1 and a is an inner vertex in F_1. This function invoked on F_1 send status on b' to b on F_2, where b is an inner vertex.

Template Parameters
GRAPH_TGraph type.
MESSAGE_TMessage type,
Parameters
fragSource fragment.
va
msg