From c26cc261c48f78e5e9137944541aa7d90c872bae Mon Sep 17 00:00:00 2001 From: IgorBobrov Date: Sun, 5 Oct 2025 23:06:05 +0300 Subject: [PATCH] libpredict_integration: fix signatures --- src/Predictor/PredictScheme.cpp | 4 ++-- src/Predictor/PredictScheme.h | 2 +- src/Predictor/PredictSchemeWithLibrary.cpp | 18 +++++++++--------- src/Predictor/PredictSchemeWithLibrary.h | 12 ++++++------ src/Sapfor.cpp | 5 ++--- src/Utils/russian_errors_text.txt | 10 +++++++++- 6 files changed, 29 insertions(+), 22 deletions(-) diff --git a/src/Predictor/PredictScheme.cpp b/src/Predictor/PredictScheme.cpp index 6d0f959..fe57247 100644 --- a/src/Predictor/PredictScheme.cpp +++ b/src/Predictor/PredictScheme.cpp @@ -40,8 +40,8 @@ using json = nlohmann::json; void runPredictSchemeOld(SgProject &project, vector> &topologies, vector ¶llelRegions, - map> loopGraph, - map> intervals, + map> &loopGraph, + map> &intervals, map> &SPF_messages) { int maxSizeDist = 0; diff --git a/src/Predictor/PredictScheme.h b/src/Predictor/PredictScheme.h index 5af4df2..0f99982 100644 --- a/src/Predictor/PredictScheme.h +++ b/src/Predictor/PredictScheme.h @@ -62,4 +62,4 @@ void processFileToPredict(SgFile *file, PredictorStats &predictorCounts); void calculateStatsForPredictor(const std::map>& allFuncInfo, const std::map>& gCovInfo); void parseDvmDirForPredictor(const std::map, std::pair>& declaredArrays, const std::map& commonBlocks, const std::map>& allFuncInfo, const std::map>& gCovInfo); -void runPredictSchemeOld(SgProject &project, std::vector> &topologies, std::vector ¶llelRegions, std::map> loopGraph, std::map> intervals, std::map> &SPF_messages); +void runPredictSchemeOld(SgProject &project, std::vector> &topologies, std::vector ¶llelRegions, std::map> &loopGraph, std::map> &intervals, std::map> &SPF_messages); diff --git a/src/Predictor/PredictSchemeWithLibrary.cpp b/src/Predictor/PredictSchemeWithLibrary.cpp index 429dfec..b4a7f14 100644 --- a/src/Predictor/PredictSchemeWithLibrary.cpp +++ b/src/Predictor/PredictSchemeWithLibrary.cpp @@ -24,10 +24,10 @@ using std::tuple; // МОЖЕТ КАК-ТО ВЫЧИСЛЯТЬ ДИРЕКТИВЫ, А ПОТОМ ДЕЛАТЬ ПРОГОНЫ? double runLibpredictCalc(SgProject &project, - vector topology, - string clusterConfStr, - vector ¶llelRegions, - map> loopGraph, + const vector &topology, + const string &clusterConfStr, + const vector ¶llelRegions, + map> &loopGraph, map> &SPF_messages) { libpredict::RetInit retInit = libpredict::Init(clusterConfStr, topology[0], topology[1], topology[2], topology[3]); @@ -47,7 +47,7 @@ double runLibpredictCalc(SgProject &project, for (int z = 0; z < parallelRegions.size(); ++z) { const DataDirective &dataDirectives = parallelRegions[z]->GetDataDir(); const vector ¤tVariant = parallelRegions[z]->GetCurrentVariant(); - DIST::Arrays &allArrays = parallelRegions[z]->GetAllArraysToModify(); + const DIST::Arrays &allArrays = parallelRegions[z]->GetAllArrays(); auto &tmp = dataDirectives.distrRules; vector> currentVar; @@ -220,9 +220,9 @@ double runLibpredictCalc(SgProject &project, } void runPredictScheme(SgProject &project, - vector> &topologies, // такой способ передачи разве хочу? - vector ¶llelRegions, - map> loopGraph, + vector> &topologies, + const vector ¶llelRegions, + map> &loopGraph, map> &SPF_messages) { // calculating maximum dimension of distribution @@ -241,7 +241,7 @@ void runPredictScheme(SgProject &project, for (int z = 0; z < var->distRule.size(); ++z) if (var->distRule[z] == dist::BLOCK) ++countBlock; - maxSizeDist = countBlock; + maxSizeDist = std::max(maxSizeDist, countBlock); } } diff --git a/src/Predictor/PredictSchemeWithLibrary.h b/src/Predictor/PredictSchemeWithLibrary.h index e42d4e5..136d75d 100644 --- a/src/Predictor/PredictSchemeWithLibrary.h +++ b/src/Predictor/PredictSchemeWithLibrary.h @@ -7,13 +7,13 @@ void runPredictScheme(SgProject &project, std::vector> &topologies, - std::vector ¶llelRegions, - std::map> loopGraph, + const std::vector ¶llelRegions, + std::map> &loopGraph, std::map> &SPF_messages); double runLibpredictCalc(SgProject &project, - std::vector topology, - std::string clusterConfStr, - std::vector ¶llelRegions, - std::map> loopGraph, + const std::vector &topology, + const std::string &clusterConfStr, + const std::vector ¶llelRegions, + std::map> &loopGraph, std::map> &SPF_messages); diff --git a/src/Sapfor.cpp b/src/Sapfor.cpp index 71bd561..c087595 100644 --- a/src/Sapfor.cpp +++ b/src/Sapfor.cpp @@ -2125,9 +2125,8 @@ void runPass(const int curr_regime, const char *proj_name, const char *folderNam runAnalysis(*project, CALCULATE_STATS_SCHEME, false); - //TODO: need to rewrite this to new algo - /*if (!folderName && !consoleMode || predictOn) - runAnalysis(*project, PREDICT_SCHEME, false); */ + if (!folderName && !consoleMode || predictOn) + runAnalysis(*project, PREDICT_SCHEME, false); runAnalysis(*project, REMOVE_COPIES, false); runAnalysis(*project, SWAP_LOOPS, false); diff --git a/src/Utils/russian_errors_text.txt b/src/Utils/russian_errors_text.txt index cf2c8f3..5a0338b 100644 --- a/src/Utils/russian_errors_text.txt +++ b/src/Utils/russian_errors_text.txt @@ -184,8 +184,16 @@ R182 = "Редукционная операция по элементу масс R183 = "Расположение операторов FORMAT не поддерживается, попробуйте применить проход Коррекция стиля кода". //1061 R184 = "Область объявления массива '%s' конфликтует с предыдущей областью. Возможно, это вызвано использованием include-файлов. Попробуйте применить проход 'Подстановка заголовочных файлов'". -//1042 +//1062 R205 = "Массив '%s' состоящий в common блоке '%s' должен иметь описание в главной программной единице для объявления в директиве DECLARE" +//1063 +R206 = "Ошибка инициализации библиотеки libpredict с конфигурацией кластера: %s, код возврата: %d" +//1064 +R207 = "Ошибка распределения массива '%s' с помощью libpredict, код возврата: %d" +//1065 +R208 = "Ошибка выравнивания массива '%s' с массивом '%s' с помощью libpredict, код возврата: %d" +//1066 +R209 = "Ошибка обработки shadow_renew для массива '%s' с помощью libpredict, код возврата: %d" //2001 R94 = "Невозможно автоматически преобразовать данное присваивание к циклу"