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

A kind of message manager supporting auto parallelism. More...

#include <auto_parallel_message_manager.h>

Inheritance diagram for grape::AutoParallelMessageManager< FRAG_T >:
grape::DefaultMessageManager grape::MessageManagerBase

Classes

struct  ap_event
 

Public Member Functions

void StartARound () override
 Inherit.
 
void FinishARound () override
 Inherit.
 
void RegisterSyncBuffer (const FRAG_T &frag, ISyncBuffer *buffer, MessageStrategy strategy)
 Register a buffer to be sync automatically between rounds. More...
 
void Init (MPI_Comm comm) override
 Inherit.
 
void Start () override
 Inherit.
 
bool ToTerminate () override
 Inherit.
 
void Finalize () override
 Inherit.
 
size_t GetMsgSize () const override
 Inherit.
 
void ForceContinue () override
 Inherit.
 
- Public Member Functions inherited from grape::DefaultMessageManager
void Init (MPI_Comm comm) override
 Inherit.
 
void StartARound () override
 Inherit.
 
void FinishARound () override
 Inherit.
 
size_t GetMsgSize () const override
 Inherit.
 
void ForceTerminate (const std::string &terminate_info) override
 Inherit.
 
const TerminateInfoGetTerminateInfo () const override
 Inherit.
 
template<typename MESSAGE_T >
void SendToFragment (fid_t dst_fid, const MESSAGE_T &msg)
 Send message to a fragment. 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 , 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 >
bool GetMessage (MESSAGE_T &msg)
 Get a message from message buffer. More...
 
template<typename GRAPH_T , typename MESSAGE_T >
bool GetMessage (const GRAPH_T &frag, typename GRAPH_T::vertex_t &v, MESSAGE_T &msg)
 Get a message and its target vertex from message buffer. More...
 

Private Types

using Base = DefaultMessageManager
 
using vid_t = typename FRAG_T::vid_t
 

Private Member Functions

void aggregateAutoMessages ()
 
void generateAutoMessages ()
 
template<typename T >
void syncOnInnerVertexSend (const FRAG_T &frag, ISyncBuffer *buffer, int event_id, MessageStrategy message_strategy)
 
template<typename T >
void syncOnOuterVertexSend (const FRAG_T &frag, ISyncBuffer *buffer, int event_id)
 
template<typename T >
void syncOnVertexRecv (const FRAG_T &frag, ISyncBuffer *buffer)
 

Private Attributes

std::vector< ap_eventauto_parallel_events_
 

Additional Inherited Members

- Protected Member Functions inherited from grape::DefaultMessageManager
fid_t fid () const
 
fid_t fnum () const
 
- Protected Attributes inherited from grape::DefaultMessageManager
std::vector< InArchiveto_send_
 

Detailed Description

template<typename FRAG_T>
class grape::AutoParallelMessageManager< FRAG_T >

A kind of message manager supporting auto parallelism.

After registering the vertex array and message strategy as a sync buffer, message generation and ingestion can be applied by message manager automatically.

Member Function Documentation

◆ RegisterSyncBuffer()

template<typename FRAG_T >
void grape::AutoParallelMessageManager< FRAG_T >::RegisterSyncBuffer ( const FRAG_T &  frag,
ISyncBuffer buffer,
MessageStrategy  strategy 
)
inline

Register a buffer to be sync automatically between rounds.

Parameters
frag
buffer
strategy