interface Parameter { void setName(in string name); void setDataType(in int type); void setValue[Int](in int value); void setValue[Long](in long value); void setValue[Double](in double value); void setValue[String](in string value); void setTBName(in string tbName); string getName(); int getDataType(); void getValue[Int](out int value); void getValue[Long](out long value); void getValue[Double](out double value); void getValue[String](out string value); string getTBName(); bool compareWith(in Parameter& another, in double tolerance, in int relation); string getDBConditions(in int tbIndex, in double tolerance, in int relation); }
interface ParameterSet { void addAParameter(in Parameter aParam); int getNumOfParameters(); Parameter getParameterAt(in int index); Parameter getParameterAt(in string name); string getTBName(); bool compareWith(in ParameterSet another, in map<string, double> tMap, in map<string, int> rMap); string getDBConditions(in array<int> tbIndices, in map<string, double> tMap, in map<string, int> rMap) }
interface Comparator extends gov.cca.Port {/* Comparison operations between parameter sets */ void setLHS(in ParameterSet lefthand); void setRHS(in ParameterSet righthand); ParameterSet getLHS(); ParameterSet getRHS(); int getDimension(); Parameter getLHSParameterAt(in string paraName); Parameter getRHSParameterAt(in string paraName); void setToleranceAt(in string name, in double epsilon); double getToleranceAt(in string name); void setRelationAt(in string name, in int aRelation); int getRelationAt(in string name); bool doCompare(); }
interface DB extends gov.cca.Port{ bool connect(); bool disconnect(); bool isClosed(); void setConnectionInfo(in string info); string getConnectioninfo(); int bindParameters(in int param, in int argument); int bindParameters(in int param, in long argument); int bindParameters(in int param, in double argument); int bindParameters(in int param, in string argument); void bindCommand(); void resetQuery(); int executeQuery_bindParam(in string commd, out Outcome res); int executeQuery(in string commd, out Outcome res); int executeInsert(in string commd); void storeParameter(in int trialID, in int iterNo, in Parameter aParam); void storeParameterSet(in int trialID, in int iterNo, in ParameterSet aParamSet); void getParameter(in int trialID, int iterNo, inout Parameter aParam); // get parameter value void getParameterSet(in int trialID, int iterNo, inout ParameterSet aParamSet);// get parameter set value int getMatchingTrialsBetween(in ParameterSet lower, in ParameterSet upper, out Outcome trialIDs); int getMatchingTrials(in ParameterSet lower, in vector<doule> epsilons, out Outcome trialIDs); }
interface Outcome { int setElements(in opaque res); // res type is decided by the DBMS, e.g., PGresult in PostgreSQL) int getNumberOfRows(); int getNumberOfColumns(); int getElement[Long](in int row, in int column, out long res); int getElement[Double](in int row, in int column, out double res); int getElement[String](in int row, in int column, out string res); int getElement[Long](in int row, in string columnName, out long res); int getElement[Double](in int row, in string columnName, out double res); int getElement[String](in int row, in string columnName, out string res); void clear(); }
/* instantiate parameter 1 */ ierr = ComputeQuantity(matrix,"icmk","splits",&res,&flg); CHKERRQ(ierr); MatrixProperty param1("splits", "matrix_meta", res.i); /* instantiate parameter 2 */ ierr = ComputeQuantity(matrix,"structure","nnzeros",&res,&flg); CHKERRQ(ierr); MatrixProperty param2("nnzeros", "matrix_meta", res.i); /**** Store matrix property set into database. ***/ int myRank; ierr = MPI_Comm_rank(PETSC_COMM_WORLD, &myRank); CHKERRQ(ierr); if (myRank == 0){ int localID; int trialID; string conninfo("dbname = perfdb"); /* Generate a runtime database manager. It connects to a PostgreSQL database through DB interfaces. */ RunTimeRecord *R = RunTimeRecord::instance(); R->Connect2DB(conninfo); trialID = R->getTrialID(); localID = R->getCurEvtID(cflStr); /* instantiate a parameter set */ PropertySet aSet; /* add parameter 1 and 2 into the set */ aSet.addAParameter(¶m1); aSet.addAParameter(¶m2); /* store the parameter set into database, */ R->loadParameterSet(trialID, localID, aSet); } /**** End storing matrix properties into database. ***/
Created by: likli last modification: Thursday 06 of December, 2007 [00:17:55 UTC] by likli
The original document is available at http://www.cca-forum.org/wiki/tiki-index.php?page=CQoS%20Database%20Component%20Interfaces