Exemplo n.º 1
0
int main(int argc, char **argv) {
	struct timeval ts,tf;
	double tt;
	int n;
	matrix a, b,c;
	check(argc >= 3, "main: Need matrix size and block size on command line");
	n = atoi(argv[1]);
	block=atoi(argv[2]);

	a = newmatrix(n);
	b = newmatrix(n);
	c = newmatrix(n);

	randomfill(n, a);
	randomfill(n, b);
	gettimeofday(&ts,NULL);
	StrassenMult(n, a, b, c);	/* strassen algorithm */
	gettimeofday(&tf,NULL);
	tt=(tf.tv_sec-ts.tv_sec)+(tf.tv_usec-ts.tv_usec)*0.000001;
	printf("Strassen Size %d Block %d Time %lf\n",n,block,tt);
	char *filename=malloc(30*sizeof(char));
	sprintf(filename,"res_mm_strassen_%d",n);
	FILE * f=fopen(filename,"w");
	print(n,c,f);
	fclose(f);

	freematrix(a,n);
	freematrix(b,n);
	freematrix(c,n);	
    	return 0;
}
Exemplo n.º 2
0
BoolMatrix::BoolMatrix()
{
	cout << "Вызов конструктора по умолчанию" << endl;
	storage = new int*[maxsize];
	for (int i = 0; i < maxsize; i++)
		storage[i] = new int[maxsize];
	hsize = vsize = maxsize;
	randomfill();
}
Exemplo n.º 3
0
BoolMatrix::BoolMatrix(int v, int h)
{
	cout << "Вызов конструктора с параметрами" << endl;
	storage = new int*[maxsize];
	for (int i = 0; i < maxsize; i++)
		storage[i] = new int[maxsize];
	hsize = h;
	vsize = v;
	randomfill();
}
int main(int argc, char* argv[]) {
   
  int nthreads=0;
  int n=0;
  matrix a,b,c;
  tbb::tick_count tic, toc;
  n = atoi(argv[1]);
  block=atoi(argv[2]);
  nthreads=atoi(argv[3]);
  a = newmatrix(n);
  b = newmatrix(n);
  c = newmatrix(n);
  randomfill(n, a);
  randomfill(n, b);
  randomfill(n,c);

  tbb::task_scheduler_init init(nthreads);
  tic = tbb::tick_count::now ();

  RecMultTask &start = *new(tbb::task::allocate_root()) RecMultTask(n, a, b, c);
  tbb::task::spawn_root_and_wait(start);

  toc = tbb::tick_count::now();
  std::cout << (toc - tic).seconds() << "\n";  

  tic = tbb::tick_count::now ();
  MatrMultTG(n,a,b,c);
  toc = tbb::tick_count::now ();
  std::cout << (toc - tic).seconds() << "\n";

  freematrix(a,n);
  freematrix(b,n);
  freematrix(c,n);

return 0;
}