|
|
|
@ -274,8 +274,12 @@ void dalgoDistEdgeApproxDomEdgesLinearSearchMesgBndlSmallMateCMP(
|
|
|
|
|
/////////////////////////// PROCESS MATCHED VERTICES //////////////////////////////
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
// TODO what would be the optimal UCHUNK
|
|
|
|
|
vector<MilanLongInt> UChunkBeingProcessed;
|
|
|
|
|
UChunkBeingProcessed.reserve(UCHUNK);
|
|
|
|
|
|
|
|
|
|
processMatchedVertices(NLVer,
|
|
|
|
|
//UChunkBeingProcessed,
|
|
|
|
|
UChunkBeingProcessed,
|
|
|
|
|
U,
|
|
|
|
|
privateU,
|
|
|
|
|
StartIndex,
|
|
|
|
@ -382,40 +386,29 @@ void dalgoDistEdgeApproxDomEdgesLinearSearchMesgBndlSmallMateCMP(
|
|
|
|
|
v = verLocInd[k];
|
|
|
|
|
if ((v >= StartIndex) && (v <= EndIndex))
|
|
|
|
|
{ // v is a Local Vertex:
|
|
|
|
|
if (Mate[v - StartIndex] >= 0) // v is already matched
|
|
|
|
|
continue;
|
|
|
|
|
//if (Mate[v - StartIndex] >= 0) // v is already matched
|
|
|
|
|
// continue;
|
|
|
|
|
#ifdef PRINT_DEBUG_INFO_
|
|
|
|
|
cout << "\n(" << myRank << ")v: " << v << " c(v)= " << candidateMate[v - StartIndex] << " Mate[v]: " << Mate[v];
|
|
|
|
|
fflush(stdout);
|
|
|
|
|
#endif
|
|
|
|
|
// If the current vertex is pointing to a matched vertex and is not matched
|
|
|
|
|
if (Mate[v - StartIndex] < 0)
|
|
|
|
|
{
|
|
|
|
|
if (candidateMate[v - StartIndex] == u)
|
|
|
|
|
{ // Only if pointing to the matched vertex
|
|
|
|
|
// Start: PARALLEL_PROCESS_EXPOSED_VERTEX_B(v)
|
|
|
|
|
// Start: PARALLEL_COMPUTE_CANDIDATE_MATE_B(v)
|
|
|
|
|
adj11 = verLocPtr[v - StartIndex];
|
|
|
|
|
adj12 = verLocPtr[v - StartIndex + 1];
|
|
|
|
|
w = -1;
|
|
|
|
|
heaviestEdgeWt = MilanRealMin; // Assign the smallest Value possible first LDBL_MIN
|
|
|
|
|
for (k1 = adj11; k1 < adj12; k1++)
|
|
|
|
|
{
|
|
|
|
|
if ((verLocInd[k1] < StartIndex) || (verLocInd[k1] > EndIndex))
|
|
|
|
|
{ // Is it a ghost vertex?
|
|
|
|
|
if (GMate[Ghost2LocalMap[verLocInd[k1]]] >= 0) // Already matched
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{ // A local vertex
|
|
|
|
|
if (Mate[verLocInd[k1] - StartIndex] >= 0) // Already matched
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
// Start: PARALLEL_PROCESS_EXPOSED_VERTEX_B(v)
|
|
|
|
|
w = computeCandidateMate(verLocPtr[v - StartIndex],
|
|
|
|
|
verLocPtr[v - StartIndex + 1],
|
|
|
|
|
edgeLocWeight, 0,
|
|
|
|
|
verLocInd,
|
|
|
|
|
StartIndex,
|
|
|
|
|
EndIndex,
|
|
|
|
|
GMate,
|
|
|
|
|
Mate,
|
|
|
|
|
Ghost2LocalMap);
|
|
|
|
|
|
|
|
|
|
if ((edgeLocWeight[k1] > heaviestEdgeWt) ||
|
|
|
|
|
((edgeLocWeight[k1] == heaviestEdgeWt) && (w < verLocInd[k1])))
|
|
|
|
|
{
|
|
|
|
|
heaviestEdgeWt = edgeLocWeight[k1];
|
|
|
|
|
w = verLocInd[k1];
|
|
|
|
|
}
|
|
|
|
|
} // End of for loop
|
|
|
|
|
candidateMate[v - StartIndex] = w;
|
|
|
|
|
// End: PARALLEL_COMPUTE_CANDIDATE_MATE_B(v)
|
|
|
|
|
#ifdef PRINT_DEBUG_INFO_
|
|
|
|
@ -507,6 +500,7 @@ void dalgoDistEdgeApproxDomEdgesLinearSearchMesgBndlSmallMateCMP(
|
|
|
|
|
} // End of Else: w == -1
|
|
|
|
|
// End: PARALLEL_PROCESS_EXPOSED_VERTEX_B(v)
|
|
|
|
|
} // End of If (candidateMate[v-StartIndex] == u)
|
|
|
|
|
}
|
|
|
|
|
} // End of if ( (v >= StartIndex) && (v <= EndIndex) ) //If Local Vertex:
|
|
|
|
|
else
|
|
|
|
|
{ // Neighbor v is a ghost vertex
|
|
|
|
|