Changeset 1064 for library/tests/stresssuite/blas_stress.cpp
- Timestamp:
- 06/09/10 14:00:40 (14 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
library/tests/stresssuite/blas_stress.cpp
r870 r1064 10 10 11 11 mat matmul ( mat &A, mat &B ) { 12 13 14 12 mat C ( A.rows(), B.cols() ); 13 int i, j, k; 14 double sum; 15 15 16 17 18 19 20 21 22 23 24 25 16 for ( i = 0; i < A.rows(); i++ ) { 17 for ( j = 0; j < A.cols(); j++ ) { 18 sum = 0.0; 19 for ( k = 0; k < A.cols(); k++ ) { 20 sum += A._elem ( i, k ) * B._elem ( k, j ); 21 } 22 C ( i, j ) = sum; 23 } 24 } 25 return C; 26 26 } 27 27 28 28 void matmul2 ( int n, double *A, double *B, double *C ) { 29 30 29 int i, j, k; 30 double sum; 31 31 32 33 34 35 36 37 38 39 40 32 for ( i = 0; i < n; i++ ) { 33 for ( j = 0; j < n; j++ ) { 34 sum = 0.0; 35 for ( k = 0; k < n; k++ ) { 36 sum += A [ i*n+k ] * B [ k*n+j ]; 37 } 38 C[ i*n+j] = sum; 39 } 40 } 41 41 // return C; 42 42 } 43 43 44 44 TEST ( blas_stress ) { 45 46 47 48 45 Real_Timer tt; 46 vec exec_times ( 4 ); 47 vec exec_times_b ( 4 ); 48 vec exec_times_c ( 4 ); 49 49 50 51 52 50 mat A; 51 mat B; 52 mat C; 53 53 54 55 54 vec vn = "5 50 200 500"; 55 int n; 56 56 57 58 59 60 57 for ( int i = 0; i < vn.length(); i++ ) { 58 n = (int) vn ( i ); 59 A = randu ( n, n ); 60 B = randu ( n, n ); 61 61 62 63 64 65 66 62 tt.tic(); 63 for ( int ii = 0; ii < 10; ii++ ) { 64 C = matmul ( A, B ); 65 } 66 exec_times ( i ) = tt.toc(); 67 67 68 69 70 71 72 68 tt.tic(); 69 for ( int ii = 0; ii < 10; ii++ ) { 70 C = A * B; 71 } 72 exec_times_b ( i ) = tt.toc(); 73 73 74 75 76 77 78 79 80 81 82 83 74 C = zeros ( n, n ); 75 tt.tic(); 76 for ( int ii = 0; ii < 10; ii++ ) { 77 matmul2 ( n, A._data(), B._data(), C._data() ); 78 } 79 exec_times_c ( i ) = tt.toc(); 80 } 81 cout << exec_times << endl; 82 cout << exec_times_b << endl; 83 cout << exec_times_c << endl; 84 84 85 86 87 88 85 it_file itf ( "blas_test.it" ); 86 itf << Name ( "exec_times" ) << exec_times; 87 itf << Name ( "exec_times_b" ) << exec_times_b; 88 itf << Name ( "exec_times_c" ) << exec_times_c; 89 89 }