shared memory parallelization: add notification message #41
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -314,6 +314,8 @@ R151 = "Пустые области распараллеливания недо
|
||||
R171 = "Невозможно определить правила выравнивания для массива '%s'."
|
||||
//3023
|
||||
R202 = "Ссылка '%s' имеет отличный от оригинального массива размер"
|
||||
//3024
|
||||
R204 = "Пересечения памяти массивов препятствуют распараллеливанию цикла"
|
||||
|
||||
//4001
|
||||
//---TODO ошибки из SAGE
|
||||
|
||||
Reference in New Issue
Block a user