From 3acfb32a24225e148101dcc0670f0627a66cf387 Mon Sep 17 00:00:00 2001 From: mkoch Date: Thu, 7 Sep 2023 16:00:52 +0300 Subject: [PATCH] First version of SELECT_ARRAY_DIM_CONF pass --- sapfor/experts/Sapfor_2017/CMakeLists.txt | 4 +++- .../_src/GraphCall/select_array_conf.cpp | Bin 0 -> 15966 bytes .../_src/GraphCall/select_array_conf.h | Bin 0 -> 1622 bytes sapfor/experts/Sapfor_2017/_src/Sapfor.cpp | 10 ++++++++++ sapfor/experts/Sapfor_2017/_src/Sapfor.h | 2 ++ .../Sapfor_2017/_src/Utils/PassManager.h | 10 ++++++---- 6 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 sapfor/experts/Sapfor_2017/_src/GraphCall/select_array_conf.cpp create mode 100644 sapfor/experts/Sapfor_2017/_src/GraphCall/select_array_conf.h diff --git a/sapfor/experts/Sapfor_2017/CMakeLists.txt b/sapfor/experts/Sapfor_2017/CMakeLists.txt index f62151f..d6c259b 100644 --- a/sapfor/experts/Sapfor_2017/CMakeLists.txt +++ b/sapfor/experts/Sapfor_2017/CMakeLists.txt @@ -285,7 +285,9 @@ set(EXPR_TRANSFORM _src/ExpressionTransform/control_flow_graph_part.cpp set(GR_CALL _src/GraphCall/graph_calls.cpp _src/GraphCall/graph_calls.h _src/GraphCall/graph_calls_base.cpp - _src/GraphCall/graph_calls_func.h) + _src/GraphCall/graph_calls_func.h + _src/GraphCall/select_array_conf.cpp + _src/GraphCall/select_array_conf.h) set(GR_LOOP _src/GraphLoop/graph_loops_base.cpp _src/GraphLoop/graph_loops.cpp diff --git a/sapfor/experts/Sapfor_2017/_src/GraphCall/select_array_conf.cpp b/sapfor/experts/Sapfor_2017/_src/GraphCall/select_array_conf.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6fddf2815f54a352ee9014e6b6427cb19379bd95 GIT binary patch literal 15966 zcmd5@U2hyk7OiKb{ST8}35^45*jEBb31BvoH=s2UB7Msjn#JM||`@d+F z3BK`j4vS8}jnUo(9~Y458Zu1-NBt8 z()W@FBI>`OVjMiixPOF?@tHtFiI;p7In6108MV#~mRVq=*ZnbYaE&L_@GtoL1b?QD zx_qK0uBDqu-H*P-V4u`P}N8rRL& zE+xn{ItiuTg^+yIed}E)&AF76x{7P@Q`ftmK196>am3jXP{Rm7tcd4Vu=MMQCgO$u z&T%G*ADN`{$Ve+J+zLYD`U)JEub`3T3b|!|MpQTlZ_FHwAdhW$pg85lxHnqvRswWG2~U=Dl0ny3t0?f}Kz*X|^=ivM?XB;1 zCm*S2=e{ocb4{BsP?_xGQ>Wx*@xN-Bw2qSGmHVq&!&fvZr`^7v>>P zk9UUACyaTEr`()s!-JKVu-ZyB(-+VYyI^~`E(S946uq3+7{l!SA5bGD)`;YrcgV4I z%07iRq<$Fh`z*K@cONIQk3@Sh2U<^PwtDgm9h*JGWBT=n8~Ly_(ZA+(!#JL0-yBWi zTG&s|N?lkVv9FacA+N88lU|0A@MmagoM!$78!hoU20HjnTCsgb`P6W26&~}l)@bz# zIi9h#-%m93aCc)pM$0!pVx}R9yWNxU#cJ-x#T=a(w8gVjXpD)Mrp($9GQ)lcFVnNBL-Z~%!I(>bQYOv$7xmmD#2>Aj z&|{g(V|HC1B|YodFvlI;qH}rMcO-RT_F3kK#?Rs6n#Q=1cfvk0hu zGDq!W)Qj6u-2IrxUScI?kei5wr18?zat#v$H5|yFw)dXoIn;`3ie+cFIqXA1q_1a{ zL1YhI>;9vs^rHhzCPSK+hTFnQLHq4TjWx#c{xG~zIHA5uj7^{)o?P-g&Q9--fxWlTtzsa%#H^QUvs)f3 z+of}C@xZqM43BT)=`1^~7WJ6ZX-~tbD3sS>zs&0j)lRLLOQdkkarI8$hsCLolk<_+ zLEl1~7NHq^`K0Zy)J+@b<1jdm>zsS~wd_UyYE{QmjF^u+%NOm|l{sv; zUT5JD-|F)6iAP%62OT0aP+PpPqm7I^%gOa-VLM1i06b@vtZ2z-imeaY)1r-iL`6>tLJ<1Ix=(aNppq|t*Y}< z>$nj6>$3Uiv#u{$uzun=!zw(nX0MxmMV)c)%+s#?%$geJ6L}x~o_zxLBDimouaIlr zFEzu8ly&G2pu^`&tf{paQw{%oyMe#x^>$K7$#d&V8fnZla^R@>cwkm(X>}Lt`FASn z7P8I)wclS$?@QHf$kp;LL;ZxljzUR3!~;)5>oSN!@*wsShUiUDsS_ZUq@^L*Mjvb;{UgaU| zb@Q#+qv8~#nZ#r~dAG_8#jewud)AQB|K# z{>J1=VLGldVCh6x?Y&qnG7ITlm2KWJ+3uaqKetyeIi+KIwyboQo_$G| zk*L+pv8bW_;4^rcI@_CAt`}8g#Xb*=lXWgqF7kMll;!nd?6X+`-Cs9fGTukkuBw@t zY9Bn>TeZX4VL0XpyFT8uy8Du8T%LV6-G1@?@Vfruj9H(xf9?FE{){z}Rb1P5|FydO z{cfiKqV_PnIU)O9p9V+|_kSuN%ENxm9fj&w^X+ylU$3@%xj{UPivb!fgynp3UFDB= zeOe&CHj_fLl>N)M>QwD8Gj3C9ujg-jzhrFPD*kkp);%xc(rPmQY+OgkSJh+CB96+d zUp?ivaeVMCe)&0Te^1TiEYWRyguFT}M@ZY-$R%#pPaLdj+wKHKTHEv_Mf3dLM0d;U y`ktj6q2I#Qqg(B-%R8>}6Gd8%ySwZ7)~5Ym;&=Z($6ZfaBu!o4{;vJ9fByi$SgpVS literal 0 HcmV?d00001 diff --git a/sapfor/experts/Sapfor_2017/_src/GraphCall/select_array_conf.h b/sapfor/experts/Sapfor_2017/_src/GraphCall/select_array_conf.h new file mode 100644 index 0000000000000000000000000000000000000000..41486981f3bcd6c6a313d2745f20a29b7345e5b0 GIT binary patch literal 1622 zcmcgs(MrQW5S(Yhe+U*tOKIP=6ttyMs37XQXqv`oO+wNZ^yAf;OO9(IQIIG{+GKZc zcXnrYKi)e?k>MU8Uij-FK@1-O_OWN44k9C2VS@$bLt~d>)S%6=ra#>Y8*R4qNq?cpwBbFgwbr&2clf_TUj(~`gr8+@4a4_s-(1>(_6wS4VaNCCD|QT zr8FmopS@l2p6;%A0zMJm_+^n^Qx=w}bH*vGt5O%mGP5Ouh@5!1F+Pi$o-vLhy<$v# zj3uW0&q|+72#)9@q)kTKr;?p6J*zh)>G54PUf_gBoszN>oW#~&tXFM!xgHYB#&pxn zAWP6C!y_Eh`?A!W6Zw>RsZKq^kw*IqvI;- zwHeBZea(4mvUXY7*`Jfm7|+bOn5Sau#;k)jkofYrfwdp%lTe-4`rg{zN$L+xuDZr; IuVb9z6Y?tdq5uE@ literal 0 HcmV?d00001 diff --git a/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp b/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp index e5c58fd..4ec86e8 100644 --- a/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp +++ b/sapfor/experts/Sapfor_2017/_src/Sapfor.cpp @@ -37,6 +37,7 @@ #include "LoopAnalyzer/loop_analyzer_nodist.h" #include "GraphCall/graph_calls_func.h" +#include "GraphCall/select_array_conf.h" #include "GraphLoop/graph_loops_func.h" #include "DynamicAnalysis/gCov_parser_func.h" #include "DynamicAnalysis/createParallelRegions.h" @@ -2174,6 +2175,11 @@ static bool runAnalysis(SgProject &project, const int curr_regime, const bool ne runPrivateVariableAnalysis(loopGraph, fullIR, commonBlocks, SPF_messages); else if (curr_regime == FIX_COMMON_BLOCKS) fixCommonBlocks(allFuncInfo, commonBlocks, &project); + else if (curr_regime == SELECT_ARRAY_DIM_CONF) { + map> localMessages; + + SelectArrayConfForParallelization(&project, allFuncInfo, loopGraph, createdDirectives, localMessages, arrayLinksByFuncCalls, parallelRegions); + } const float elapsed = duration_cast(high_resolution_clock::now() - timeForPass).count() / 1000.; const float elapsedGlobal = duration_cast(high_resolution_clock::now() - globalTime).count() / 1000.; @@ -2385,6 +2391,8 @@ void runPass(const int curr_regime, const char *proj_name, const char *folderNam case INSERT_PARALLEL_DIRS_NODIST: { + mpiProgram = 1; + string additionalName = (consoleMode && folderName == NULL) ? "__shared" : ""; runAnalysis(*project, INSERT_PARALLEL_DIRS_NODIST, false); @@ -2392,6 +2400,8 @@ void runPass(const int curr_regime, const char *proj_name, const char *folderNam runPass(REVERT_SUBST_EXPR_RD, proj_name, folderName); runPass(CONVERT_LOOP_TO_ASSIGN, proj_name, folderName); + + runPass(SELECT_ARRAY_DIM_CONF, proj_name, folderName); runAnalysis(*project, INSERT_PARALLEL_DIRS, false, consoleMode ? additionalName.c_str() : NULL, folderName); diff --git a/sapfor/experts/Sapfor_2017/_src/Sapfor.h b/sapfor/experts/Sapfor_2017/_src/Sapfor.h index 739bce9..4375adc 100644 --- a/sapfor/experts/Sapfor_2017/_src/Sapfor.h +++ b/sapfor/experts/Sapfor_2017/_src/Sapfor.h @@ -67,6 +67,7 @@ enum passes { CHECK_ARGS_DECL, FIND_FUNC_TO_INCLUDE, + SELECT_ARRAY_DIM_CONF, ONLY_ARRAY_GRAPH, PRIVATE_ANALYSIS_SPF, @@ -225,6 +226,7 @@ static void setPassValues() passNames[VERIFY_COMMON] = "VERIFY_COMMON"; passNames[VERIFY_OPERATORS] = "VERIFY_OPERATORS"; passNames[FIND_FUNC_TO_INCLUDE] = "FIND_FUNC_TO_INCLUDE"; + passNames[SELECT_ARRAY_DIM_CONF] = "SELECT_ARRAY_DIM_CONF"; passNames[CREATE_DISTR_DIRS] = "CREATE_DISTR_DIRS"; passNames[CREATE_PARALLEL_DIRS] = "CREATE_PARALLEL_DIRS"; passNames[INSERT_PARALLEL_DIRS] = "INSERT_PARALLEL_DIRS"; diff --git a/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h b/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h index 06fb0b6..de2cc9d 100644 --- a/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h +++ b/sapfor/experts/Sapfor_2017/_src/Utils/PassManager.h @@ -173,7 +173,9 @@ void InitPassesDependencies(map> &passDepsIn, set Pass(GET_ALL_ARRAY_DECL) <= Pass(CALL_GRAPH_IR); - Pass(LOOP_GRAPH) <= Pass(PRIVATE_CALL_GRAPH_STAGE3) <= Pass(PRIVATE_ANALYSIS_IR) <= list({ LOOP_ANALYZER_DATA_DIST_S0, LOOP_ANALYZER_DATA_DIST_S1, ONLY_ARRAY_GRAPH, LOOP_ANALYZER_ALIGNS, LOOP_ANALYZER_NODIST }); + Pass(LOOP_GRAPH) <= Pass(PRIVATE_CALL_GRAPH_STAGE3) <= list(FIND_FUNC_TO_INCLUDE, PRIVATE_ANALYSIS_IR) << list({ LOOP_ANALYZER_DATA_DIST_S0, LOOP_ANALYZER_DATA_DIST_S1, ONLY_ARRAY_GRAPH, LOOP_ANALYZER_ALIGNS }); + + Pass(PRIVATE_ANALYSIS_IR) <= Pass(LOOP_ANALYZER_NODIST); Pass(CORRECT_VAR_DECL) <= list({ VERIFY_DVM_DIRS, PREPROC_SPF, VERIFY_ENDDO, VERIFY_INCLUDE, PREPROC_ALLOCATES, CHECK_FUNC_TO_INCLUDE, FILL_PAR_REGIONS_LINES, CONVERT_ASSIGN_TO_LOOP, VERIFY_COMMON, VERIFY_EQUIVALENCE, PRINT_PAR_REGIONS_ERRORS, VERIFY_OPERATORS, VERIFY_FORMAT }) <= Pass(CODE_CHECKER_PASSES); @@ -203,7 +205,7 @@ void InitPassesDependencies(map> &passDepsIn, set list({ CORRECT_VAR_DECL, PREPROC_SPF }) << list({ LOOP_GRAPH, CALL_GRAPH, CALL_GRAPH2 }); - list({ PREPROC_SPF, CALL_GRAPH2 }) <= Pass(FILL_PAR_REGIONS_LINES) <= list({ EXPAND_EXTRACT_PAR_REGION, CHECK_FUNC_TO_INCLUDE, FIND_FUNC_TO_INCLUDE, CHECK_ARGS_DECL }); + list({ PREPROC_SPF, CALL_GRAPH2 }) <= Pass(FILL_PAR_REGIONS_LINES) <= list({ EXPAND_EXTRACT_PAR_REGION, CHECK_FUNC_TO_INCLUDE, FIND_FUNC_TO_INCLUDE, CHECK_ARGS_DECL, SELECT_ARRAY_DIM_CONF}); list({ PREPROC_SPF, CALL_GRAPH2, FILL_PAR_REGIONS_LINES }) <= Pass(FILL_PAR_REGIONS) <= Pass(RESOLVE_PAR_REGIONS); @@ -237,7 +239,7 @@ void InitPassesDependencies(map> &passDepsIn, set list({ GCOV_PARSER, CREATE_INTER_TREE, CALL_GRAPH, CALL_GRAPH2 }) <= Pass(CREATE_PARALLEL_REGIONS); - list({ PRIVATE_CALL_GRAPH_STAGE1, PRIVATE_CALL_GRAPH_STAGE2, MACRO_EXPANSION, CONVERT_ASSIGN_TO_LOOP, DEF_USE_STAGE1, DEF_USE_STAGE2, LOOP_GRAPH, CALL_GRAPH, PRIVATE_ANALYSIS_IR }) <= Pass(INSERT_REGIONS); + list({ PRIVATE_CALL_GRAPH_STAGE1, PRIVATE_CALL_GRAPH_STAGE2, MACRO_EXPANSION, CONVERT_ASSIGN_TO_LOOP, DEF_USE_STAGE1, DEF_USE_STAGE2, LOOP_GRAPH, CALL_GRAPH, PRIVATE_ANALYSIS_IR, FIND_FUNC_TO_INCLUDE }) <= Pass(INSERT_REGIONS); list({ LOOP_ANALYZER_DATA_DIST_S1, REVERT_SUBST_EXPR, REVERT_SUBST_EXPR_RD }) << list({ LOOPS_SPLITTER, LOOPS_COMBINER, UNROLL_LOOPS, INSERT_REGIONS }); @@ -251,7 +253,7 @@ void InitPassesDependencies(map> &passDepsIn, set list({ BUILD_IR, CALL_GRAPH }) <= Pass(LIVE_ANALYSIS_IR); - list({ BUILD_IR, LOOP_GRAPH, LIVE_ANALYSIS_IR, FIND_FUNC_TO_INCLUDE }) <= Pass(PRIVATE_ANALYSIS_IR); + list({ BUILD_IR, LOOP_GRAPH, LIVE_ANALYSIS_IR }) <= Pass(PRIVATE_ANALYSIS_IR); Pass(CALL_GRAPH2) <= Pass(FIX_COMMON_BLOCKS);