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; }
BoolMatrix::BoolMatrix() { cout << "Вызов конструктора по умолчанию" << endl; storage = new int*[maxsize]; for (int i = 0; i < maxsize; i++) storage[i] = new int[maxsize]; hsize = vsize = maxsize; randomfill(); }
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; }