Skip to content

Commit

Permalink
Benchmark cleanup #56
Browse files Browse the repository at this point in the history
  • Loading branch information
nakatamaho committed Sep 24, 2022
1 parent ce280d8 commit ec0f920
Show file tree
Hide file tree
Showing 16 changed files with 87 additions and 66 deletions.
6 changes: 3 additions & 3 deletions benchmark/mpblas/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ Rcopy1.plt.in Rcopy2.plt.in Rcopy3.plt.in \
Rdot1.plt.in Rdot2.plt.in Rdot3.plt.in \
Rgemm1.plt.in Rgemm2.plt.in Rgemm3.plt.in \
Rgemm_cuda.plt.in \
Rgemv1.plt Rgemv2.plt Rgemv3.plt \
Rsyrk1.plt Rsyrk2.plt Rsyrk3.plt \
Rsyrk_cuda.plt \
Rgemv1.plt.in Rgemv2.plt.in Rgemv3.plt.in \
Rsyrk1.plt.in Rsyrk2.plt.in Rsyrk3.plt.in \
Rsyrk_cuda.plt.in \
go.Raxpy.sh go.Rcopy.sh go.Rdot.sh go.Rgemm.sh \
go.Rgemm_cuda.sh \
go.Rgemv.sh go.Rsyrk.sh \
Expand Down
2 changes: 1 addition & 1 deletion benchmark/mpblas/Rgemm3.plt.in
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ plot \
"log.Rgemm.double_opt" using 1:4 title 'double (OpenMP)' with lines linewidth 1, \
"log.Rgemm.double" using 1:4 title 'double' with lines linewidth 1, \
"log.dgemm.ref" using 1:4 title 'double (Ref.BLAS)' with lines linewidth 1, \
"log.dgemm.openblas" using 1:4 title 'double (OpenBLAS)' with lines linewidth 1
"log.dgemm.openblas" using 1:4 title 'double (OpenBLAS)' with lines linewidth 1
13 changes: 6 additions & 7 deletions benchmark/mpblas/Rgemv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,6 @@ int main(int argc, char *argv[]) {
return 1;
}
}

n = N0;
m = M0;
for (p = 0; p < TOTALSTEPS; p++) {
Expand All @@ -125,7 +124,7 @@ int main(int argc, char *argv[]) {
REAL *x = new REAL[k];
REAL *y = new REAL[l];
REAL *yref = new REAL[l];
REAL *A = new REAL[n * m];
REAL *a = new REAL[n * m];
if (check_flag) {
for (i = 0; i < k; i++) {
x[i] = randomnumber(dummy);
Expand All @@ -134,12 +133,12 @@ int main(int argc, char *argv[]) {
y[i] = yref[i] = randomnumber(dummy);
}
for (i = 0; i < k * l; i++) {
A[i] = randomnumber(dummy);
a[i] = randomnumber(dummy);
}
alpha = randomnumber(dummy);
beta = randomnumber(dummy);
auto t1 = Clock::now();
Rgemv(&trans, m, n, alpha, A, m, x, (mplapackint)1, beta, y, (mplapackint)1);
Rgemv(&trans, m, n, alpha, a, m, x, (mplapackint)1, beta, y, (mplapackint)1);
auto t2 = Clock::now();
elapsedtime = (double)duration_cast<nanoseconds>(t2 - t1).count() / 1.0e9;
(*mpblas_ref)(&trans, m, n, alpha, A, m, x, (mplapackint)1, beta, yref, (mplapackint)1);
Expand All @@ -156,14 +155,14 @@ int main(int argc, char *argv[]) {
y[i] = yref[i] = randomnumber(dummy);
}
for (i = 0; i < k * l; i++) {
A[i] = randomnumber(dummy);
a[i] = randomnumber(dummy);
}
alpha = randomnumber(dummy);
beta = randomnumber(dummy);
elapsedtime = 0.0;
for (int j = 0; j < LOOP; j++) {
auto t1 = Clock::now();
Rgemv(&trans, m, n, alpha, A, m, x, (mplapackint)1, beta, y, (mplapackint)1);
Rgemv(&trans, m, n, alpha, a, m, x, (mplapackint)1, beta, y, (mplapackint)1);
auto t2 = Clock::now();
elapsedtime = elapsedtime + (double)duration_cast<nanoseconds>(t2 - t1).count() / 1.0e9;
}
Expand All @@ -174,7 +173,7 @@ int main(int argc, char *argv[]) {
delete[] yref;
delete[] y;
delete[] x;
delete[] A;
delete[] a;
n = n + STEPN;
m = m + STEPM;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ set title font "Helvetica,20"
set title "Rgemv on %%MODELNAME%%"
set xlabel "Dimension"
set ylabel "MFLOPS"
#set terminal postscript eps color enhanced
set key above
set terminal pdf

plot \
Expand All @@ -14,6 +14,5 @@ plot \
"log.Rgemv._Float64x" using 1:3 title '\_Float64x' with lines linewidth 1, \
"log.Rgemv._Float64x_opt" using 1:3 title '\_Float64x (OpenMP)' with lines linewidth 1, \
"log.Rgemv.dd" using 1:3 title 'double double' with lines linewidth 1, \
"log.Rgemv.dd_opt" using 1:3 title 'double double (OpenMP)' with lines linewidth 1, \
"log.Rgemv.double" using 1:3 title 'double' with lines linewidth 1
"log.Rgemv.dd_opt" using 1:3 title 'double double (OpenMP)' with lines linewidth 1

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ set title font "Helvetica,20"
set title "Rgemv on %%MODELNAME%%"
set xlabel "Dimension"
set ylabel "MFLOPS"
#set terminal postscript eps color enhanced
set key above
set terminal pdf

plot \
Expand Down
11 changes: 0 additions & 11 deletions benchmark/mpblas/Rgemv3.plt

This file was deleted.

15 changes: 15 additions & 0 deletions benchmark/mpblas/Rgemv3.plt.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
set xlabel font "Helvetica,20"
set ylabel font "Helvetica,20"
set key font "Helvetica,16"
set title font "Helvetica,20"
set title "Rgemv on %%MODELNAME%%"
set xlabel "Dimension"
set ylabel "MFLOPS"
set key above
set terminal pdf

plot \
"log.Rgemv.double_opt" using 1:3 title 'double (OpenMP)' with lines linewidth 1, \
"log.Rgemv.double" using 1:3 title 'double' with lines linewidth 1, \
"log.dgemv.ref" using 1:3 title 'double (Ref.BLAS)' with lines linewidth 1, \
"log.dgemv.openblas" using 1:3 title 'double (OpenBLAS)' with lines linewidth 1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ set title font "Helvetica,20"
set title "Rsyrk on %%MODELNAME%%"
set xlabel "Dimension"
set ylabel "MFLOPS"
#set terminal postscript eps color enhanced
set key above
set terminal pdf

plot \
Expand All @@ -14,6 +14,4 @@ plot \
"log.Rsyrk._Float64x" using 1:3 title '\_Float64x' with lines linewidth 1, \
"log.Rsyrk._Float64x_opt" using 1:3 title '\_Float64x (OpenMP)' with lines linewidth 1, \
"log.Rsyrk.dd" using 1:3 title 'double double' with lines linewidth 1, \
"log.Rsyrk.dd_opt" using 1:3 title 'double double (OpenMP)' with lines linewidth 1, \
"log.Rsyrk.double" using 1:3 title 'double' with lines linewidth 1

"log.Rsyrk.dd_opt" using 1:3 title 'double double (OpenMP)' with lines linewidth 1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ set title font "Helvetica,20"
set title "Rsyrk on %%MODELNAME%%"
set xlabel "Dimension"
set ylabel "MFLOPS"
#set terminal postscript eps color enhanced
set key above
set terminal pdf

plot \
Expand Down
12 changes: 0 additions & 12 deletions benchmark/mpblas/Rsyrk3.plt

This file was deleted.

15 changes: 15 additions & 0 deletions benchmark/mpblas/Rsyrk3.plt.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
set xlabel font "Helvetica,20"
set ylabel font "Helvetica,20"
set key font "Helvetica,16"
set title font "Helvetica,20"
set title "Rsyrk on %%MODELNAME%%"
set xlabel "Dimension"
set ylabel "MFLOPS"
set key above
set terminal pdf

plot \
"log.Rsyrk.double_opt" using 1:3 title 'double (OpenMP)' with lines linewidth 1, \
"log.Rsyrk.double" using 1:3 title 'double' with lines linewidth 1, \
"log.dsyrk.ref" using 1:3 title 'double (Ref.BLAS)' with lines linewidth 1, \
"log.dsyrk.openblas" using 1:3 title 'double (OpenBLAS)' with lines linewidth 1
41 changes: 28 additions & 13 deletions benchmark/mpblas/dgemv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,21 @@
#define ___DOUBLE_BENCH___
#include <mplapack_benchmark.h>

#define TOTALSTEPS 1000
// cf. https://netlib.org/lapack/lawnspdf/lawn41.pdf p.120
double flops_gemv(int m_i, int n_i) {
double adds, muls, flops;
double n, m;
n = (double)n_i;
m = (double)m_i;
muls = m * n + 2. * m;
adds = m * n;
flops = muls + adds;
return flops;
}

int main(int argc, char *argv[]) {
int k, l, m, n;
int incx = 1, incy = 1, STEPN, STEPM, N0, M0;
int STEPN = 7, STEPM = 7, N0, M0, LOOP = 3, TOTALSTEPS = 283;
double alpha, beta, dummy, *dummywork;
double mOne = -1;
double elapsedtime, t1, t2;
Expand All @@ -52,9 +62,6 @@ int main(int argc, char *argv[]) {

// initialization
N0 = M0 = 1;
STEPN = STEPM = 1;
trans = 'n';
normtype = 'm';
if (argc != 1) {
for (i = 1; i < argc; i++) {
if (strcmp("-N", argv[i]) == 0) {
Expand All @@ -67,6 +74,10 @@ int main(int argc, char *argv[]) {
STEPM = atoi(argv[++i]);
} else if (strcmp("-T", argv[i]) == 0) {
trans = 't';
} else if (strcmp("-LOOPS", argv[i]) == 0) {
LOOPS = atoi(argv[++i]);
} else if (strcmp("-TOTALSTEPS", argv[i]) == 0) {
TOTALSTEPS = atoi(argv[++i]);
}
}
}
Expand All @@ -82,27 +93,31 @@ int main(int argc, char *argv[]) {
}
double *x = new double[k];
double *y = new double[l];
double *A = new double[n * m];
double *a = new double[n * m];
for (i = 0; i < k; i++) {
x[i] = randomnumber(dummy);
}
for (i = 0; i < l; i++) {
y[i] = randomnumber(dummy);
}
for (i = 0; i < k * l; i++) {
A[i] = randomnumber(dummy);
a[i] = randomnumber(dummy);
}
alpha = randomnumber(dummy);
beta = randomnumber(dummy);
auto t1 = Clock::now();
dgemv_f77(&trans, &m, &n, &alpha, A, &m, x, &incx, &beta, y, &incy);
auto t2 = Clock::now();
elapsedtime = (double)duration_cast<nanoseconds>(t2 - t1).count() / 1.0e9;
elapsedtime = 0.0;
for (int j = 0; j < LOOPS; j++) {
auto t1 = Clock::now();
dgemv_f77(&trans, &m, &n, &alpha, a, &m, x, &incx, &beta, y, &incy);
auto t2 = Clock::now();
elapsedtime = elapsedtime + (double)duration_cast<nanoseconds>(t2 - t1).count() / 1.0e9;
}
elapsedtime = elapsedtime / (double)LOOPS;
printf(" m n MFLOPS trans\n");
printf("%6d %6d %10.3f %c\n", (int)n, (int)m, (2.0 * (double)n * (double)m) / elapsedtime * MFLOPS, trans);
printf("%6d %6d %10.3f %c\n", (int)n, (int)m, flops_gemv(m, n) / elapsedtime * MFLOPS, trans);
delete[] y;
delete[] x;
delete[] A;
delete[] a;
n = n + STEPN;
m = m + STEPM;
}
Expand Down
6 changes: 3 additions & 3 deletions benchmark/mpblas/go.Rgemm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ else
MODELNAME="unknown"
fi

$SED -i -e "s/%%MODELNAME%%/$MODELNAME/g" Rgemm1.plt
$SED -i -e "s/%%MODELNAME%%/$MODELNAME/g" Rgemm2.plt
$SED -i -e "s/%%MODELNAME%%/$MODELNAME/g" Rgemm3.plt
$SED -e "s/%%MODELNAME%%/$MODELNAME/g" Rgemm1.plt.in > Rgemm1.plt
$SED -e "s/%%MODELNAME%%/$MODELNAME/g" Rgemm2.plt.in > Rgemm2.plt
$SED -e "s/%%MODELNAME%%/$MODELNAME/g" Rgemm3.plt.in > Rgemm3.plt
####

gnuplot Rgemm1.plt > Rgemm1.pdf
Expand Down
2 changes: 1 addition & 1 deletion benchmark/mpblas/go.Rgemm_cuda.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@ else
MODELNAME="unknown"
fi

$SED -i -e "s/%%GPU%%/$MODELNAME/g" Rgemm_cuda.plt.in > Rgemm_cuda.plt
$SED -e "s/%%GPU%%/$MODELNAME/g" Rgemm_cuda.plt.in > Rgemm_cuda.plt

gnuplot Rgemm_cuda.plt > Rgemm_cuda.pdf
9 changes: 6 additions & 3 deletions benchmark/mpblas/go.Rgemv.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ else
LDPATHPREFIX="LD_LIBRARY_PATH=%%PREFIX%%/lib:$LD_LIBRARY_PATH"
fi

env $LDPATHPREFIX ./dgemv_ref >& log.dgemv.ref
env $LDPATHPREFIX ./dgemv_openblas >& log.dgemv.openblas

####
MPLIBS="_Float128 _Float64x dd double"

Expand Down Expand Up @@ -35,9 +38,9 @@ else
MODELNAME="unknown"
fi

$SED -i -e "s/%%MODELNAME%%/$MODELNAME/g" Rgemv1.plt
$SED -i -e "s/%%MODELNAME%%/$MODELNAME/g" Rgemv2.plt
$SED -i -e "s/%%MODELNAME%%/$MODELNAME/g" Rgemv3.plt
$SED -e "s/%%MODELNAME%%/$MODELNAME/g" Rgemv1.plt.in > Rgemv1.plt
$SED -e "s/%%MODELNAME%%/$MODELNAME/g" Rgemv2.plt.in > Rgemv2.plt
$SED -e "s/%%MODELNAME%%/$MODELNAME/g" Rgemv3.plt.in > Rgemv3.plt
####

gnuplot Rgemv1.plt > Rgemv1.pdf
Expand Down
6 changes: 3 additions & 3 deletions benchmark/mpblas/go.Rsyrk.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ else
MODELNAME="unknown"
fi

$SED -i -e "s/%%MODELNAME%%/$MODELNAME/g" Rsyrk1.plt
$SED -i -e "s/%%MODELNAME%%/$MODELNAME/g" Rsyrk2.plt
$SED -i -e "s/%%MODELNAME%%/$MODELNAME/g" Rsyrk3.plt
$SED -e "s/%%MODELNAME%%/$MODELNAME/g" Rsyrk1.plt.in > Rsyrk1.plt
$SED -e "s/%%MODELNAME%%/$MODELNAME/g" Rsyrk2.plt.in > Rsyrk2.plt
$SED -e "s/%%MODELNAME%%/$MODELNAME/g" Rsyrk3.plt.in > Rsyrk3.plt
####

gnuplot Rsyrk1.plt > Rsyrk1.pdf
Expand Down

0 comments on commit ec0f920

Please sign in to comment.