73 lines
1.7 KiB
C++
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
|