Files
SAPFOR/Sapfor/_src/Predictor/Lib/CallInfoStructs.h
2025-03-25 20:39:29 +03:00

363 lines
7.5 KiB
C++

#ifndef _CallInfo_H
#define _CallInfo_H
#include <vector>
#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<long> InitIndexArray;
std::vector<long> LastIndexArray;
long StaticSign;
};
struct getps_Info {
long PSRef;
long AMRef;
};
struct psview_Info {
long PSRef; // ID
long PSRefParent;
long Rank;
std::vector<long> SizeArray;
long StaticSign;
};
struct setelw_Info {
long PSRef; // 16
long AMViewRef; // 16
long AddrNumber; // 10
std::vector<long> WeightNumber;
// length = sun i = [0,AddrNumber-1] WeightNumber[i]
std::vector<double> LoadWeight;
};
typedef struct IDOnlyInfo delps_Info;
struct getamr_Info {
long AMRef; // ID
long AMViewRef;
std::vector<long> 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<long> SizeArray; // Rank + SizeArray
};
typedef struct IDOnlyInfo delamv_Info;
//====
struct blkdiv_Info {
long ID; // AMViewRef
std::vector<long> AMVAxisDiv; // AMVAxisDiv[]
};
//=***
struct distr_Info {
long ID; // AMViewRef
long PSRef; // PSRef
std::vector<long> AxisArray; // AxisArray[]
std::vector<long> DistrParamArray;// DistrParamArray[]
};
struct redis_Info {
long ID; // AMViewRef
long AID; // ArrayHeader
long PSRef; // PSRef
std::vector<long> AxisArray; // AxisArray[]
std::vector<long> DistrParamArray;// DistrParamArray[]
long NewSign;
};
// DArray structures
struct crtda_Info {
long ArrayHandlePtr; // ArrayHandlePtr
long ArrayHeader; // ArrayHeader
long TypeSize;
long StaticSign; //
long ReDistrSign; //
std::vector<long> SizeArray;
std::vector<long> LowShdWidthArray;
std::vector<long> HiShdWidthArray;
};
struct align_Info
{
long ArrayHeader; // ArrayHeader
long ArrayHandlePtr; // ArrayHandlePtr
long PatternRefPtr; // PatternRefPtr
long PatternRef; // PatternRef
int PatternType; // AMView = 1, DisArray = 2
std::vector<long> AxisArray;
std::vector<long> CoeffArray;
std::vector<long> 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<long> AxisArray;
std::vector<long> CoeffArray;
std::vector<long> ConstArray;
long NewSign;
};
struct arrcpy_Info {
long FromBufferPtr;
long FromArrayHeader;
long FromArrayHandlePtr;
std::vector<long> FromInitIndexArray;
std::vector<long> FromLastIndexArray;
std::vector<long> FromStepArray;
long ToBufferPtr;
long ToArrayHeader;
long ToArrayHandlePtr;
std::vector<long> ToInitIndexArray;
std::vector<long> ToLastIndexArray;
std::vector<long> 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<long> AxisArray;
std::vector<long> CoeffArray;
std::vector<long> ConstArray;
std::vector<long> InInitIndexArray;
std::vector<long> InLastIndexArray;
std::vector<long> InStepArray;
};
typedef struct IDOnlyInfo dopl_Info;
typedef struct IDOnlyInfo endpl_Info;
//grig
struct dopl_full_Info
{
long ID;
std::vector<long> Dim;
std::vector<long> Step;
std::vector<long> Lower;
std::vector<long> 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<long> ShdSignArray; // for insshd_, incshd_
std::vector<long> LowShdWidthArray;
std::vector<long> HiShdWidthArray;
std::vector<long> InitDimIndex;
std::vector<long> LastDimIndex;
std::vector<long> InitLowShdIndex;
std::vector<long> LastLowShdIndex;
std::vector<long> InitHiShdIndex;
std::vector<long> 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<long> AxisArray;
std::vector<long> CoeffArray;
std::vector<long> ConstArray;
};
struct crtrbp_Info {
long ID; // BufferHeader;
long RemArrayHeader;
long StaticSign;
long PSRef;
long IsLocal;
std::vector<long> CoordArray;
};
struct loadrb_Info {
long ID; // BufferHeader;
long RenewSign;
};
typedef struct IDOnlyInfo waitrb_Info;
struct srmem_Info {
long MemoryCount;
std::vector<long> LengthArray;
};
// Root info
struct root_Info {
long VProcCount;
long VPSRank;
std::vector<long> VPSSize;
};
extern bool GetCallParams(TraceCall &trc_call, void*& call_params);
#endif