$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 #include -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 #include +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) +