hotspotver.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /*********************
  2. Hotspot Verify
  3. by Sam Kauffman - Univeristy of Virginia
  4. Verify accuracy of Hotspot input files generated by HotspotEx
  5. */
  6. #include "64_128.h"
  7. //#include "64_256.h"
  8. //#include "1024_2048.h"
  9. //#include "1024_4096.h"
  10. //#include "1024_8192.h"
  11. //#include "1024_16384.h"
  12. #include <iostream>
  13. #include <fstream>
  14. #include <cstdlib>
  15. #define OUT_SIZE IN_SIZE*MULTIPLIER
  16. using namespace std;
  17. bool verify( char * infName, char * outfName )
  18. {
  19. const int x = MULTIPLIER;
  20. double val;
  21. fstream fs;
  22. double ** inMatr;
  23. // allocate 2d array of doubles for input
  24. inMatr = (double **) malloc( IN_SIZE * sizeof( double * ) );
  25. for ( int i = 0; i < IN_SIZE; i++ )
  26. inMatr[i] = (double *) malloc(IN_SIZE * sizeof( double ) );
  27. // fill input array
  28. fs.open( infName, ios::in );
  29. if ( !fs )
  30. cerr << "Failed to open input file.\n";
  31. for ( int row = 0; row < IN_SIZE; row++ )
  32. for ( int col = 0; col < IN_SIZE; col++ )
  33. fs >> inMatr[row][col];
  34. fs.close();
  35. // scan through output file and compare values
  36. fs.open( outfName, ios::in );
  37. if ( !fs )
  38. cerr << "Failed to open output file.\n";
  39. for ( int row = 0; row < OUT_SIZE; row++ )
  40. for ( int col = 0; col < OUT_SIZE; col++ )
  41. {
  42. fs >> val;
  43. if ( val != inMatr[row / x][col / x] )
  44. {
  45. for ( int i = 0; i < IN_SIZE; i++ )
  46. free( inMatr[i] );
  47. free( inMatr );
  48. return false;
  49. }
  50. }
  51. fs.close();
  52. for ( int i = 0; i < IN_SIZE; i++ )
  53. free( inMatr[i] );
  54. free( inMatr );
  55. return true;
  56. }
  57. int main( int argc, char * argv[] )
  58. {
  59. if ( verify( TEMP_IN, TEMP_OUT ) )
  60. cout << "Temp verified.\n";
  61. else
  62. cout << "Temp incorrect.\n";
  63. if ( verify( POWER_IN, POWER_OUT ) )
  64. cout << "Power verified.\n";
  65. else
  66. cout << "Power incorrect.\n";
  67. }