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