moved
This commit is contained in:
123
Sapfor/_src/Predictor/Lib/Ps.h
Normal file
123
Sapfor/_src/Predictor/Lib/Ps.h
Normal file
@@ -0,0 +1,123 @@
|
||||
#ifndef __PS_H
|
||||
#define __PS_H
|
||||
|
||||
// #pragma warning(disable: 4786)
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <queue>
|
||||
#include <string>
|
||||
#include "Vm.h"
|
||||
|
||||
//grigory add-on
|
||||
using namespace std;
|
||||
|
||||
void ClustError (int num_error);
|
||||
|
||||
struct ProcInfo
|
||||
{
|
||||
int numClust;
|
||||
int numInClust;
|
||||
double ProcPower;
|
||||
};
|
||||
|
||||
typedef struct ProcInfo strProcInfo;
|
||||
|
||||
class ClustInfo
|
||||
{
|
||||
public :
|
||||
int numClust;
|
||||
vector <strProcInfo> Procs;
|
||||
ClustInfo();
|
||||
ClustInfo(int num);
|
||||
void AddProc(int num,double power);
|
||||
void setNum(int num) {this->numClust=num;}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void setTStart(double tstart);
|
||||
void setTByte(double tbyte);
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
};
|
||||
|
||||
typedef class ClustInfo classClustInfo;
|
||||
|
||||
class CompletePS
|
||||
{
|
||||
public :
|
||||
vector<classClustInfo> Clusters;
|
||||
CompletePS();
|
||||
void MakeNewCluster(int numClust);
|
||||
void AddProcToClust(int numClust,int numProc,strProcInfo procInfo);
|
||||
void MakeFullMapping(std::vector<double>& result);
|
||||
void SortProcessors(std::vector<double> &array_of_productivity);
|
||||
|
||||
};
|
||||
|
||||
class MappedProcs
|
||||
{
|
||||
public:
|
||||
vector<strProcInfo> Processors;
|
||||
void AddProc(strProcInfo& procInfo);
|
||||
MappedProcs() ;
|
||||
void AddProccessors(int start,int end,int step , ClustInfo &cPS);
|
||||
};
|
||||
//\grigory add-on
|
||||
|
||||
|
||||
typedef std::vector<long> LongVector;
|
||||
typedef std::vector<double> DoubleVector;
|
||||
|
||||
class PS {
|
||||
|
||||
static bool NextOptionLine(std::istream& opt_file, std::string& buffer);
|
||||
|
||||
std::queue<LongVector> ps_lb_list; // low bounderies on each dim
|
||||
std::queue<LongVector> SizeArray_list; // extentions on each dim
|
||||
std::queue<DoubleVector> weight_list; // list of vectors - PS weights
|
||||
|
||||
mach_Type Type;
|
||||
int numChanels; // numbers of parallel chanels in Myrinet
|
||||
double TStart,
|
||||
TByte,
|
||||
ProcPower,
|
||||
scale; //
|
||||
|
||||
//grigory add-on
|
||||
public :
|
||||
CompletePS completePS; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
MappedProcs mappedProcs; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
//std::vector<LongVector> vWeights;
|
||||
vector<double> vProcPower;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> , <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
public :
|
||||
int getProcCount();
|
||||
void CorrectMappedProcs();
|
||||
void PrepareForAutoSearch(std::vector<long>& perstanovki);
|
||||
void reset();
|
||||
|
||||
//\grigory add-on
|
||||
|
||||
|
||||
public:
|
||||
|
||||
// read PS's configurations from the file
|
||||
PS(const char* file_name);
|
||||
PS(mach_Type AType, int AnumChanels, double TStart, double TByte, int proc_num);
|
||||
|
||||
// returns next processor's charactiristics
|
||||
void nextPS(std::vector<long>& lb, std::vector<long>& ASizeArray,
|
||||
mach_Type& AMType, int& AnumChanels, double& Ascale,
|
||||
double& ATStart, double& ATByte, double& AProcPower, vector<double>& AvProcPower);
|
||||
void setTopology(std::vector<long>& ASizeArray);
|
||||
void hardwarePS(int& AMType, double& ATStart, double& ATByte, double& AProcPower,vector<double> & AvProcPower);
|
||||
|
||||
|
||||
#ifdef P_DEBUG
|
||||
friend std::ostream& operator << (std::ostream& os, const PS& ps);
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
extern PS * ps; // prosessor system object
|
||||
extern long currentPS_ID; // current PS ID
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user