![]() |
LAPACK
3.4.1
LAPACK: Linear Algebra PACKage
|
00001 *> \brief \b DSECNDTST 00002 * 00003 * =========== DOCUMENTATION =========== 00004 * 00005 * Online html documentation available at 00006 * http://www.netlib.org/lapack/explore-html/ 00007 * 00008 * Definition: 00009 * =========== 00010 * 00011 * PROGRAM DSECNDTST 00012 * 00013 * Authors: 00014 * ======== 00015 * 00016 *> \author Univ. of Tennessee 00017 *> \author Univ. of California Berkeley 00018 *> \author Univ. of Colorado Denver 00019 *> \author NAG Ltd. 00020 * 00021 *> \date November 2011 00022 * 00023 *> \ingroup auxOTHERauxiliary 00024 * 00025 * ===================================================================== PROGRAM DSECNDTST 00026 * 00027 * -- LAPACK test routine (version 3.4.0) -- 00028 * 00029 * -- LAPACK computational routine (version 3.4.0) -- 00030 * -- LAPACK is a software package provided by Univ. of Tennessee, -- 00031 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 00032 * November 2011 00033 * 00034 * ===================================================================== 00035 * 00036 * .. Parameters .. 00037 INTEGER NMAX, ITS 00038 PARAMETER ( NMAX = 1000, ITS = 50000 ) 00039 * .. 00040 * .. Local Scalars .. 00041 INTEGER I, J 00042 DOUBLE PRECISION ALPHA, AVG, T1, T2, TNOSEC, TOTAL 00043 * .. 00044 * .. Local Arrays .. 00045 DOUBLE PRECISION X( NMAX ), Y( NMAX ) 00046 * .. 00047 * .. External Functions .. 00048 DOUBLE PRECISION DSECND 00049 EXTERNAL DSECND 00050 * .. 00051 * .. Intrinsic Functions .. 00052 INTRINSIC DBLE 00053 * .. 00054 * .. Executable Statements .. 00055 * 00056 * .. Figure TOTAL flops .. 00057 TOTAL = DBLE(NMAX) * DBLE(ITS) * 2.0 00058 * 00059 * Initialize X and Y 00060 * 00061 DO 10 I = 1, NMAX 00062 X( I ) = DBLE( 1 ) / DBLE( I ) 00063 Y( I ) = DBLE( NMAX-I ) / DBLE( NMAX ) 00064 10 CONTINUE 00065 ALPHA = 0.315D0 00066 * 00067 * Time TOTAL SAXPY operations 00068 * 00069 T1 = DSECND( ) 00070 DO 30 J = 1, ITS 00071 DO 20 I = 1, NMAX 00072 Y( I ) = Y( I ) + ALPHA*X( I ) 00073 20 CONTINUE 00074 ALPHA = -ALPHA 00075 30 CONTINUE 00076 T2 = DSECND( ) 00077 TNOSEC = T2 - T1 00078 WRITE( 6, 9999 )TOTAL, TNOSEC 00079 IF( TNOSEC.GT.0.0 ) THEN 00080 WRITE( 6, 9998 )(TOTAL/1.0D6)/TNOSEC 00081 ELSE 00082 WRITE( 6, 9994 ) 00083 END IF 00084 * 00085 * Time TOTAL DAXPY operations with DSECND in the outer loop 00086 * 00087 T1 = DSECND( ) 00088 DO 50 J = 1, ITS 00089 DO 40 I = 1, NMAX 00090 Y( I ) = Y( I ) + ALPHA*X( I ) 00091 40 CONTINUE 00092 ALPHA = -ALPHA 00093 T2 = DSECND( ) 00094 50 CONTINUE 00095 * 00096 * Compute the time used in milliseconds used by an average call 00097 * to DSECND. 00098 * 00099 WRITE( 6, 9997 )T2 - T1 00100 AVG = ( ( T2-T1 ) - TNOSEC ) * 1000.0D+00/DBLE( ITS ) 00101 IF( AVG.GT.0.0) 00102 $ WRITE( 6, 9996 )AVG 00103 * 00104 * Compute the equivalent number of floating point operations used 00105 * by an average call to DSECND. 00106 * 00107 IF(( AVG.GT.0.0 ).AND.( TNOSEC.GT.0.0 )) 00108 $ WRITE( 6, 9995 )(AVG/1000) * TOTAL / TNOSEC 00109 * 00110 9999 FORMAT( ' Time for ', G10.3,' DAXPY ops = ', G10.3, ' seconds' ) 00111 9998 FORMAT( ' DAXPY performance rate = ', G10.3, ' mflops ' ) 00112 9997 FORMAT( ' Including DSECND, time = ', G10.3, ' seconds' ) 00113 9996 FORMAT( ' Average time for DSECND = ', G10.3, 00114 $ ' milliseconds' ) 00115 9995 FORMAT( ' Equivalent floating point ops = ', G10.3, ' ops' ) 00116 9994 FORMAT( ' *** Warning: Time for operations was less or equal', 00117 $ ' than zero => timing in TESTING might be dubious' ) 00118 CALL MYSUB(NMAX,X,Y) 00119 END 00120 SUBROUTINE MYSUB(N,X,Y) 00121 INTEGER N 00122 DOUBLE PRECISION X(N), Y(N) 00123 RETURN 00124 END