//-*-c++-*- // Copyright (c) 1994-1996 Ohio Board of Regents and the University of // Cincinnati. All Rights Reserved. // BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY // FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT // PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, // EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR // PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE // PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME // THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. // IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING // WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR // REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR // DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL // DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM // (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED // INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF // THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER // OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. // // $Id: MemGen.cc,v 1.1.1.1 2007/03/15 15:45:05 rmadhoun Exp $ // // //--------------------------------------------------------------------------- #include #include #include int numProcs, seq, numLPs, cacheSpeed, mainSpeed, numRequests; float cacheHit; #define NUMPER 6 void writeObjects( ostream &os, int lpCounter ){ int procCounter; int procPerLP = numProcs / numLPs; for( procCounter = 0; procCounter < procPerLP; procCounter++ ){ int baseId = ( lpCounter * procPerLP * NUMPER ) + (NUMPER * procCounter); os << " MemSourceObject source" << baseId << "(" << "\"source" << baseId << "\", " << numRequests << ");" << endl; os << " source" << baseId << ".id = " << baseId << ";" << endl; os << " source"<< baseId << ".setDistribution(FIXED,"<> numProcs; cout << "Sequential or Parallel? (1/0) : "; cin >> seq; if(seq == 0) { cout << "How many LPs ? : "; cin >> numLPs; } else{ numLPs = 1; } cout << "Speed of cache? (integer value, e.g. 10): "; cin >> cacheSpeed; cout << "Cache hit ratio? (e.g. .85) : "; cin >> cacheHit; cout << "Speed of main memory? (integer value, e.g. 100): "; cin >> mainSpeed; cout << "number of requests per processor? : "; cin >> numRequests; cout << "Name of file to generate? (Hit return to write to screen) : "; cin >> fileName; if( fileName[0] == '\n' ){ os = &cout; } else{ outFile.open( fileName ); if( outFile ){ os = &outFile; } else{ cerr << "Couldn't open " << fileName << endl; exit( -1 ); } } writeProgram( *os ); }