isAlreadyMatched is now atomic

This commit is contained in:
StefanoPetrilli
2022-07-20 15:45:29 -05:00
parent cdf92ea2b2
commit abf258e2e8
2 changed files with 20 additions and 11 deletions
-2
View File
@@ -1,8 +1,6 @@
#include "MatchBoxPC.h"
// TODO comment
// TODO use task
// TODO destroy the locks
void clean(MilanLongInt NLVer,
MilanInt myRank,
+20 -9
View File
@@ -1,6 +1,5 @@
#include "MatchBoxPC.h"
//TODO can be optimized!!
/**
* //TODO documentation
* @param k
@@ -13,14 +12,14 @@
* @return
*/
bool isAlreadyMatched(MilanLongInt node,
MilanLongInt StartIndex,
MilanLongInt EndIndex,
vector <MilanLongInt> &GMate,
MilanLongInt* Mate,
map <MilanLongInt, MilanLongInt> &Ghost2LocalMap
) {
MilanLongInt StartIndex,
MilanLongInt EndIndex,
vector<MilanLongInt> &GMate,
MilanLongInt *Mate,
map<MilanLongInt, MilanLongInt> &Ghost2LocalMap)
{
bool result = false;
/*
#pragma omp critical(Mate)
{
if ((node < StartIndex) || (node > EndIndex)) { //Is it a ghost vertex?
@@ -30,6 +29,18 @@ bool isAlreadyMatched(MilanLongInt node,
}
}
*/
MilanLongInt val;
if ((node < StartIndex) || (node > EndIndex)) // if ghost vertex
{
#pragma omp atomic read
val = GMate[Ghost2LocalMap[node]];
return val >= 0; // Already matched
}
return result;
// If not ghost vertex
#pragma omp atomic read
val = Mate[node - StartIndex];
return val >= 0; // Already matched
}