diff options
-rw-r--r-- | benchmarks/linpack/Makefile | 25 | ||||
-rw-r--r-- | benchmarks/linpack/files/md5 | 3 | ||||
-rw-r--r-- | benchmarks/linpack/patches/patch-aa | 229 | ||||
-rw-r--r-- | benchmarks/linpack/pkg/COMMENT | 1 | ||||
-rw-r--r-- | benchmarks/linpack/pkg/DESCR | 14 | ||||
-rw-r--r-- | benchmarks/linpack/pkg/PLIST | 3 |
6 files changed, 275 insertions, 0 deletions
diff --git a/benchmarks/linpack/Makefile b/benchmarks/linpack/Makefile new file mode 100644 index 00000000000..7bd9e83a1df --- /dev/null +++ b/benchmarks/linpack/Makefile @@ -0,0 +1,25 @@ +# $NetBSD: Makefile,v 1.1 1998/08/30 19:43:51 garbled Exp $ + +DISTNAME= linpackc +PKGNAME= linpack-940225 +CATEGORIES= benchmarks +MASTER_SITES= http://www.netlib.org/benchmark/ +EXTRACT_SUFX= # empty + +MAINTAINER= root@garbled.net + +NO_WRKSUBDIR= yes + +do-extract: + ${MKDIR} ${WRKSRC} + ${CP} ${DISTDIR}/linpackc ${WRKSRC}/linpack.c + +do-build: + (cd ${WRKSRC} ; cc -O2 -DROLL -DDP -o linpackd linpack.c -lm) + (cd ${WRKSRC} ; cc -O2 -DROLL -DSP -o linpacks linpack.c -lm) + +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/linpackd ${PREFIX}/bin + ${INSTALL_PROGRAM} ${WRKSRC}/linpacks ${PREFIX}/bin + +.include "../../mk/bsd.pkg.mk" diff --git a/benchmarks/linpack/files/md5 b/benchmarks/linpack/files/md5 new file mode 100644 index 00000000000..b54c9bbff30 --- /dev/null +++ b/benchmarks/linpack/files/md5 @@ -0,0 +1,3 @@ +$NetBSD: md5,v 1.1 1998/08/30 19:43:51 garbled Exp $ + +MD5 (linpackc) = f6e06f98fdbf7e39f84aa9e6c04de131 diff --git a/benchmarks/linpack/patches/patch-aa b/benchmarks/linpack/patches/patch-aa new file mode 100644 index 00000000000..54100a0b97e --- /dev/null +++ b/benchmarks/linpack/patches/patch-aa @@ -0,0 +1,229 @@ +$NetBSD: patch-aa,v 1.1 1998/08/30 19:43:51 garbled Exp $ +--- linpack.c.orig Sun Aug 30 11:34:04 1998 ++++ linpack.c Sun Aug 30 11:40:18 1998 +@@ -48,7 +48,7 @@ + #include <stdio.h> + #include <math.h> + +-static REAL time[9][9]; ++static REAL timex[9][9]; + + main () + { +@@ -71,11 +71,11 @@ + matgen(a,lda,n,b,&norma); + t1 = second(); + dgefa(a,lda,n,ipvt,&info); +- time[0][0] = second() - t1; ++ timex[0][0] = second() - t1; + t1 = second(); + dgesl(a,lda,n,ipvt,b,0); +- time[1][0] = second() - t1; +- total = time[0][0] + time[1][0]; ++ timex[1][0] = second() - t1; ++ total = timex[0][0] + timex[1][0]; + + /* compute a residual to verify results. */ + +@@ -108,10 +108,10 @@ + fprintf(stderr," dgefa dgesl total kflops unit"); + fprintf(stderr," ratio\n"); + +- time[2][0] = total; +- time[3][0] = ops/(1.0e3*total); +- time[4][0] = 2.0e3/time[3][0]; +- time[5][0] = total/cray; ++ timex[2][0] = total; ++ timex[3][0] = ops/(1.0e3*total); ++ timex[4][0] = 2.0e3/timex[3][0]; ++ timex[5][0] = total/cray; + + fprintf(stderr," times for array with leading dimension of%5d\n",lda); + print_time(0); +@@ -119,28 +119,28 @@ + matgen(a,lda,n,b,&norma); + t1 = second(); + dgefa(a,lda,n,ipvt,&info); +- time[0][1] = second() - t1; ++ timex[0][1] = second() - t1; + t1 = second(); + dgesl(a,lda,n,ipvt,b,0); +- time[1][1] = second() - t1; +- total = time[0][1] + time[1][1]; +- time[2][1] = total; +- time[3][1] = ops/(1.0e3*total); +- time[4][1] = 2.0e3/time[3][1]; +- time[5][1] = total/cray; ++ timex[1][1] = second() - t1; ++ total = timex[0][1] + timex[1][1]; ++ timex[2][1] = total; ++ timex[3][1] = ops/(1.0e3*total); ++ timex[4][1] = 2.0e3/timex[3][1]; ++ timex[5][1] = total/cray; + + matgen(a,lda,n,b,&norma); + t1 = second(); + dgefa(a,lda,n,ipvt,&info); +- time[0][2] = second() - t1; ++ timex[0][2] = second() - t1; + t1 = second(); + dgesl(a,lda,n,ipvt,b,0); +- time[1][2] = second() - t1; +- total = time[0][2] + time[1][2]; +- time[2][2] = total; +- time[3][2] = ops/(1.0e3*total); +- time[4][2] = 2.0e3/time[3][2]; +- time[5][2] = total/cray; ++ timex[1][2] = second() - t1; ++ total = timex[0][2] + timex[1][2]; ++ timex[2][2] = total; ++ timex[3][2] = ops/(1.0e3*total); ++ timex[4][2] = 2.0e3/timex[3][2]; ++ timex[5][2] = total/cray; + + ntimes = NTIMES; + tm2 = 0.0; +@@ -153,19 +153,19 @@ + dgefa(a,lda,n,ipvt,&info); + } + +- time[0][3] = (second() - t1 - tm2)/ntimes; ++ timex[0][3] = (second() - t1 - tm2)/ntimes; + t1 = second(); + + for (i = 0; i < ntimes; i++) { + dgesl(a,lda,n,ipvt,b,0); + } + +- time[1][3] = (second() - t1)/ntimes; +- total = time[0][3] + time[1][3]; +- time[2][3] = total; +- time[3][3] = ops/(1.0e3*total); +- time[4][3] = 2.0e3/time[3][3]; +- time[5][3] = total/cray; ++ timex[1][3] = (second() - t1)/ntimes; ++ total = timex[0][3] + timex[1][3]; ++ timex[2][3] = total; ++ timex[3][3] = ops/(1.0e3*total); ++ timex[4][3] = 2.0e3/timex[3][3]; ++ timex[5][3] = total/cray; + + print_time(1); + print_time(2); +@@ -174,41 +174,41 @@ + matgen(aa,ldaa,n,b,&norma); + t1 = second(); + dgefa(aa,ldaa,n,ipvt,&info); +- time[0][4] = second() - t1; ++ timex[0][4] = second() - t1; + t1 = second(); + dgesl(aa,ldaa,n,ipvt,b,0); +- time[1][4] = second() - t1; +- total = time[0][4] + time[1][4]; +- time[2][4] = total; +- time[3][4] = ops/(1.0e3*total); +- time[4][4] = 2.0e3/time[3][4]; +- time[5][4] = total/cray; ++ timex[1][4] = second() - t1; ++ total = timex[0][4] + timex[1][4]; ++ timex[2][4] = total; ++ timex[3][4] = ops/(1.0e3*total); ++ timex[4][4] = 2.0e3/timex[3][4]; ++ timex[5][4] = total/cray; + + matgen(aa,ldaa,n,b,&norma); + t1 = second(); + dgefa(aa,ldaa,n,ipvt,&info); +- time[0][5] = second() - t1; ++ timex[0][5] = second() - t1; + t1 = second(); + dgesl(aa,ldaa,n,ipvt,b,0); +- time[1][5] = second() - t1; +- total = time[0][5] + time[1][5]; +- time[2][5] = total; +- time[3][5] = ops/(1.0e3*total); +- time[4][5] = 2.0e3/time[3][5]; +- time[5][5] = total/cray; ++ timex[1][5] = second() - t1; ++ total = timex[0][5] + timex[1][5]; ++ timex[2][5] = total; ++ timex[3][5] = ops/(1.0e3*total); ++ timex[4][5] = 2.0e3/timex[3][5]; ++ timex[5][5] = total/cray; + + matgen(aa,ldaa,n,b,&norma); + t1 = second(); + dgefa(aa,ldaa,n,ipvt,&info); +- time[0][6] = second() - t1; ++ timex[0][6] = second() - t1; + t1 = second(); + dgesl(aa,ldaa,n,ipvt,b,0); +- time[1][6] = second() - t1; +- total = time[0][6] + time[1][6]; +- time[2][6] = total; +- time[3][6] = ops/(1.0e3*total); +- time[4][6] = 2.0e3/time[3][6]; +- time[5][6] = total/cray; ++ timex[1][6] = second() - t1; ++ total = timex[0][6] + timex[1][6]; ++ timex[2][6] = total; ++ timex[3][6] = ops/(1.0e3*total); ++ timex[4][6] = 2.0e3/timex[3][6]; ++ timex[5][6] = total/cray; + + ntimes = NTIMES; + tm2 = 0; +@@ -219,22 +219,22 @@ + tm2 = tm2 + second() - tm; + dgefa(aa,ldaa,n,ipvt,&info); + } +- time[0][7] = (second() - t1 - tm2)/ntimes; ++ timex[0][7] = (second() - t1 - tm2)/ntimes; + t1 = second(); + for (i = 0; i < ntimes; i++) { + dgesl(aa,ldaa,n,ipvt,b,0); + } +- time[1][7] = (second() - t1)/ntimes; +- total = time[0][7] + time[1][7]; +- time[2][7] = total; +- time[3][7] = ops/(1.0e3*total); +- time[4][7] = 2.0e3/time[3][7]; +- time[5][7] = total/cray; ++ timex[1][7] = (second() - t1)/ntimes; ++ total = timex[0][7] + timex[1][7]; ++ timex[2][7] = total; ++ timex[3][7] = ops/(1.0e3*total); ++ timex[4][7] = 2.0e3/timex[3][7]; ++ timex[5][7] = total/cray; + + /* the following code sequence implements the semantics of +- the Fortran intrinsics "nint(min(time[3][3],time[3][7]))" */ ++ the Fortran intrinsics "nint(min(timex[3][3],timex[3][7]))" */ + +- kf = (time[3][3] < time[3][7]) ? time[3][3] : time[3][7]; ++ kf = (timex[3][3] < timex[3][7]) ? timex[3][3] : timex[3][7]; + kf = (kf > ZERO) ? (kf + .5) : (kf - .5); + if (fabs((double)kf) < ONE) + kflops = 0; +@@ -256,9 +256,9 @@ + print_time (row) + int row; + { +-fprintf(stderr,"%11.2f%11.2f%11.2f%11.0f%11.2f%11.2f\n", (double)time[0][row], +- (double)time[1][row], (double)time[2][row], (double)time[3][row], +- (double)time[4][row], (double)time[5][row]); ++fprintf(stderr,"%11.2f%11.2f%11.2f%11.0f%11.2f%11.2f\n", (double)timex[0][row], ++ (double)timex[1][row], (double)timex[2][row], (double)timex[3][row], ++ (double)timex[4][row], (double)timex[5][row]); + } + + /*----------------------*/ +@@ -893,8 +893,6 @@ + struct rusage ru; + REAL t ; + +-void getrusage(); +- + getrusage(RUSAGE_SELF,&ru) ; + + t = (REAL) (ru.ru_utime.tv_sec+ru.ru_stime.tv_sec) + diff --git a/benchmarks/linpack/pkg/COMMENT b/benchmarks/linpack/pkg/COMMENT new file mode 100644 index 00000000000..f9267460291 --- /dev/null +++ b/benchmarks/linpack/pkg/COMMENT @@ -0,0 +1 @@ +a collection of benchmarks for floating point. diff --git a/benchmarks/linpack/pkg/DESCR b/benchmarks/linpack/pkg/DESCR new file mode 100644 index 00000000000..948be490455 --- /dev/null +++ b/benchmarks/linpack/pkg/DESCR @@ -0,0 +1,14 @@ +Translated to C by Bonnie Toy 5/88 + +LINPACK is a collection of Fortran subroutines that analyze and solve +linear equations and linear least-squares problems. The package solves +linear systems whose matrices are general, banded, symmetric indefinite, +symmetric positive definite, triangular, and tridiagonal square. In +addition, the package computes the QR and singular value decompositions of +rectangular matrices and applies them to least-squares problems. LINPACK +uses column-oriented algorithms to increase efficiency by preserving +locality of reference. + +LINPACK was designed for supercomputers in use in the 1970s and early +1980s. LINPACK has been largely superceded by LAPACK, which has been +designed to run efficiently on shared-memory, vector supercomputers. diff --git a/benchmarks/linpack/pkg/PLIST b/benchmarks/linpack/pkg/PLIST new file mode 100644 index 00000000000..a66988bcf45 --- /dev/null +++ b/benchmarks/linpack/pkg/PLIST @@ -0,0 +1,3 @@ +@comment $NetBSD: PLIST,v 1.1 1998/08/30 19:43:52 garbled Exp $ +bin/linpackd +bin/linpacks |