shared memory parallelization: add notification message #41

Merged
Alexander_KS merged 1 commits from shared_memory_parallelization into master 2024-04-13 16:56:58 +00:00
4 changed files with 14 additions and 2 deletions
Showing only changes of commit 072b587e90 - Show all commits

View File

@@ -105,6 +105,7 @@ static void preventLoopsFromParallelizations(LoopGraph* loop, const set<DIST::Ar
__spf_printToLongBuf(bufR, R202, to_wstring(array_ref).c_str());
messagesForFile.push_back(Messages(WARR, loop->lineNum, bufR, bufE, 3023));
loop->hasAccessToSubArray = true;
}
}
}

View File

@@ -72,6 +72,7 @@ public:
inDvmhRegion = 0;
isFor = false;
inCanonicalFrom = false;
hasAccessToSubArray = false;
}
~LoopGraph()
@@ -111,7 +112,7 @@ public:
{
return hasUnknownArrayDep || hasUnknownScalarDep || hasGoto || hasPrints || (hasConflicts.size() != 0) || hasStops || hasNonPureProcedures ||
hasUnknownArrayAssigns || hasNonRectangularBounds || hasIndirectAccess || hasWritesToNonDistribute || hasDifferentAlignRules || hasDvmIntervals ||
!isFor || lastprivateScalars.size();
!isFor || lastprivateScalars.size() || hasAccessToSubArray;
}
bool hasLimitsToSplit() const
@@ -171,6 +172,9 @@ public:
if (lastprivateScalars.size())
messages->push_back(Messages(NOTE, line, R199, L"lastprivate scalar dependency prevents parallelization of this loop", 3006));
if(hasAccessToSubArray)
messages->push_back(Messages(NOTE, line, R204, L"Arrays' memory intersections prevents this loop from parallelization", 3024));
}
void setNewRedistributeRules(const std::vector<std::pair<DIST::Array*, DistrVariant*>> &newRedistributeRules)
@@ -443,6 +447,8 @@ public:
bool isFor;
bool inCanonicalFrom;
// make sense only for NODIST regime
bool hasAccessToSubArray;
std::vector<LoopGraph*> children;
std::vector<LoopGraph*> funcChildren;

View File

@@ -127,6 +127,7 @@ enum typeMessage { WARR, ERROR, NOTE };
// 21 "empty parallel regions is forbidden"
// 22 "Can not find align rules"
// 23 "Array reference '%s' has a different size from the original array"
// 24 "Arrays' memory intersections prevents this loop from parallelization"
// 40xx LOW LEVEL WARNINGS
// 01
@@ -275,7 +276,7 @@ static void printStackTrace() { };
} \
} while (0)
// Свободный - R204
// Свободный - R205
// Гайд по русификации сообщений: При добавлении нового сообщения, меняется последний сводобный идентификатор.
// В этом файле остаются только спецификаторы, для которых будет заполнен текст. Полный текст пишется в файле
// russian_errors_text.txt. Спецификаторы там тоже сохраняются, по ним в визуализаторе будет восстановлен
@@ -603,6 +604,8 @@ static const wchar_t *R151 = L"R151:";
static const wchar_t *R171 = L"R171:%s";
//3023
static const wchar_t *R202 = L"R202:%s";
//3024
static const wchar_t* R204 = L"R204:";
//4001
//---TODO ошибки из SAGE

View File

@@ -314,6 +314,8 @@ R151 = "Пустые области распараллеливания недо
R171 = "Невозможно определить правила выравнивания для массива '%s'."
//3023
R202 = "Ссылка '%s' имеет отличный от оригинального массива размер"
//3024
R204 = "Пересечения памяти массивов препятствуют распараллеливанию цикла"
//4001
//---TODO ошибки из SAGE