#ifndef CommCostH #define CommCostH ////////////////////////////////////////////////////////////////////// // // CommCost.h: interface for the CommCost class. // ////////////////////////////////////////////////////////////////////// #include #include #include #include "Vm.h" #include "DArray.h" #include "DimBound.h" //==== #include "LoopBlock.h" //=*** typedef std::vector lvector; typedef std::vector 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 & dimInfo, bool IsCorner); // машиннозависимая функция возвращающая стоимость // накладнных расходов доступа к удаленным данным double GetCost(); CommCost & operator =(const CommCost &); // изменяет массив transfer в соответствии // с возникающими пересылками между процессорами VM в результате // перехода от одного распределения массива к другому void Update(DArray *oldDA, DArray *newDA); }; #endif