diff options
Diffstat (limited to 'src/openblas-test.c')
-rw-r--r-- | src/openblas-test.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/openblas-test.c b/src/openblas-test.c new file mode 100644 index 0000000..1568224 --- /dev/null +++ b/src/openblas-test.c @@ -0,0 +1,71 @@ +/* + * This file is part of MXE. + * See index.html for further information. + * + * taken from: https://gist.github.com/xianyi/5780018 + */ + +#include "stdio.h" +#include "stdlib.h" +#include "sys/time.h" +#include "time.h" + +extern void dgemm_(char*, char*, int*, int*,int*, double*, double*, int*, double*, int*, double*, double*, int*); + +int main(int argc, char* argv[]) +{ + int i; + printf("test!\n"); + if(argc<4){ + printf("Input Error\n"); + return 1; + } + + int m = atoi(argv[1]); + int n = atoi(argv[2]); + int k = atoi(argv[3]); + int sizeofa = m * k; + int sizeofb = k * n; + int sizeofc = m * n; + char ta = 'N'; + char tb = 'N'; + double alpha = 1.2; + double beta = 0.001; + + struct timeval start,finish; + double duration; + + double* A = (double*)malloc(sizeof(double) * sizeofa); + double* B = (double*)malloc(sizeof(double) * sizeofb); + double* C = (double*)malloc(sizeof(double) * sizeofc); + + srand((unsigned)time(NULL)); + + for (i=0; i<sizeofa; i++) + A[i] = i%3+1;//(rand()%100)/10.0; + + for (i=0; i<sizeofb; i++) + B[i] = i%3+1;//(rand()%100)/10.0; + + for (i=0; i<sizeofc; i++) + C[i] = i%3+1;//(rand()%100)/10.0; + //#if 0 + printf("m=%d,n=%d,k=%d,alpha=%lf,beta=%lf,sizeofc=%d\n",m,n,k,alpha,beta,sizeofc); + gettimeofday(&start, NULL); + dgemm_(&ta, &tb, &m, &n, &k, &alpha, A, &m, B, &k, &beta, C, &m); + gettimeofday(&finish, NULL); + + duration = ((double)(finish.tv_sec-start.tv_sec)*1000000 + (double)(finish.tv_usec-start.tv_usec)) / 1000000; + double gflops = 2.0 * m *n*k; + gflops = gflops/duration*1.0e-6; + + FILE *fp; + fp = fopen("timeDGEMM.txt", "a"); + fprintf(fp, "%dx%dx%d\t%lf s\t%lf MFLOPS\n", m, n, k, duration, gflops); + fclose(fp); + + free(A); + free(B); + free(C); + return 0; +} |