#ifndef _CallInfo_H #define _CallInfo_H #include #include "Event.h" struct TraceCall { Event func_id; int source_line; char* source_file; int call_info_count; char** call_info; // pointer to lines with input function params int ret_info_count; char** ret_info; // pointer to lines with output function params TraceCall(Event func_id, int source_line, char* source_file, int call_info_count, char** call_info, int ret_info_count, char** ret_info); }; // Common CallInfo structures struct IDOnlyInfo { long ID; }; // Interval structures struct binter_Info { long line; char * file; long index; ~binter_Info() { delete file; } }; typedef struct IDOnlyInfo einter_Info; // Message sending structures typedef struct IDOnlyInfo rtl_BarrierInfo; struct rtl_BcastInfo { long Count; long Size; }; // MPS/AM/AMView structures typedef struct IDOnlyInfo CreateVMSInfo; typedef struct IDOnlyInfo getam_Info; struct crtps_Info { long PSRef; // ID long PSRefParent; std::vector InitIndexArray; std::vector LastIndexArray; long StaticSign; }; struct getps_Info { long PSRef; long AMRef; }; struct psview_Info { long PSRef; // ID long PSRefParent; long Rank; std::vector SizeArray; long StaticSign; }; struct setelw_Info { long PSRef; // 16 long AMViewRef; // 16 long AddrNumber; // 10 std::vector WeightNumber; // length = sun i = [0,AddrNumber-1] WeightNumber[i] std::vector LoadWeight; }; typedef struct IDOnlyInfo delps_Info; struct getamr_Info { long AMRef; // ID long AMViewRef; std::vector IndexArray; }; struct getamv_Info { long ArrayHeader; // ArrayHeader long AMViewRef; }; struct mapam_Info { long AMRef; long PSRef; }; typedef struct IDOnlyInfo runam_Info; struct crtamv_Info { long ID; // AMViewRef long AM_ID; // AMRef long StaticSign; // StaticSign std::vector SizeArray; // Rank + SizeArray }; typedef struct IDOnlyInfo delamv_Info; //==== struct blkdiv_Info { long ID; // AMViewRef std::vector AMVAxisDiv; // AMVAxisDiv[] }; //=*** struct distr_Info { long ID; // AMViewRef long PSRef; // PSRef std::vector AxisArray; // AxisArray[] std::vector DistrParamArray;// DistrParamArray[] }; struct redis_Info { long ID; // AMViewRef long AID; // ArrayHeader long PSRef; // PSRef std::vector AxisArray; // AxisArray[] std::vector DistrParamArray;// DistrParamArray[] long NewSign; }; // DArray structures struct crtda_Info { long ArrayHandlePtr; // ArrayHandlePtr long ArrayHeader; // ArrayHeader long TypeSize; long StaticSign; // long ReDistrSign; // std::vector SizeArray; std::vector LowShdWidthArray; std::vector HiShdWidthArray; }; struct align_Info { long ArrayHeader; // ArrayHeader long ArrayHandlePtr; // ArrayHandlePtr long PatternRefPtr; // PatternRefPtr long PatternRef; // PatternRef int PatternType; // AMView = 1, DisArray = 2 std::vector AxisArray; std::vector CoeffArray; std::vector ConstArray; }; typedef struct IDOnlyInfo delda_Info; struct realn_Info { long ArrayHandlePtr; // ArrayHandlePtr long ArrayHeader; // ArrayHeader long PatternRefPtr; // PatternRefPtr long PatternRef; // PatternRef int PatternType; // AMView = 1, DisArray = 2 std::vector AxisArray; std::vector CoeffArray; std::vector ConstArray; long NewSign; }; struct arrcpy_Info { long FromBufferPtr; long FromArrayHeader; long FromArrayHandlePtr; std::vector FromInitIndexArray; std::vector FromLastIndexArray; std::vector FromStepArray; long ToBufferPtr; long ToArrayHeader; long ToArrayHandlePtr; std::vector ToInitIndexArray; std::vector ToLastIndexArray; std::vector ToStepArray; long CopyRegim; long CopyFlagPtr; }; struct waitcp_Info { long CopyFlagPtr; }; // ParLoop structures struct crtpl_Info { long ID; long Rank; }; struct mappl_Info { long LoopRef; //ID; long PatternRefPtr; long PatternRef; int PatternType; // AMView = 1, DisArray = 2 std::vector AxisArray; std::vector CoeffArray; std::vector ConstArray; std::vector InInitIndexArray; std::vector InLastIndexArray; std::vector InStepArray; }; typedef struct IDOnlyInfo dopl_Info; typedef struct IDOnlyInfo endpl_Info; //grig struct dopl_full_Info { long ID; std::vector Dim; std::vector Step; std::vector Lower; std::vector Upper; long ReturnVar; //====// }; //\grig // Reduction structures typedef struct IDOnlyInfo crtrg_Info; struct crtred_Info { long ID; long RedArrayType; long RedArrayLength; long LocElmLength; }; struct insred_Info { long RG_ID; long RV_ID; }; typedef struct IDOnlyInfo delrg_Info; typedef struct IDOnlyInfo delred_Info; typedef struct IDOnlyInfo strtrd_Info; typedef struct IDOnlyInfo waitrd_Info; // Shadow structures struct crtshg_Info { long StaticSign; long ShadowGroupRef; }; struct inssh_Info { Event func; // function ID long ShadowGroupRef; // SHG_ID; long ArrayHeader; // long ArrayHandlePtr; // DA_ID; long FullShdSign; // only for inssh_, incsh_ long MaxShdCount; // only for insshd_, incshd std::vector ShdSignArray; // for insshd_, incshd_ std::vector LowShdWidthArray; std::vector HiShdWidthArray; std::vector InitDimIndex; std::vector LastDimIndex; std::vector InitLowShdIndex; std::vector LastLowShdIndex; std::vector InitHiShdIndex; std::vector LastHiShdIndex; }; struct exfrst_Info{ long ID; // LoopRef long ShadowGroupRef; }; struct imlast_Info{ long ID; // LoopRef long ShadowGroupRef; }; struct across_Info { long AcrossType; long OldShadowGroupRef; long NewShadowGroupRef; double PipeLinePar; long CondPipeLine; long ErrPipeLine; long PipeLinePLAxis; }; /* AcrossType=1; OldShadowGroupRef=9b7ac0; NewShadowGroupRef=9b77c0; PipeLinePar=0.000000; CondPipeLine=0 ErrPipeLine=60 */ typedef struct IDOnlyInfo delshg_Info; typedef struct IDOnlyInfo strtsh_Info; typedef struct IDOnlyInfo waitsh_Info; typedef struct IDOnlyInfo sendsh_Info; typedef struct IDOnlyInfo recvsh_Info; // Regular access to remote data struct crtrbl_Info { long RemArrayHeader; long BufferHeader; long StaticSign; long LoopRef; std::vector AxisArray; std::vector CoeffArray; std::vector ConstArray; }; struct crtrbp_Info { long ID; // BufferHeader; long RemArrayHeader; long StaticSign; long PSRef; long IsLocal; std::vector CoordArray; }; struct loadrb_Info { long ID; // BufferHeader; long RenewSign; }; typedef struct IDOnlyInfo waitrb_Info; struct srmem_Info { long MemoryCount; std::vector LengthArray; }; // Root info struct root_Info { long VProcCount; long VPSRank; std::vector VPSSize; }; extern bool GetCallParams(TraceCall &trc_call, void*& call_params); #endif