mirror of
https://github.com/Stichting-MINIX-Research-Foundation/pkgsrc-ng.git
synced 2025-08-03 17:59:07 -04:00
274 lines
8.0 KiB
Plaintext
274 lines
8.0 KiB
Plaintext
$NetBSD: patch-aa,v 1.3 2013/01/11 23:25:11 joerg Exp $
|
|
|
|
--- linpack.c.orig 2013-01-11 15:21:29.000000000 +0000
|
|
+++ linpack.c
|
|
@@ -48,7 +48,10 @@ You must specify one of -DROLL or -DUNRO
|
|
#include <stdio.h>
|
|
#include <math.h>
|
|
|
|
-static REAL time[9][9];
|
|
+static REAL timex[9][9];
|
|
+
|
|
+static void daxpy(int n, REAL da, REAL *dx, int incx, REAL *dy, int incy);
|
|
+static void dscal(int n, REAL da, REAL *dx,int incx);
|
|
|
|
main ()
|
|
{
|
|
@@ -71,11 +74,11 @@ main ()
|
|
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 +111,10 @@ main ()
|
|
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 +122,28 @@ main ()
|
|
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 +156,19 @@ main ()
|
|
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 +177,41 @@ main ()
|
|
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 +222,22 @@ main ()
|
|
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 +259,9 @@ main ()
|
|
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]);
|
|
}
|
|
|
|
/*----------------------*/
|
|
@@ -528,13 +531,11 @@ function, references to a[i][j] are writ
|
|
|
|
/*----------------------*/
|
|
|
|
-daxpy(n,da,dx,incx,dy,incy)
|
|
+static void daxpy(int n, REAL da, REAL *dx, int incx, REAL *dy, int incy)
|
|
/*
|
|
constant times a vector plus a vector.
|
|
jack dongarra, linpack, 3/11/78.
|
|
*/
|
|
-REAL dx[],dy[],da;
|
|
-int incx,incy,n;
|
|
{
|
|
int i,ix,iy,m,mp1;
|
|
|
|
@@ -642,13 +643,11 @@ int incx,incy,n;
|
|
}
|
|
|
|
/*----------------------*/
|
|
-dscal(n,da,dx,incx)
|
|
+static void dscal(int n, REAL da, REAL *dx,int incx)
|
|
|
|
/* scales a vector by a constant.
|
|
jack dongarra, linpack, 3/11/78.
|
|
*/
|
|
-REAL da,dx[];
|
|
-int n, incx;
|
|
{
|
|
int i,m,mp1,nincx;
|
|
|
|
@@ -885,16 +884,14 @@ function, references to m[i][j] are writ
|
|
}
|
|
|
|
/*----------------------*/
|
|
-REAL second()
|
|
-{
|
|
#include <sys/time.h>
|
|
#include <sys/resource.h>
|
|
|
|
+REAL second()
|
|
+{
|
|
struct rusage ru;
|
|
REAL t ;
|
|
|
|
-void getrusage();
|
|
-
|
|
getrusage(RUSAGE_SELF,&ru) ;
|
|
|
|
t = (REAL) (ru.ru_utime.tv_sec+ru.ru_stime.tv_sec) +
|