Files
SAPFOR/Sapfor/_src/Predictor/Lib/CommCost.h
2025-03-12 12:37:19 +03:00

73 lines
1.7 KiB
C++

#ifndef CommCostH
#define CommCostH
//////////////////////////////////////////////////////////////////////
//
// CommCost.h: interface for the CommCost class.
//
//////////////////////////////////////////////////////////////////////
#include <cmath>
#include <vector>
#include <algorithm>
#include "Vm.h"
#include "DArray.h"
#include "DimBound.h"
//====
#include "LoopBlock.h"
//=***
typedef std::vector<long> lvector;
typedef std::vector<lvector> Dim2Array;
class VM;
class Block;
//====
class LoopBlock;
//=***
// êîììóíèêàöèîííûå èçäåðæêè
class CommCost {
public:
// ìàññèâ ñîäåðæàùèé èíôîðìàöèþ î êîëè÷åñòâå áàéòîâ
// ïåðåñûëàåìûõ ìåæäó ïàðîé ïðîöåññîðîâ âèðòóàëüíîé ìàøèíû vm
Dim2Array transfer;
VM *vm;
CommCost(VM *Avm);
CommCost();
virtual ~CommCost();
// êîïèðîâàíèå ðàñïðåäåëåííîãî ìàññèâà íà âñå ïðîöåññîðû
void CopyUpdate(DArray *FromArray, Block & readBlock);
//====
void CopyUpdateDistr(DArray * FromArray, Block &readBlock, long p1);
long GetLSize();
// void calculate(); //óáðàòü òàê êàê ýòî âíóòðåííÿÿ ôóíêöèÿ
void Across(double call_time, long LoopSZ, LoopBlock** ProcBlock,int type_size);
//=***
void BoundUpdate(DArray *daPtr, std::vector<DimBound> & dimInfo, bool IsCorner);
// ìàøèííîçàâèñèìàÿ ôóíêöèÿ âîçâðàùàþùàÿ ñòîèìîñòü
// íàêëàäííûõ ðàñõîäîâ äîñòóïà ê óäàëåííûì äàííûì
double GetCost();
CommCost & operator =(const CommCost &);
// èçìåíÿåò ìàññèâ transfer â ñîîòâåòñòâèè
// ñ âîçíèêàþùèìè ïåðåñûëêàìè ìåæäó ïðîöåññîðàìè VM â ðåçóëüòàòå
// ïåðåõîäà îò îäíîãî ðàñïðåäåëåíèÿ ìàññèâà ê äðóãîìó
void Update(DArray *oldDA, DArray *newDA);
};
#endif