#include "MatchBoxPC.h" // TODO comment #if !defined(SERIAL_MPI) void clean(MilanLongInt NLVer, MilanInt myRank, MilanLongInt MessageIndex, vector &SRequest, vector &SStatus, MilanInt BufferSize, MilanLongInt *Buffer, MilanLongInt msgActual, MilanLongInt *msgActualSent, MilanLongInt msgInd, MilanLongInt *msgIndSent, MilanLongInt NumMessagesBundled, MilanReal *msgPercent) { // Cleanup Phase #pragma omp parallel { #pragma omp master { #pragma omp task { #ifdef PRINT_DEBUG_INFO_ cout << "\n(" << myRank << ") Waitall= " << endl; fflush(stdout); #endif #ifdef DEBUG_HANG_ cout << "\n(" << myRank << ") Waitall " << endl; fflush(stdout); #endif //return; MPI_Waitall(MessageIndex, &SRequest[0], &SStatus[0]); // MPI_Buffer_attach(&Buffer, BufferSize); //Attach the Buffer if (BufferSize > 0) { MPI_Buffer_detach(&Buffer, &BufferSize); // Detach the Buffer free(Buffer); // Free the memory that was allocated } } #ifdef PRINT_DEBUG_INFO_ cout << "\n(" << myRank << ")End of function to compute matching: " << endl; fflush(stdout); cout << "\n(" << myRank << ")myCardinality: " << myCard << endl; fflush(stdout); cout << "\n(" << myRank << ")Matching took " << finishTime - startTime << "seconds" << endl; fflush(stdout); cout << "\n(" << myRank << ")** Getting out of the matching function **" << endl; fflush(stdout); #endif #ifdef PRINT_DEBUG_INFO_ cout << "\n(" << myRank << ") Number of Ghost edges = " << numGhostEdges; cout << "\n(" << myRank << ") Total number of potential message X 2 = " << numGhostEdges * 2; cout << "\n(" << myRank << ") Number messages bundled = " << NumMessagesBundled; cout << "\n(" << myRank << ") Total Individual Messages sent = " << msgInd; if (msgInd > 0) { cout << "\n(" << myRank << ") Percentage of messages bundled = " << ((double)NumMessagesBundled / (double)(msgInd)) * 100.0 << "% \n"; } fflush(stdout); #endif #pragma omp task { *msgActualSent = msgActual; *msgIndSent = msgInd; if (msgInd > 0) { *msgPercent = ((double)NumMessagesBundled / (double)(msgInd)) * 100.0; } else { *msgPercent = 0; } } #ifdef DEBUG_HANG_ if (myRank == 0) cout << "\n(" << myRank << ") Done" << endl; fflush(stdout); #endif } } } #endif