@ -178,264 +178,416 @@ extern "C"
# define MilanRealMin MINUS_INFINITY
# define MilanRealMin MINUS_INFINITY
# endif
# endif
# ifdef OPENMP
/* These functions are only used in the experimental OMP implementation, if that
/* These functions are only used in the experimental OMP implementation, if that
is disabled there is no reason to actually compile or reference them . */
is disabled there is no reason to actually compile or reference them . */
// Function of find the owner of a ghost vertex using binary search:
// Function of find the owner of a ghost vertex using binary search:
MilanInt findOwnerOfGhost ( MilanLongInt vtxIndex , MilanLongInt * mVerDistance ,
MilanInt findOwnerOfGhost ( MilanLongInt vtxIndex , MilanLongInt * mVerDistance ,
MilanInt myRank , MilanInt numProcs ) ;
MilanInt myRank , MilanInt numProcs ) ;
MilanLongInt firstComputeCandidateMate ( MilanLongInt adj1 ,
MilanLongInt firstComputeCandidateMateD ( MilanLongInt adj1 ,
MilanLongInt adj2 ,
MilanLongInt adj2 ,
MilanLongInt * verLocInd ,
MilanLongInt * verLocInd ,
MilanReal * edgeLocWeight ) ;
MilanReal * edgeLocWeight ) ;
void queuesTransfer ( vector < MilanLongInt > & U ,
vector < MilanLongInt > & privateU ,
void queuesTransfer ( vector < MilanLongInt > & U ,
vector < MilanLongInt > & QLocalVtx ,
vector < MilanLongInt > & privateU ,
vector < MilanLongInt > & QGhostVtx ,
vector < MilanLongInt > & QLocalVtx ,
vector < MilanLongInt > & QMsgType ,
vector < MilanLongInt > & QGhostVtx ,
vector < MilanInt > & QOwner ,
vector < MilanLongInt > & QMsgType ,
vector < MilanLongInt > & privateQLocalVtx ,
vector < MilanInt > & QOwner ,
vector < MilanLongInt > & privateQGhostVtx ,
vector < MilanLongInt > & privateQLocalVtx ,
vector < MilanLongInt > & privateQMsgType ,
vector < MilanLongInt > & privateQGhostVtx ,
vector < MilanInt > & privateQOwner ) ;
vector < MilanLongInt > & privateQMsgType ,
vector < MilanInt > & privateQOwner ) ;
bool isAlreadyMatched ( MilanLongInt node ,
MilanLongInt StartIndex ,
bool isAlreadyMatched ( MilanLongInt node ,
MilanLongInt EndIndex ,
MilanLongInt StartIndex ,
vector < MilanLongInt > & GMate ,
MilanLongInt EndIndex ,
MilanLongInt * Mate ,
vector < MilanLongInt > & GMate ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ) ;
MilanLongInt * Mate ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ) ;
MilanLongInt computeCandidateMate ( MilanLongInt adj1 ,
MilanLongInt adj2 ,
MilanLongInt computeCandidateMateD ( MilanLongInt adj1 ,
MilanReal * edgeLocWeight ,
MilanLongInt adj2 ,
MilanLongInt k ,
MilanReal * edgeLocWeight ,
MilanLongInt * verLocInd ,
MilanLongInt k ,
MilanLongInt StartIndex ,
MilanLongInt * verLocInd ,
MilanLongInt EndIndex ,
MilanLongInt StartIndex ,
vector < MilanLongInt > & GMate ,
MilanLongInt EndIndex ,
MilanLongInt * Mate ,
vector < MilanLongInt > & GMate ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ) ;
MilanLongInt * Mate ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ) ;
void initialize ( MilanLongInt NLVer , MilanLongInt NLEdge ,
MilanLongInt StartIndex , MilanLongInt EndIndex ,
void initialize ( MilanLongInt NLVer , MilanLongInt NLEdge ,
MilanLongInt * numGhostEdgesPtr ,
MilanLongInt StartIndex , MilanLongInt EndIndex ,
MilanLongInt * numGhostVerticesPtr ,
MilanLongInt * numGhostEdgesPtr ,
MilanLongInt * S ,
MilanLongInt * numGhostVerticesPtr ,
MilanLongInt * verLocInd ,
MilanLongInt * S ,
MilanLongInt * verLocPtr ,
MilanLongInt * verLocInd ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ,
MilanLongInt * verLocPtr ,
vector < MilanLongInt > & Counter ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ,
vector < MilanLongInt > & verGhostPtr ,
vector < MilanLongInt > & Counter ,
vector < MilanLongInt > & verGhostInd ,
vector < MilanLongInt > & verGhostPtr ,
vector < MilanLongInt > & tempCounter ,
vector < MilanLongInt > & verGhostInd ,
vector < MilanLongInt > & GMate ,
vector < MilanLongInt > & tempCounter ,
vector < MilanLongInt > & Message ,
vector < MilanLongInt > & GMate ,
vector < MilanLongInt > & QLocalVtx ,
vector < MilanLongInt > & Message ,
vector < MilanLongInt > & QGhostVtx ,
vector < MilanLongInt > & QLocalVtx ,
vector < MilanLongInt > & QMsgType ,
vector < MilanLongInt > & QGhostVtx ,
vector < MilanInt > & QOwner ,
vector < MilanLongInt > & QMsgType ,
MilanLongInt * & candidateMate ,
vector < MilanInt > & QOwner ,
vector < MilanLongInt > & U ,
MilanLongInt * & candidateMate ,
vector < MilanLongInt > & privateU ,
vector < MilanLongInt > & U ,
vector < MilanLongInt > & privateQLocalVtx ,
vector < MilanLongInt > & privateU ,
vector < MilanLongInt > & privateQGhostVtx ,
vector < MilanLongInt > & privateQLocalVtx ,
vector < MilanLongInt > & privateQMsgType ,
vector < MilanLongInt > & privateQGhostVtx ,
vector < MilanInt > & privateQOwner ) ;
vector < MilanLongInt > & privateQMsgType ,
vector < MilanInt > & privateQOwner ) ;
void clean ( MilanLongInt NLVer ,
MilanInt myRank ,
void clean ( MilanLongInt NLVer ,
MilanLongInt MessageIndex ,
MilanInt myRank ,
vector < MPI_Request > & SRequest ,
MilanLongInt MessageIndex ,
vector < MPI_Status > & SStatus ,
vector < MPI_Request > & SRequest ,
MilanInt BufferSize ,
vector < MPI_Status > & SStatus ,
MilanLongInt * Buffer ,
MilanInt BufferSize ,
MilanLongInt msgActual ,
MilanLongInt * Buffer ,
MilanLongInt * msgActualSent ,
MilanLongInt msgActual ,
MilanLongInt msgInd ,
MilanLongInt * msgActualSent ,
MilanLongInt * msgIndSent ,
MilanLongInt msgInd ,
MilanLongInt NumMessagesBundled ,
MilanLongInt * msgIndSent ,
MilanReal * msgPercent ) ;
MilanLongInt NumMessagesBundled ,
MilanReal * msgPercent ) ;
void PARALLEL_COMPUTE_CANDIDATE_MATE_B ( MilanLongInt NLVer ,
MilanLongInt * verLocPtr ,
void PARALLEL_COMPUTE_CANDIDATE_MATE_BD ( MilanLongInt NLVer ,
MilanLongInt * verLocInd ,
MilanLongInt * verLocPtr ,
MilanInt myRank ,
MilanLongInt * verLocInd ,
MilanReal * edgeLocWeight ,
MilanInt myRank ,
MilanLongInt * candidateMate ) ;
MilanReal * edgeLocWeight ,
MilanLongInt * candidateMate ) ;
void PARALLEL_PROCESS_EXPOSED_VERTEX_B ( MilanLongInt NLVer ,
MilanLongInt * candidateMate ,
void PARALLEL_PROCESS_EXPOSED_VERTEX_BD ( MilanLongInt NLVer ,
MilanLongInt * verLocInd ,
MilanLongInt * candidateMate ,
MilanLongInt * verLocPtr ,
MilanLongInt * verLocInd ,
MilanLongInt StartIndex ,
MilanLongInt * verLocPtr ,
MilanLongInt EndIndex ,
MilanLongInt StartIndex ,
MilanLongInt * Mate ,
MilanLongInt EndIndex ,
vector < MilanLongInt > & GMate ,
MilanLongInt * Mate ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ,
vector < MilanLongInt > & GMate ,
MilanReal * edgeLocWeight ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ,
MilanLongInt * myCardPtr ,
MilanReal * edgeLocWeight ,
MilanLongInt * msgIndPtr ,
MilanLongInt * myCardPtr ,
MilanLongInt * NumMessagesBundledPtr ,
MilanLongInt * msgIndPtr ,
MilanLongInt * SPtr ,
MilanLongInt * NumMessagesBundledPtr ,
MilanLongInt * verDistance ,
MilanLongInt * SPtr ,
MilanLongInt * PCounter ,
MilanLongInt * verDistance ,
vector < MilanLongInt > & Counter ,
MilanLongInt * PCounter ,
MilanInt myRank ,
vector < MilanLongInt > & Counter ,
MilanInt numProcs ,
MilanInt myRank ,
vector < MilanLongInt > & U ,
MilanInt numProcs ,
vector < MilanLongInt > & privateU ,
vector < MilanLongInt > & U ,
vector < MilanLongInt > & QLocalVtx ,
vector < MilanLongInt > & privateU ,
vector < MilanLongInt > & QGhostVtx ,
vector < MilanLongInt > & QLocalVtx ,
vector < MilanLongInt > & QMsgType ,
vector < MilanLongInt > & QGhostVtx ,
vector < MilanInt > & QOwner ,
vector < MilanLongInt > & QMsgType ,
vector < MilanLongInt > & privateQLocalVtx ,
vector < MilanInt > & QOwner ,
vector < MilanLongInt > & privateQGhostVtx ,
vector < MilanLongInt > & privateQLocalVtx ,
vector < MilanLongInt > & privateQMsgType ,
vector < MilanLongInt > & privateQGhostVtx ,
vector < MilanInt > & privateQOwner ) ;
vector < MilanLongInt > & privateQMsgType ,
vector < MilanInt > & privateQOwner ) ;
void PROCESS_CROSS_EDGE ( MilanLongInt * edge ,
MilanLongInt * SPtr ) ;
void PROCESS_CROSS_EDGE ( MilanLongInt * edge ,
MilanLongInt * SPtr ) ;
void processMatchedVertices (
MilanLongInt NLVer ,
void processMatchedVerticesD (
vector < MilanLongInt > & UChunkBeingProcessed ,
MilanLongInt NLVer ,
vector < MilanLongInt > & U ,
vector < MilanLongInt > & UChunkBeingProcessed ,
vector < MilanLongInt > & privateU ,
vector < MilanLongInt > & U ,
MilanLongInt StartIndex ,
vector < MilanLongInt > & privateU ,
MilanLongInt EndIndex ,
MilanLongInt StartIndex ,
MilanLongInt * myCardPtr ,
MilanLongInt EndIndex ,
MilanLongInt * msgIndPtr ,
MilanLongInt * myCardPtr ,
MilanLongInt * NumMessagesBundledPtr ,
MilanLongInt * msgIndPtr ,
MilanLongInt * SPtr ,
MilanLongInt * NumMessagesBundledPtr ,
MilanLongInt * verLocPtr ,
MilanLongInt * SPtr ,
MilanLongInt * verLocInd ,
MilanLongInt * verLocPtr ,
MilanLongInt * verDistance ,
MilanLongInt * verLocInd ,
MilanLongInt * PCounter ,
MilanLongInt * verDistance ,
vector < MilanLongInt > & Counter ,
MilanLongInt * PCounter ,
MilanInt myRank ,
vector < MilanLongInt > & Counter ,
MilanInt numProcs ,
MilanInt myRank ,
MilanLongInt * candidateMate ,
MilanInt numProcs ,
vector < MilanLongInt > & GMate ,
MilanLongInt * candidateMate ,
MilanLongInt * Mate ,
vector < MilanLongInt > & GMate ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ,
MilanLongInt * Mate ,
MilanReal * edgeLocWeight ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ,
vector < MilanLongInt > & QLocalVtx ,
MilanReal * edgeLocWeight ,
vector < MilanLongInt > & QGhostVtx ,
vector < MilanLongInt > & QLocalVtx ,
vector < MilanLongInt > & QMsgType ,
vector < MilanLongInt > & QGhostVtx ,
vector < MilanInt > & QOwner ,
vector < MilanLongInt > & QMsgType ,
vector < MilanLongInt > & privateQLocalVtx ,
vector < MilanInt > & QOwner ,
vector < MilanLongInt > & privateQGhostVtx ,
vector < MilanLongInt > & privateQLocalVtx ,
vector < MilanLongInt > & privateQMsgType ,
vector < MilanLongInt > & privateQGhostVtx ,
vector < MilanInt > & privateQOwner ) ;
vector < MilanLongInt > & privateQMsgType ,
vector < MilanInt > & privateQOwner ) ;
void processMatchedVerticesAndSendMessages (
MilanLongInt NLVer ,
void processMatchedVerticesAndSendMessagesD (
vector < MilanLongInt > & UChunkBeingProcessed ,
MilanLongInt NLVer ,
vector < MilanLongInt > & U ,
vector < MilanLongInt > & UChunkBeingProcessed ,
vector < MilanLongInt > & privateU ,
vector < MilanLongInt > & U ,
MilanLongInt StartIndex ,
vector < MilanLongInt > & privateU ,
MilanLongInt EndIndex ,
MilanLongInt StartIndex ,
MilanLongInt * myCardPtr ,
MilanLongInt EndIndex ,
MilanLongInt * msgIndPtr ,
MilanLongInt * myCardPtr ,
MilanLongInt * NumMessagesBundledPtr ,
MilanLongInt * msgIndPtr ,
MilanLongInt * SPtr ,
MilanLongInt * NumMessagesBundledPtr ,
MilanLongInt * verLocPtr ,
MilanLongInt * SPtr ,
MilanLongInt * verLocInd ,
MilanLongInt * verLocPtr ,
MilanLongInt * verDistance ,
MilanLongInt * verLocInd ,
MilanLongInt * PCounter ,
MilanLongInt * verDistance ,
vector < MilanLongInt > & Counter ,
MilanLongInt * PCounter ,
MilanInt myRank ,
vector < MilanLongInt > & Counter ,
MilanInt numProcs ,
MilanInt myRank ,
MilanLongInt * candidateMate ,
MilanInt numProcs ,
vector < MilanLongInt > & GMate ,
MilanLongInt * candidateMate ,
MilanLongInt * Mate ,
vector < MilanLongInt > & GMate ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ,
MilanLongInt * Mate ,
MilanReal * edgeLocWeight ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ,
vector < MilanLongInt > & QLocalVtx ,
MilanReal * edgeLocWeight ,
vector < MilanLongInt > & QGhostVtx ,
vector < MilanLongInt > & QLocalVtx ,
vector < MilanLongInt > & QMsgType ,
vector < MilanLongInt > & QGhostVtx ,
vector < MilanInt > & QOwner ,
vector < MilanLongInt > & QMsgType ,
vector < MilanLongInt > & privateQLocalVtx ,
vector < MilanInt > & QOwner ,
vector < MilanLongInt > & privateQGhostVtx ,
vector < MilanLongInt > & privateQLocalVtx ,
vector < MilanLongInt > & privateQMsgType ,
vector < MilanLongInt > & privateQGhostVtx ,
vector < MilanInt > & privateQOwner ,
vector < MilanLongInt > & privateQMsgType ,
MPI_Comm comm ,
vector < MilanInt > & privateQOwner ,
MilanLongInt * msgActual ,
MPI_Comm comm ,
vector < MilanLongInt > & Message ) ;
MilanLongInt * msgActual ,
vector < MilanLongInt > & Message ) ;
void sendBundledMessages ( MilanLongInt * numGhostEdgesPtr ,
MilanInt * BufferSizePtr ,
void sendBundledMessages ( MilanLongInt * numGhostEdgesPtr ,
MilanLongInt * Buffer ,
MilanInt * BufferSizePtr ,
vector < MilanLongInt > & PCumulative ,
MilanLongInt * Buffer ,
vector < MilanLongInt > & PMessageBundle ,
vector < MilanLongInt > & PCumulative ,
vector < MilanLongInt > & PSizeInfoMessages ,
vector < MilanLongInt > & PMessageBundle ,
MilanLongInt * PCounter ,
vector < MilanLongInt > & PSizeInfoMessages ,
MilanLongInt NumMessagesBundled ,
MilanLongInt * PCounter ,
MilanLongInt * msgActualPtr ,
MilanLongInt NumMessagesBundled ,
MilanLongInt * MessageIndexPtr ,
MilanLongInt * msgActualPtr ,
MilanInt numProcs ,
MilanLongInt * MessageIndexPtr ,
MilanInt myRank ,
MilanInt numProcs ,
MPI_Comm comm ,
MilanInt myRank ,
vector < MilanLongInt > & QLocalVtx ,
MPI_Comm comm ,
vector < MilanLongInt > & QGhostVtx ,
vector < MilanLongInt > & QLocalVtx ,
vector < MilanLongInt > & QMsgType ,
vector < MilanLongInt > & QGhostVtx ,
vector < MilanInt > & QOwner ,
vector < MilanLongInt > & QMsgType ,
vector < MPI_Request > & SRequest ,
vector < MilanInt > & QOwner ,
vector < MPI_Status > & SStatus ) ;
vector < MPI_Request > & SRequest ,
vector < MPI_Status > & SStatus ) ;
void processMessages (
MilanLongInt NLVer ,
void processMessagesD (
MilanLongInt * Mate ,
MilanLongInt NLVer ,
MilanLongInt * candidateMate ,
MilanLongInt * Mate ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ,
MilanLongInt * candidateMate ,
vector < MilanLongInt > & GMate ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ,
vector < MilanLongInt > & Counter ,
vector < MilanLongInt > & GMate ,
MilanLongInt StartIndex ,
vector < MilanLongInt > & Counter ,
MilanLongInt EndIndex ,
MilanLongInt StartIndex ,
MilanLongInt * myCardPtr ,
MilanLongInt EndIndex ,
MilanLongInt * msgIndPtr ,
MilanLongInt * myCardPtr ,
MilanLongInt * msgActualPtr ,
MilanLongInt * msgIndPtr ,
MilanReal * edgeLocWeight ,
MilanLongInt * msgActualPtr ,
MilanLongInt * verDistance ,
MilanReal * edgeLocWeight ,
MilanLongInt * verLocPtr ,
MilanLongInt * verDistance ,
MilanLongInt k ,
MilanLongInt * verLocPtr ,
MilanLongInt * verLocInd ,
MilanLongInt k ,
MilanInt numProcs ,
MilanLongInt * verLocInd ,
MilanInt myRank ,
MilanInt numProcs ,
MPI_Comm comm ,
MilanInt myRank ,
vector < MilanLongInt > & Message ,
MPI_Comm comm ,
MilanLongInt numGhostEdges ,
vector < MilanLongInt > & Message ,
MilanLongInt u ,
MilanLongInt numGhostEdges ,
MilanLongInt v ,
MilanLongInt u ,
MilanLongInt * SPtr ,
MilanLongInt v ,
vector < MilanLongInt > & U ) ;
MilanLongInt * SPtr ,
vector < MilanLongInt > & U ) ;
void extractUChunk (
vector < MilanLongInt > & UChunkBeingProcessed ,
void extractUChunk (
vector < MilanLongInt > & U ,
vector < MilanLongInt > & UChunkBeingProcessed ,
vector < MilanLongInt > & privateU ) ;
vector < MilanLongInt > & U ,
vector < MilanLongInt > & privateU ) ;
void dalgoDistEdgeApproxDomEdgesLinearSearchMesgBndlSmallMateCMP (
MilanLongInt NLVer , MilanLongInt NLEdge ,
MilanLongInt firstComputeCandidateMateS ( MilanLongInt adj1 ,
MilanLongInt * verLocPtr , MilanLongInt * verLocInd , MilanReal * edgeLocWeight ,
MilanLongInt adj2 ,
MilanLongInt * verDistance ,
MilanLongInt * verLocInd ,
MilanLongInt * Mate ,
MilanFloat * edgeLocWeight ) ;
MilanInt myRank , MilanInt numProcs , MPI_Comm comm ,
MilanLongInt * msgIndSent , MilanLongInt * msgActualSent , MilanReal * msgPercent ,
MilanLongInt computeCandidateMateS ( MilanLongInt adj1 ,
MilanReal * ph0_time , MilanReal * ph1_time , MilanReal * ph2_time ,
MilanLongInt adj2 ,
MilanLongInt * ph1_card , MilanLongInt * ph2_card ) ;
MilanFloat * edgeLocWeight ,
# endif
MilanLongInt k ,
MilanLongInt * verLocInd ,
MilanLongInt StartIndex ,
MilanLongInt EndIndex ,
vector < MilanLongInt > & GMate ,
MilanLongInt * Mate ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ) ;
void PARALLEL_COMPUTE_CANDIDATE_MATE_BS ( MilanLongInt NLVer ,
MilanLongInt * verLocPtr ,
MilanLongInt * verLocInd ,
MilanInt myRank ,
MilanFloat * edgeLocWeight ,
MilanLongInt * candidateMate ) ;
void PARALLEL_PROCESS_EXPOSED_VERTEX_BS ( MilanLongInt NLVer ,
MilanLongInt * candidateMate ,
MilanLongInt * verLocInd ,
MilanLongInt * verLocPtr ,
MilanLongInt StartIndex ,
MilanLongInt EndIndex ,
MilanLongInt * Mate ,
vector < MilanLongInt > & GMate ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ,
MilanFloat * edgeLocWeight ,
MilanLongInt * myCardPtr ,
MilanLongInt * msgIndPtr ,
MilanLongInt * NumMessagesBundledPtr ,
MilanLongInt * SPtr ,
MilanLongInt * verDistance ,
MilanLongInt * PCounter ,
vector < MilanLongInt > & Counter ,
MilanInt myRank ,
MilanInt numProcs ,
vector < MilanLongInt > & U ,
vector < MilanLongInt > & privateU ,
vector < MilanLongInt > & QLocalVtx ,
vector < MilanLongInt > & QGhostVtx ,
vector < MilanLongInt > & QMsgType ,
vector < MilanInt > & QOwner ,
vector < MilanLongInt > & privateQLocalVtx ,
vector < MilanLongInt > & privateQGhostVtx ,
vector < MilanLongInt > & privateQMsgType ,
vector < MilanInt > & privateQOwner ) ;
void processMatchedVerticesS (
MilanLongInt NLVer ,
vector < MilanLongInt > & UChunkBeingProcessed ,
vector < MilanLongInt > & U ,
vector < MilanLongInt > & privateU ,
MilanLongInt StartIndex ,
MilanLongInt EndIndex ,
MilanLongInt * myCardPtr ,
MilanLongInt * msgIndPtr ,
MilanLongInt * NumMessagesBundledPtr ,
MilanLongInt * SPtr ,
MilanLongInt * verLocPtr ,
MilanLongInt * verLocInd ,
MilanLongInt * verDistance ,
MilanLongInt * PCounter ,
vector < MilanLongInt > & Counter ,
MilanInt myRank ,
MilanInt numProcs ,
MilanLongInt * candidateMate ,
vector < MilanLongInt > & GMate ,
MilanLongInt * Mate ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ,
MilanFloat * edgeLocWeight ,
vector < MilanLongInt > & QLocalVtx ,
vector < MilanLongInt > & QGhostVtx ,
vector < MilanLongInt > & QMsgType ,
vector < MilanInt > & QOwner ,
vector < MilanLongInt > & privateQLocalVtx ,
vector < MilanLongInt > & privateQGhostVtx ,
vector < MilanLongInt > & privateQMsgType ,
vector < MilanInt > & privateQOwner ) ;
void processMatchedVerticesAndSendMessagesS (
MilanLongInt NLVer ,
vector < MilanLongInt > & UChunkBeingProcessed ,
vector < MilanLongInt > & U ,
vector < MilanLongInt > & privateU ,
MilanLongInt StartIndex ,
MilanLongInt EndIndex ,
MilanLongInt * myCardPtr ,
MilanLongInt * msgIndPtr ,
MilanLongInt * NumMessagesBundledPtr ,
MilanLongInt * SPtr ,
MilanLongInt * verLocPtr ,
MilanLongInt * verLocInd ,
MilanLongInt * verDistance ,
MilanLongInt * PCounter ,
vector < MilanLongInt > & Counter ,
MilanInt myRank ,
MilanInt numProcs ,
MilanLongInt * candidateMate ,
vector < MilanLongInt > & GMate ,
MilanLongInt * Mate ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ,
MilanFloat * edgeLocWeight ,
vector < MilanLongInt > & QLocalVtx ,
vector < MilanLongInt > & QGhostVtx ,
vector < MilanLongInt > & QMsgType ,
vector < MilanInt > & QOwner ,
vector < MilanLongInt > & privateQLocalVtx ,
vector < MilanLongInt > & privateQGhostVtx ,
vector < MilanLongInt > & privateQMsgType ,
vector < MilanInt > & privateQOwner ,
MPI_Comm comm ,
MilanLongInt * msgActual ,
vector < MilanLongInt > & Message ) ;
void processMessagesS (
MilanLongInt NLVer ,
MilanLongInt * Mate ,
MilanLongInt * candidateMate ,
map < MilanLongInt , MilanLongInt > & Ghost2LocalMap ,
vector < MilanLongInt > & GMate ,
vector < MilanLongInt > & Counter ,
MilanLongInt StartIndex ,
MilanLongInt EndIndex ,
MilanLongInt * myCardPtr ,
MilanLongInt * msgIndPtr ,
MilanLongInt * msgActualPtr ,
MilanFloat * edgeLocWeight ,
MilanLongInt * verDistance ,
MilanLongInt * verLocPtr ,
MilanLongInt k ,
MilanLongInt * verLocInd ,
MilanInt numProcs ,
MilanInt myRank ,
MPI_Comm comm ,
vector < MilanLongInt > & Message ,
MilanLongInt numGhostEdges ,
MilanLongInt u ,
MilanLongInt v ,
MilanLongInt * SPtr ,
vector < MilanLongInt > & U ) ;
void dalgoDistEdgeApproxDomEdgesLinearSearchMesgBndlSmallMateCMP (
MilanLongInt NLVer , MilanLongInt NLEdge ,
MilanLongInt * verLocPtr , MilanLongInt * verLocInd , MilanReal * edgeLocWeight ,
MilanLongInt * verDistance ,
MilanLongInt * Mate ,
MilanInt myRank , MilanInt numProcs , MPI_Comm comm ,
MilanLongInt * msgIndSent , MilanLongInt * msgActualSent , MilanReal * msgPercent ,
MilanReal * ph0_time , MilanReal * ph1_time , MilanReal * ph2_time ,
MilanLongInt * ph1_card , MilanLongInt * ph2_card ) ;
void salgoDistEdgeApproxDomEdgesLinearSearchMesgBndlSmallMateCMP (
MilanLongInt NLVer , MilanLongInt NLEdge ,
MilanLongInt * verLocPtr , MilanLongInt * verLocInd , MilanFloat * edgeLocWeight ,
MilanLongInt * verDistance ,
MilanLongInt * Mate ,
MilanInt myRank , MilanInt numProcs , MPI_Comm comm ,
MilanLongInt * msgIndSent , MilanLongInt * msgActualSent , MilanReal * msgPercent ,
MilanReal * ph0_time , MilanReal * ph1_time , MilanReal * ph2_time ,
MilanLongInt * ph1_card , MilanLongInt * ph2_card ) ;
# ifndef OPENMP
//Function of find the owner of a ghost vertex using binary search:
inline MilanInt findOwnerOfGhost ( MilanLongInt vtxIndex , MilanLongInt * mVerDistance ,
MilanInt myRank , MilanInt numProcs ) ;
# endif
void dalgoDistEdgeApproxDomEdgesLinearSearchMesgBndlSmallMateC (
void dalgoDistEdgeApproxDomEdgesLinearSearchMesgBndlSmallMateC (
MilanLongInt NLVer , MilanLongInt NLEdge ,
MilanLongInt NLVer , MilanLongInt NLEdge ,