#ifndef ParLoopH #define ParLoopH ////////////////////////////////////////////////////////////////////// // // LoopLS.h: interface for the LoopLS class. // ////////////////////////////////////////////////////////////////////// #include "Space.h" #include "AMView.h" #include "AlignAxis.h" //==== #include "CommCost.h" //=*** #include "LoopBlock.h" #include #include class AMView; //==== class CommCost; //=*** class ParLoop { void PrepareAlign(long& TempRank, const std::vector& AAxisArray, const std::vector& ACoeffArray, const std::vector& AConstArray, std::vector& IniRule); void SaveLoopParams(const std::vector& AInInitIndex, const std::vector& AInLastIndex, const std::vector& AInLoopStep); public: long Rank; AMView *AM_Dis; // AMView for ParLoopmapping std::vector AlignRule; // Rule for alignment of AM_Dis std::vector LowerIndex; std::vector HigherIndex; std::vector LoopStep; std::vector Invers; //==== int AcrossFlag; CommCost* AcrossCost; //=*** ParLoop(long ARank); ~ParLoop(); //==== // int isAcross(); void Across(CommCost* BoundCost,int type_size); //=*** long GetSize(long plDim); long GetLoopSize(); void MapPL(AMView *APattern, const std::vector& AAxisArray, const std::vector& ACoeffArray, const std::vector& AConstArray, const std::vector& AInInitIndex, const std::vector& AInLastIndex, const std::vector& AInLoopStep); void MapPL(DArray *APattern, const std::vector& AAxisArray, const std::vector& ACoeffArray, const std::vector& AConstArray, const std::vector& AInInitIndex, const std::vector& AInLastIndex, const std::vector& AInLoopStep); }; #endif