@@ -123,17 +123,18 @@ int MAIN__(int argc, char *argv[]){
123123 FLOAT * a , * b , * c ;
124124 FLOAT alpha [] = {1.0 , 1.0 };
125125 FLOAT beta [] = {1.0 , 1.0 };
126-
127126 char trans = 'N' ;
128-
129127 blasint m , i , j ;
128+ int loops = 1 ;
129+ int l ;
130+ char * p ;
130131
131132 int from = 1 ;
132133 int to = 200 ;
133134 int step = 1 ;
134135
135136 struct timeval start , stop ;
136- double time1 ;
137+ double time1 , timeg ;
137138
138139 argc -- ;argv ++ ;
139140
@@ -155,6 +156,9 @@ int MAIN__(int argc, char *argv[]){
155156 fprintf (stderr ,"Out of Memory!!\n" );exit (1 );
156157 }
157158
159+ p = getenv ("OPENBLAS_LOOPS" );
160+ if ( p != NULL )
161+ loops = atoi (p );
158162
159163
160164#ifdef linux
@@ -166,29 +170,37 @@ int MAIN__(int argc, char *argv[]){
166170 for (m = from ; m <= to ; m += step )
167171 {
168172
173+ timeg = 0 ;
174+
169175 fprintf (stderr , " %6d : " , (int )m );
170176
171- for (j = 0 ; j < m ; j ++ ){
172- for (i = 0 ; i < m * COMPSIZE ; i ++ ){
173- a [i + j * m * COMPSIZE ] = ((FLOAT ) rand () / (FLOAT ) RAND_MAX ) - 0.5 ;
174- b [i + j * m * COMPSIZE ] = ((FLOAT ) rand () / (FLOAT ) RAND_MAX ) - 0.5 ;
175- c [i + j * m * COMPSIZE ] = ((FLOAT ) rand () / (FLOAT ) RAND_MAX ) - 0.5 ;
176- }
177- }
177+ for (l = 0 ; l < loops ; l ++ )
178+ {
179+
180+ for (j = 0 ; j < m ; j ++ ){
181+ for (i = 0 ; i < m * COMPSIZE ; i ++ ){
182+ a [i + j * m * COMPSIZE ] = ((FLOAT ) rand () / (FLOAT ) RAND_MAX ) - 0.5 ;
183+ b [i + j * m * COMPSIZE ] = ((FLOAT ) rand () / (FLOAT ) RAND_MAX ) - 0.5 ;
184+ c [i + j * m * COMPSIZE ] = ((FLOAT ) rand () / (FLOAT ) RAND_MAX ) - 0.5 ;
185+ }
186+ }
187+
188+ gettimeofday ( & start , (struct timezone * )0 );
178189
179- gettimeofday ( & start , ( struct timezone * ) 0 );
190+ GEMM ( & trans , & trans , & m , & m , & m , alpha , a , & m , b , & m , beta , c , & m );
180191
181- GEMM ( & trans , & trans , & m , & m , & m , alpha , a , & m , b , & m , beta , c , & m );
192+ gettimeofday ( & stop , ( struct timezone * ) 0 );
182193
183- gettimeofday ( & stop , ( struct timezone * ) 0 ) ;
194+ time1 = ( double )( stop . tv_sec - start . tv_sec ) + ( double )(( stop . tv_usec - start . tv_usec )) * 1.e-6 ;
184195
185- time1 = ( double )( stop . tv_sec - start . tv_sec ) + ( double )(( stop . tv_usec - start . tv_usec )) * 1.e-6 ;
196+ timeg += time1 ;
186197
187- gettimeofday ( & start , ( struct timezone * ) 0 );
198+ }
188199
200+ timeg /= loops ;
189201 fprintf (stderr ,
190202 " %10.2f MFlops\n" ,
191- COMPSIZE * COMPSIZE * 2. * (double )m * (double )m * (double )m / time1 * 1.e-6 );
203+ COMPSIZE * COMPSIZE * 2. * (double )m * (double )m * (double )m / timeg * 1.e-6 );
192204
193205 }
194206
0 commit comments