diff options
author | Nicholas Noll <nbnoll@eml.cc> | 2020-05-29 14:41:05 -0700 |
---|---|---|
committer | Nicholas Noll <nbnoll@eml.cc> | 2020-05-29 14:41:05 -0700 |
commit | 43ecfce7d20360a5fdc53e5ced266eccc8723242 (patch) | |
tree | c380ce6c3b2e9221a9510e9e829a4d772041ea78 /sys/libmath/blas.c | |
parent | 680d60678b273f1ff20b013b24954773f76b4e1d (diff) |
blas code update
Diffstat (limited to 'sys/libmath/blas.c')
-rw-r--r-- | sys/libmath/blas.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/sys/libmath/blas.c b/sys/libmath/blas.c index 224480b..4c9e67b 100644 --- a/sys/libmath/blas.c +++ b/sys/libmath/blas.c @@ -6,38 +6,47 @@ #include <vendor/blas/cblas.h> -#define NCOL 20000 -#define NROW 20000 -#define NIT 2000 +#define NCOL 2*512 +#define NROW 2*512 +#define NSUM 2*512 +#define NIT 10 #define INC 1 error main() { int i, j, nit; - double *x, *y, res[2]; + double *x, *y, *z, *w, res[2]; clock_t t; double tprof[2] = { 0 }; rng·init(0); - x = malloc(sizeof(*x)*NCOL); - y = malloc(sizeof(*x)*NROW); + x = malloc(sizeof(*x)*NROW*NCOL); + y = malloc(sizeof(*x)*NROW*NCOL); + z = malloc(sizeof(*x)*NROW*NCOL); + w = malloc(sizeof(*x)*NROW*NCOL); #define DO_0 t = clock(); \ - res[0] += blas·dasum(NROW/INC, x, INC); \ + blas·dgemm(0,0,NROW,NCOL,NSUM,10.1,x,NROW,y,NROW,1.2,z,NROW);\ t = clock() - t; \ + res[0] += blas·dasum(NROW*NCOL,z,INC); \ tprof[0] += 1000.*t/CLOCKS_PER_SEC; \ #define DO_1 t = clock(); \ - res[1] += cblas_dasum(NROW/INC, x, INC); \ + cblas_dgemm(CblasRowMajor,CblasNoTrans,CblasNoTrans,NROW,NCOL,NSUM,10.1,x,NROW,y,NROW,1.2,w,NROW);\ t = clock() - t; \ + res[1] += cblas_dasum(NROW*NCOL,w,INC); \ tprof[1] += 1000.*t/CLOCKS_PER_SEC; for (nit = 0; nit < NIT; nit++) { for (i = 0; i < NROW; i++) { - x[i] = rng·random(); - y[i] = rng·random(); + for (j = 0; j < NCOL; j++) { + x[j + NROW*i] = rng·random(); + y[j + NROW*i] = rng·random(); + z[j + NROW*i] = rng·random(); + w[j + NROW*i] = z[j + NROW*i]; + } } switch (nit % 2) { |