diff options
author | wernsaar <wernsaar@googlemail.com> | 2014-09-01 15:07:36 +0200 |
---|---|---|
committer | wernsaar <wernsaar@googlemail.com> | 2014-09-01 15:07:36 +0200 |
commit | d7f91f8b4f506b0e6071c61164a8e1c7ac8f32e9 (patch) | |
tree | e65d11f8f605c0fea5532eacddccc1b7164fa9c4 /benchmark | |
parent | 53f1277b6b0282e635fc4603862965c9a640a84d (diff) | |
download | openblas-d7f91f8b4f506b0e6071c61164a8e1c7ac8f32e9.tar.gz openblas-d7f91f8b4f506b0e6071c61164a8e1c7ac8f32e9.tar.bz2 openblas-d7f91f8b4f506b0e6071c61164a8e1c7ac8f32e9.zip |
extended gemv.c benchmark
Diffstat (limited to 'benchmark')
-rw-r--r-- | benchmark/gemv.c | 103 |
1 files changed, 70 insertions, 33 deletions
diff --git a/benchmark/gemv.c b/benchmark/gemv.c index c5db09d89..e21868259 100644 --- a/benchmark/gemv.c +++ b/benchmark/gemv.c @@ -128,6 +128,7 @@ int MAIN__(int argc, char *argv[]){ blasint inc_x=1,inc_y=1; blasint n=0; int has_param_n = 0; + int has_param_m = 0; int loops = 1; int l; char *p; @@ -145,6 +146,9 @@ int MAIN__(int argc, char *argv[]){ if (argc > 0) { to = MAX(atol(*argv), from); argc--; argv++;} if (argc > 0) { step = atol(*argv); argc--; argv++;} + + int tomax = to; + if ((p = getenv("OPENBLAS_LOOPS"))) loops = atoi(p); if ((p = getenv("OPENBLAS_INCX"))) inc_x = atoi(p); if ((p = getenv("OPENBLAS_INCY"))) inc_y = atoi(p); @@ -152,15 +156,18 @@ int MAIN__(int argc, char *argv[]){ if ((p = getenv("OPENBLAS_PARAM_N"))) { n = atoi(p); if ((n>0)) has_param_n = 1; + if ( n > tomax ) tomax = n; } + if ( has_param_n == 0 ) + if ((p = getenv("OPENBLAS_PARAM_M"))) { + m = atoi(p); + if ((m>0)) has_param_m = 1; + if ( m > tomax ) tomax = m; + } - int tomax = to; - if ( n > tomax ) tomax = n; - if ( has_param_n == 1 ) - fprintf(stderr, "From : %3d To : %3d Step = %3d Trans = '%c' N = %d Inc_x = %d Inc_y = %d Loops = %d\n", from, to, step,trans,n,inc_x,inc_y,loops); - else - fprintf(stderr, "From : %3d To : %3d Step = %3d Trans = '%c' Inc_x = %d Inc_y = %d Loops = %d\n", from, to, step,trans,inc_x,inc_y,loops); + + fprintf(stderr, "From : %3d To : %3d Step = %3d Trans = '%c' Inc_x = %d Inc_y = %d Loops = %d\n", from, to, step,trans,inc_x,inc_y,loops); if (( a = (FLOAT *)malloc(sizeof(FLOAT) * tomax * tomax * COMPSIZE)) == NULL){ fprintf(stderr,"Out of Memory!!\n");exit(1); @@ -180,50 +187,80 @@ int MAIN__(int argc, char *argv[]){ fprintf(stderr, " SIZE Flops\n"); - for(m = from; m <= to; m += step) + if (has_param_m == 0) { - timeg=0; + for(m = from; m <= to; m += step) + { + timeg=0; + if ( has_param_n == 0 ) n = m; + fprintf(stderr, " %6dx%d : ", (int)m,(int)n); + for(j = 0; j < m; j++){ + for(i = 0; i < n * COMPSIZE; i++){ + a[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; + } + } - if ( has_param_n == 0 ) n = m; + for (l=0; l<loops; l++) + { - fprintf(stderr, " %6dx%d : ", (int)m,(int)n); + for(i = 0; i < n * COMPSIZE * abs(inc_x); i++){ + x[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; + } - for(j = 0; j < m; j++){ - for(i = 0; i < n * COMPSIZE; i++){ - a[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; - } - } + for(i = 0; i < n * COMPSIZE * abs(inc_y); i++){ + y[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; + } + gettimeofday( &start, (struct timezone *)0); + GEMV (&trans, &m, &n, alpha, a, &m, x, &inc_x, beta, y, &inc_y ); + gettimeofday( &stop, (struct timezone *)0); + time1 = (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_usec - start.tv_usec)) * 1.e-6; + timeg += time1; + } - for (l=0; l<loops; l++) - { + timeg /= loops; - for(i = 0; i < n * COMPSIZE * abs(inc_x); i++){ - x[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; - } + fprintf(stderr, " %10.2f MFlops\n", COMPSIZE * COMPSIZE * 2. * (double)m * (double)n / timeg * 1.e-6); - for(i = 0; i < n * COMPSIZE * abs(inc_y); i++){ - y[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; - } - gettimeofday( &start, (struct timezone *)0); + } + } + else + { - GEMV (&trans, &m, &n, alpha, a, &m, x, &inc_x, beta, y, &inc_y ); + for(n = from; n <= to; n += step) + { + timeg=0; + fprintf(stderr, " %6dx%d : ", (int)m,(int)n); + for(j = 0; j < m; j++){ + for(i = 0; i < n * COMPSIZE; i++){ + a[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; + } + } - gettimeofday( &stop, (struct timezone *)0); + for (l=0; l<loops; l++) + { - time1 = (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_usec - start.tv_usec)) * 1.e-6; + for(i = 0; i < n * COMPSIZE * abs(inc_x); i++){ + x[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; + } - timeg += time1; + for(i = 0; i < n * COMPSIZE * abs(inc_y); i++){ + y[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; + } + gettimeofday( &start, (struct timezone *)0); + GEMV (&trans, &m, &n, alpha, a, &m, x, &inc_x, beta, y, &inc_y ); + gettimeofday( &stop, (struct timezone *)0); + time1 = (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_usec - start.tv_usec)) * 1.e-6; + timeg += time1; - } + } - timeg /= loops; + timeg /= loops; - fprintf(stderr, - " %10.2f MFlops\n", - COMPSIZE * COMPSIZE * 2. * (double)m * (double)n / timeg * 1.e-6); + fprintf(stderr, " %10.2f MFlops\n", COMPSIZE * COMPSIZE * 2. * (double)m * (double)n / timeg * 1.e-6); + } } return 0; |