Пример #1
0
    void 
    test_cases()
    {
      double start_time = 0.0f, end_time = 0.0f;
      for (int i = 0; i < TestFrameWork::size; i++)
	{
	  std::cout<<"\n"<<"Test Case "<<i+1;
	  result = new float[ TestFrameWork::matrix_dim[i] * TestFrameWork::matrix_dim[i] ];

	  sq_matrix_1 = new float[matrix_dim[i] * matrix_dim[i]];
	  sq_matrix_2 = new float[matrix_dim[i] * matrix_dim[i]];
	  answers = new float[matrix_dim[i] * matrix_dim[i]];

          randomize(sq_matrix_1, TestFrameWork::matrix_dim[i], TestFrameWork::matrix_dim[i]);
          randomize(sq_matrix_2, TestFrameWork::matrix_dim[i], TestFrameWork::matrix_dim[i]);
 
	  start_time = wtime();
	  matrix_multiplication(TestFrameWork::sq_matrix_1, TestFrameWork::sq_matrix_2, result, TestFrameWork::matrix_dim[i]);
	  end_time = wtime();
	  
	  std::cout<<"\t"<< (end_time - start_time)<<" milliseconds\n";

          tripleloop(answers, sq_matrix_1, sq_matrix_2, TestFrameWork::matrix_dim[i], TestFrameWork::matrix_dim[i], TestFrameWork::matrix_dim[i]);

          CPPUNIT_ASSERT(TestFrameWork::diff(answers, result, TestFrameWork::matrix_dim[i], TestFrameWork::matrix_dim[i]) < EPS);

  	  delete sq_matrix_1;
  	  delete sq_matrix_2;
  	  delete answers;
  	  delete result;
	}
    }
Пример #2
0
    void 
    test_cases()
    {
      double start_time = 0.0f, end_time = 0.0f;
      for (int i = 0; i < TestFrameWork::size; i++)
        {
          std::cout<<"\n"<<"Test Case "<<i+1;
          result = new float[ TestFrameWork::matrix_dim[i] * TestFrameWork::matrix_dim[i] ];

          sq_matrix_1 = new float[matrix_dim[i] * matrix_dim[i]];
          sq_matrix_2 = new float[matrix_dim[i] * matrix_dim[i]];
          answers = new float[matrix_dim[i] * matrix_dim[i]];

          randomize(sq_matrix_1, TestFrameWork::matrix_dim[i], TestFrameWork::matrix_dim[i]);
          randomize(sq_matrix_2, TestFrameWork::matrix_dim[i], TestFrameWork::matrix_dim[i]);

          matrix_multiplication(TestFrameWork::sq_matrix_1, TestFrameWork::sq_matrix_2, result, TestFrameWork::matrix_dim[i]);

          tripleloop(answers, sq_matrix_1, sq_matrix_2, TestFrameWork::matrix_dim[i], TestFrameWork::matrix_dim[i], TestFrameWork::matrix_dim[i]);

          CPPUNIT_ASSERT(TestFrameWork::diff(answers, result, TestFrameWork::matrix_dim[i], TestFrameWork::matrix_dim[i]) < EPS);

	  start_time = wtime();
	  for (int j = 0; j < NUM_REPS; ++j) {
	          matrix_multiplication(TestFrameWork::sq_matrix_1, TestFrameWork::sq_matrix_2, result, TestFrameWork::matrix_dim[i]);
	  }
          end_time = wtime();

	  double t = (double)(end_time - start_time)/(double)(1000.0*NUM_REPS);

	  double gflops = (double)((2*TestFrameWork::matrix_dim[i]-1)*TestFrameWork::matrix_dim[i]*TestFrameWork::matrix_dim[i]*1e-9/t);

          std::cout<<"\t"<< gflops <<" Gflop/s\n";

          delete sq_matrix_1;
          delete sq_matrix_2;
          delete answers;
          delete result;
        }
    }