diff options
author | julie <julielangou@users.noreply.github.com> | 2011-06-24 08:46:19 +0000 |
---|---|---|
committer | julie <julielangou@users.noreply.github.com> | 2011-06-24 08:46:19 +0000 |
commit | b39d1348c9fd0f341e3bf56014a45df82963c314 (patch) | |
tree | 3fbc9d3cd2c724c8941c6de3837c202f81557f94 | |
parent | 48544278b3504cd601d3b38a3ba6086c062fe2bb (diff) |
First try to get a nice script to analyze the LAPACK testing.
Below is the help that goes with it.
Please send feedback. I tired to include several levels of output and several kind of errors
So far, I just tested it on my machine, that has no major problems.
I just tested "numerical errors", not "illegal error" neither "info error".
The goal is to have our nightly testing use it and also users.
TO DO:
- Test other kinds of errors on machines
- See to include it in ctest and buildbot (need to contact Don and Brad/Chuck)
- See if a type of error option is required.
./lapack_testing.py [-h|--help] [-s |--short] [-f |--file] [-e |--error] [-p p |--prec p] [-t test |--test test] [-n | --number]
- h is to print this message
- f is to use directly the output of the LAPACK testing (.out files). By default, the script will run all the LAPACK tests
LEVEL OF OUTPUT
- x is to print a detailed summary
- e is to print only the error summary
- s is to print a short summary
- n is to print the numbers of failing tests (turn on summary mode)
SECLECTION OF TESTS:
- p [s/c/d/z] is to indicate the PRECISION to run:
s=single
d=double
c=complex
z=double complex
x=all [DEFAULT]
- t [lin/eig/mixed/rfp/all] is to indicate which TEST FAMILY to run:
lin=Linear Equation
eig=Eigen Problems
mixed=mixed-precision
rfp=rfp format
all=all tests [DEFAULT]
EXAMPLES:
./lapack_testing.py -n -f
Will return the numbers of failed tests by analyzing the LAPACK output
./lapack_testing.py -n -f -p s
Will return the numbers of failed tests in REAL precision by analyzing the LAPACK output
./lapack_testing.py -n -f -p s -t eig
Will return the numbers of failed tests in REAL precision by analyzing only the LAPACK output of EIGEN testings
Written by Julie Langou (June 2011)
31 files changed, 333 insertions, 45 deletions
diff --git a/TESTING/EIG/alasmg.f b/TESTING/EIG/alasmg.f index d7148d5d..be0000e6 100644 --- a/TESTING/EIG/alasmg.f +++ b/TESTING/EIG/alasmg.f @@ -49,7 +49,7 @@ 9999 FORMAT( 1X, A3, ': ', I6, ' out of ', I6, $ ' tests failed to pass the threshold' ) 9998 FORMAT( /1X, 'All tests for ', A3, - $ ' routines passed the threshold (', I6, ' tests run)' ) + $ ' routines passed the threshold ( ', I6, ' tests run)' ) 9997 FORMAT( 6X, I6, ' error messages recorded' ) RETURN * diff --git a/TESTING/EIG/alasum.f b/TESTING/EIG/alasum.f index fef7459f..057da15e 100644 --- a/TESTING/EIG/alasum.f +++ b/TESTING/EIG/alasum.f @@ -49,7 +49,7 @@ 9999 FORMAT( 1X, A3, ': ', I6, ' out of ', I6, $ ' tests failed to pass the threshold' ) 9998 FORMAT( /1X, 'All tests for ', A3, - $ ' routines passed the threshold (', I6, ' tests run)' ) + $ ' routines passed the threshold ( ', I6, ' tests run)' ) 9997 FORMAT( 6X, I6, ' error messages recorded' ) RETURN * diff --git a/TESTING/EIG/alasvm.f b/TESTING/EIG/alasvm.f index 67e949ce..123e2183 100644 --- a/TESTING/EIG/alasvm.f +++ b/TESTING/EIG/alasvm.f @@ -49,7 +49,7 @@ 9999 FORMAT( 1X, A3, ' drivers: ', I6, ' out of ', I6, $ ' tests failed to pass the threshold' ) 9998 FORMAT( /1X, 'All tests for ', A3, ' drivers passed the ', - $ 'threshold (', I6, ' tests run)' ) + $ 'threshold ( ', I6, ' tests run)' ) 9997 FORMAT( 14X, I6, ' error messages recorded' ) RETURN * diff --git a/TESTING/EIG/cchkec.f b/TESTING/EIG/cchkec.f index 5b7a7aa2..2eab1c41 100644 --- a/TESTING/EIG/cchkec.f +++ b/TESTING/EIG/cchkec.f @@ -116,7 +116,7 @@ 9996 FORMAT( ' Error in CTRSEN: RMAX =', 3E12.3, / ' LMAX = ', $ 3I8, ' NINFO=', 3I8, ' KNT=', I8 ) 9995 FORMAT( / 1X, 'All tests for ', A3, - $ ' routines passed the threshold (', I6, ' tests run)' ) + $ ' routines passed the threshold ( ', I6, ' tests run)' ) 9994 FORMAT( ' Tests of the Nonsymmetric eigenproblem condition', $ ' estimation routines', / ' CTRSYL, CTREXC, CTRSNA, CTRSEN', $ / ) diff --git a/TESTING/EIG/dchkec.f b/TESTING/EIG/dchkec.f index 6088a313..1b57c8a8 100644 --- a/TESTING/EIG/dchkec.f +++ b/TESTING/EIG/dchkec.f @@ -167,7 +167,7 @@ 9991 FORMAT( ' Error in DLAQTR: RMAX =', D12.3, / ' LMAX = ', I8, ' N', $ 'INFO=', I8, ' KNT=', I8 ) 9990 FORMAT( / 1X, 'All tests for ', A3, ' routines passed the thresh', - $ 'old (', I6, ' tests run)' ) + $ 'old ( ', I6, ' tests run)' ) 9989 FORMAT( ' Tests of the Nonsymmetric eigenproblem condition estim', $ 'ation routines', / ' DLALN2, DLASY2, DLANV2, DLAEXC, DTRS', $ 'YL, DTREXC, DTRSNA, DTRSEN, DLAQTR', / ) diff --git a/TESTING/EIG/dlasum.f b/TESTING/EIG/dlasum.f index 38dde1a0..fa02cace 100644 --- a/TESTING/EIG/dlasum.f +++ b/TESTING/EIG/dlasum.f @@ -23,10 +23,10 @@ $ ' tests failed to pass the threshold' ELSE WRITE( IOUNIT, FMT = 9998 )'All tests for ', TYPE, - $ ' passed the threshold (', NRUN, ' tests run)' + $ ' passed the threshold ( ', NRUN, ' tests run)' END IF 9999 FORMAT( 1X, A3, A2, I4, A8, I5, A35 ) - 9998 FORMAT( / 1X, A14, A3, A23, I5, A11 ) + 9998 FORMAT( / 1X, A14, A3, A24, I5, A11 ) RETURN * * End of DLASUM diff --git a/TESTING/EIG/schkec.f b/TESTING/EIG/schkec.f index 08b4699a..7fe98f4e 100644 --- a/TESTING/EIG/schkec.f +++ b/TESTING/EIG/schkec.f @@ -167,7 +167,7 @@ 9991 FORMAT( ' Error in SLAQTR: RMAX =', E12.3, / ' LMAX = ', I8, ' N', $ 'INFO=', I8, ' KNT=', I8 ) 9990 FORMAT( / 1X, 'All tests for ', A3, ' routines passed the thresh', - $ 'old (', I6, ' tests run)' ) + $ 'old ( ', I6, ' tests run)' ) 9989 FORMAT( ' Tests of the Nonsymmetric eigenproblem condition estim', $ 'ation routines', / ' SLALN2, SLASY2, SLANV2, SLAEXC, STRS', $ 'YL, STREXC, STRSNA, STRSEN, SLAQTR', / ) diff --git a/TESTING/EIG/slasum.f b/TESTING/EIG/slasum.f index 798310e1..fb36d1de 100644 --- a/TESTING/EIG/slasum.f +++ b/TESTING/EIG/slasum.f @@ -23,10 +23,10 @@ $ ' tests failed to pass the threshold' ELSE WRITE( IOUNIT, FMT = 9998 )'All tests for ', TYPE, - $ ' passed the threshold (', NRUN, ' tests run)' + $ ' passed the threshold ( ', NRUN, ' tests run)' END IF 9999 FORMAT( 1X, A3, A2, I4, A8, I5, A35 ) - 9998 FORMAT( / 1X, A14, A3, A23, I5, A11 ) + 9998 FORMAT( / 1X, A14, A3, A24, I5, A11 ) RETURN * * End of SLASUM diff --git a/TESTING/EIG/zchkec.f b/TESTING/EIG/zchkec.f index 989613ab..1644aa1a 100644 --- a/TESTING/EIG/zchkec.f +++ b/TESTING/EIG/zchkec.f @@ -116,7 +116,7 @@ 9996 FORMAT( ' Error in ZTRSEN: RMAX =', 3D12.3, / ' LMAX = ', 3I8, $ ' NINFO=', 3I8, ' KNT=', I8 ) 9995 FORMAT( / 1X, 'All tests for ', A3, - $ ' routines passed the threshold (', I6, ' tests run)' ) + $ ' routines passed the threshold ( ', I6, ' tests run)' ) 9994 FORMAT( ' Tests of the Nonsymmetric eigenproblem condition', $ ' estimation routines', / ' ZTRSYL, CTREXC, CTRSNA, CTRSEN', $ / ) diff --git a/TESTING/LIN/alasum.f b/TESTING/LIN/alasum.f index fef7459f..057da15e 100644 --- a/TESTING/LIN/alasum.f +++ b/TESTING/LIN/alasum.f @@ -49,7 +49,7 @@ 9999 FORMAT( 1X, A3, ': ', I6, ' out of ', I6, $ ' tests failed to pass the threshold' ) 9998 FORMAT( /1X, 'All tests for ', A3, - $ ' routines passed the threshold (', I6, ' tests run)' ) + $ ' routines passed the threshold ( ', I6, ' tests run)' ) 9997 FORMAT( 6X, I6, ' error messages recorded' ) RETURN * diff --git a/TESTING/LIN/alasvm.f b/TESTING/LIN/alasvm.f index 67e949ce..123e2183 100644 --- a/TESTING/LIN/alasvm.f +++ b/TESTING/LIN/alasvm.f @@ -49,7 +49,7 @@ 9999 FORMAT( 1X, A3, ' drivers: ', I6, ' out of ', I6, $ ' tests failed to pass the threshold' ) 9998 FORMAT( /1X, 'All tests for ', A3, ' drivers passed the ', - $ 'threshold (', I6, ' tests run)' ) + $ 'threshold ( ', I6, ' tests run)' ) 9997 FORMAT( 14X, I6, ' error messages recorded' ) RETURN * diff --git a/TESTING/LIN/cdrvrf1.f b/TESTING/LIN/cdrvrf1.f index 03f1b01b..fc76c1ac 100644 --- a/TESTING/LIN/cdrvrf1.f +++ b/TESTING/LIN/cdrvrf1.f @@ -206,8 +206,8 @@ 9997 FORMAT( 1X, ' Failure in ',A6,' N=',I5,' TYPE=',I5,' UPLO=''', + A1, ''', FORM =''',A1,''', NORM=''',A1,''', test=',G12.5) 9996 FORMAT( 1X, 'All tests for ',A6,' auxiliary routine passed the ', - + 'threshold (',I5,' tests run)') - 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5, + + 'threshold ( ',I5,' tests run)') + 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5, + ' tests failed to pass the threshold') 9994 FORMAT( 26X, I5,' error message recorded (',A6,')') * diff --git a/TESTING/LIN/cdrvrf2.f b/TESTING/LIN/cdrvrf2.f index c1c18ce1..42ee04d4 100644 --- a/TESTING/LIN/cdrvrf2.f +++ b/TESTING/LIN/cdrvrf2.f @@ -190,9 +190,9 @@ + ' routines ***') 9998 FORMAT( 1X, ' Error in RFP,convertion routines N=',I5, + ' UPLO=''', A1, ''', FORM =''',A1,'''') - 9997 FORMAT( 1X, 'All tests for the RFP convertion routines passed (', + 9997 FORMAT( 1X, 'All tests for the RFP convertion routines passed ( ', + I5,' tests run)') - 9996 FORMAT( 1X, 'RFP convertion routines:',I5,' out of ',I5, + 9996 FORMAT( 1X, 'RFP convertion routines: ',I5,' out of ',I5, + ' error message recorded') * RETURN diff --git a/TESTING/LIN/cdrvrf3.f b/TESTING/LIN/cdrvrf3.f index 55bad286..cae0cbea 100644 --- a/TESTING/LIN/cdrvrf3.f +++ b/TESTING/LIN/cdrvrf3.f @@ -299,8 +299,8 @@ + ' SIDE=''',A1,''',',' UPLO=''',A1,''',',' TRANS=''',A1,''',', + ' DIAG=''',A1,''',',' M=',I3,', N =', I3,', test=',G12.5) 9996 FORMAT( 1X, 'All tests for ',A5,' auxiliary routine passed the ', - + 'threshold (',I5,' tests run)') - 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5, + + 'threshold ( ',I5,' tests run)') + 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5, + ' tests failed to pass the threshold') * RETURN diff --git a/TESTING/LIN/cdrvrf4.f b/TESTING/LIN/cdrvrf4.f index 5ee83a98..f1d5f263 100644 --- a/TESTING/LIN/cdrvrf4.f +++ b/TESTING/LIN/cdrvrf4.f @@ -272,8 +272,8 @@ + ' UPLO=''',A1,''',',' TRANS=''',A1,''',', ' N=',I3,', K =', I3, + ', test=',G12.5) 9996 FORMAT( 1X, 'All tests for ',A5,' auxiliary routine passed the ', - + 'threshold (',I5,' tests run)') - 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5, + + 'threshold ( ',I5,' tests run)') + 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5, + ' tests failed to pass the threshold') * RETURN diff --git a/TESTING/LIN/ddrvab.f b/TESTING/LIN/ddrvab.f index 6077d236..3c8c233e 100644 --- a/TESTING/LIN/ddrvab.f +++ b/TESTING/LIN/ddrvab.f @@ -309,7 +309,7 @@ 9996 FORMAT( 1X, A6, ': ', I6, ' out of ', I6, $ ' tests failed to pass the threshold' ) 9995 FORMAT( /1X, 'All tests for ', A6, - $ ' routines passed the threshold (', I6, ' tests run)' ) + $ ' routines passed the threshold ( ', I6, ' tests run)' ) 9994 FORMAT( 6X, I6, ' error messages recorded' ) * * SUBNAM, INFO, INFOE, M, IMAT diff --git a/TESTING/LIN/ddrvac.f b/TESTING/LIN/ddrvac.f index be2fbc4e..02eb36c9 100644 --- a/TESTING/LIN/ddrvac.f +++ b/TESTING/LIN/ddrvac.f @@ -335,7 +335,7 @@ 9996 FORMAT( 1X, A6, ': ', I6, ' out of ', I6, $ ' tests failed to pass the threshold' ) 9995 FORMAT( /1X, 'All tests for ', A6, - $ ' routines passed the threshold (', I6, ' tests run)' ) + $ ' routines passed the threshold ( ', I6, ' tests run)' ) 9994 FORMAT( 6X, I6, ' error messages recorded' ) * * SUBNAM, INFO, INFOE, N, IMAT diff --git a/TESTING/LIN/ddrvrf1.f b/TESTING/LIN/ddrvrf1.f index 0b9413e6..7a06256a 100644 --- a/TESTING/LIN/ddrvrf1.f +++ b/TESTING/LIN/ddrvrf1.f @@ -204,8 +204,8 @@ 9997 FORMAT( 1X, ' Failure in ',A6,' N=',I5,' TYPE=',I5,' UPLO=''', + A1, ''', FORM =''',A1,''', NORM=''',A1,''', test=',G12.5) 9996 FORMAT( 1X, 'All tests for ',A6,' auxiliary routine passed the ', - + 'threshold (',I5,' tests run)') - 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5, + + 'threshold ( ',I5,' tests run)') + 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5, + ' tests failed to pass the threshold') 9994 FORMAT( 26X, I5,' error message recorded (',A6,')') * diff --git a/TESTING/LIN/ddrvrf2.f b/TESTING/LIN/ddrvrf2.f index 6ca6ad97..e5a8e3ce 100644 --- a/TESTING/LIN/ddrvrf2.f +++ b/TESTING/LIN/ddrvrf2.f @@ -190,9 +190,9 @@ + ' routines ***') 9998 FORMAT( 1X, ' Error in RFP,convertion routines N=',I5, + ' UPLO=''', A1, ''', FORM =''',A1,'''') - 9997 FORMAT( 1X, 'All tests for the RFP convertion routines passed (', + 9997 FORMAT( 1X, 'All tests for the RFP convertion routines passed ( ', + I5,' tests run)') - 9996 FORMAT( 1X, 'RFP convertion routines:',I5,' out of ',I5, + 9996 FORMAT( 1X, 'RFP convertion routines: ',I5,' out of ',I5, + ' error message recorded') * RETURN diff --git a/TESTING/LIN/ddrvrf3.f b/TESTING/LIN/ddrvrf3.f index 3bef2f73..dfed01dc 100644 --- a/TESTING/LIN/ddrvrf3.f +++ b/TESTING/LIN/ddrvrf3.f @@ -287,8 +287,8 @@ + ' SIDE=''',A1,''',',' UPLO=''',A1,''',',' TRANS=''',A1,''',', + ' DIAG=''',A1,''',',' M=',I3,', N =', I3,', test=',G12.5) 9996 FORMAT( 1X, 'All tests for ',A5,' auxiliary routine passed the ', - + 'threshold (',I5,' tests run)') - 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5, + + 'threshold ( ',I5,' tests run)') + 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5, + ' tests failed to pass the threshold') * RETURN diff --git a/TESTING/LIN/ddrvrf4.f b/TESTING/LIN/ddrvrf4.f index d0c81314..5a7c22bf 100644 --- a/TESTING/LIN/ddrvrf4.f +++ b/TESTING/LIN/ddrvrf4.f @@ -275,8 +275,8 @@ + ' UPLO=''',A1,''',',' TRANS=''',A1,''',', ' N=',I3,', K =', I3, + ', test=',G12.5) 9996 FORMAT( 1X, 'All tests for ',A5,' auxiliary routine passed the ', - + 'threshold (',I5,' tests run)') - 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5, + + 'threshold ( ',I5,' tests run)') + 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5, + ' tests failed to pass the threshold') * RETURN diff --git a/TESTING/LIN/sdrvrf1.f b/TESTING/LIN/sdrvrf1.f index 9c1bd40e..e4fefb66 100644 --- a/TESTING/LIN/sdrvrf1.f +++ b/TESTING/LIN/sdrvrf1.f @@ -204,8 +204,8 @@ 9997 FORMAT( 1X, ' Failure in ',A6,' N=',I5,' TYPE=',I5,' UPLO=''', + A1, ''', FORM =''',A1,''', NORM=''',A1,''', test=',G12.5) 9996 FORMAT( 1X, 'All tests for ',A6,' auxiliary routine passed the ', - + 'threshold (',I5,' tests run)') - 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5, + + 'threshold ( ',I5,' tests run)') + 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5, + ' tests failed to pass the threshold') 9994 FORMAT( 26X, I5,' error message recorded (',A6,')') * diff --git a/TESTING/LIN/sdrvrf2.f b/TESTING/LIN/sdrvrf2.f index 1a2abf2d..0c5e922a 100644 --- a/TESTING/LIN/sdrvrf2.f +++ b/TESTING/LIN/sdrvrf2.f @@ -190,9 +190,9 @@ + ' routines ***') 9998 FORMAT( 1X, ' Error in RFP,convertion routines N=',I5, + ' UPLO=''', A1, ''', FORM =''',A1,'''') - 9997 FORMAT( 1X, 'All tests for the RFP convertion routines passed (', + 9997 FORMAT( 1X, 'All tests for the RFP convertion routines passed ( ', + I5,' tests run)') - 9996 FORMAT( 1X, 'RFP convertion routines:',I5,' out of ',I5, + 9996 FORMAT( 1X, 'RFP convertion routines: ',I5,' out of ',I5, + ' error message recorded') * RETURN diff --git a/TESTING/LIN/sdrvrf3.f b/TESTING/LIN/sdrvrf3.f index e4efafaa..f91bd0c7 100644 --- a/TESTING/LIN/sdrvrf3.f +++ b/TESTING/LIN/sdrvrf3.f @@ -287,8 +287,8 @@ + ' SIDE=''',A1,''',',' UPLO=''',A1,''',',' TRANS=''',A1,''',', + ' DIAG=''',A1,''',',' M=',I3,', N =', I3,', test=',G12.5) 9996 FORMAT( 1X, 'All tests for ',A5,' auxiliary routine passed the ', - + 'threshold (',I5,' tests run)') - 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5, + + 'threshold ( ',I5,' tests run)') + 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5, + ' tests failed to pass the threshold') * RETURN diff --git a/TESTING/LIN/sdrvrf4.f b/TESTING/LIN/sdrvrf4.f index 0eedbadf..ae627567 100644 --- a/TESTING/LIN/sdrvrf4.f +++ b/TESTING/LIN/sdrvrf4.f @@ -275,8 +275,8 @@ + ' UPLO=''',A1,''',',' TRANS=''',A1,''',', ' N=',I3,', K =', I3, + ', test=',G12.5) 9996 FORMAT( 1X, 'All tests for ',A5,' auxiliary routine passed the ', - + 'threshold (',I5,' tests run)') - 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5, + + 'threshold ( ',I5,' tests run)') + 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I5,' out of ',I5, + ' tests failed to pass the threshold') * RETURN diff --git a/TESTING/LIN/zdrvab.f b/TESTING/LIN/zdrvab.f index 93466436..2f0128ca 100644 --- a/TESTING/LIN/zdrvab.f +++ b/TESTING/LIN/zdrvab.f @@ -310,7 +310,7 @@ 9996 FORMAT( 1X, A6, ': ', I6, ' out of ', I6, $ ' tests failed to pass the threshold' ) 9995 FORMAT( /1X, 'All tests for ', A6, - $ ' routines passed the threshold (', I6, ' tests run)' ) + $ ' routines passed the threshold ( ', I6, ' tests run)' ) 9994 FORMAT( 6X, I6, ' error messages recorded' ) * * SUBNAM, INFO, INFOE, M, IMAT diff --git a/TESTING/LIN/zdrvac.f b/TESTING/LIN/zdrvac.f index 5455bd49..e637598f 100644 --- a/TESTING/LIN/zdrvac.f +++ b/TESTING/LIN/zdrvac.f @@ -340,7 +340,7 @@ 9996 FORMAT( 1X, A6, ': ', I6, ' out of ', I6, $ ' tests failed to pass the threshold' ) 9995 FORMAT( /1X, 'All tests for ', A6, - $ ' routines passed the threshold (', I6, ' tests run)' ) + $ ' routines passed the threshold ( ', I6, ' tests run)' ) 9994 FORMAT( 6X, I6, ' error messages recorded' ) * * SUBNAM, INFO, INFOE, N, IMAT diff --git a/TESTING/LIN/zdrvrf1.f b/TESTING/LIN/zdrvrf1.f index 592c5ec8..e25863de 100644 --- a/TESTING/LIN/zdrvrf1.f +++ b/TESTING/LIN/zdrvrf1.f @@ -208,7 +208,7 @@ 9997 FORMAT( 1X, ' Failure in ',A6,' N=',I5,' TYPE=',I5,' UPLO=''', + A1, ''', FORM =''',A1,''', NORM=''',A1,''', test=',G12.5) 9996 FORMAT( 1X, 'All tests for ',A6,' auxiliary routine passed the ', - + 'threshold (',I5,' tests run)') + + 'threshold ( ',I5,' tests run)') 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5, + ' tests failed to pass the threshold') 9994 FORMAT( 26X, I5,' error message recorded (',A6,')') diff --git a/TESTING/LIN/zdrvrf3.f b/TESTING/LIN/zdrvrf3.f index acd11244..eefdb157 100644 --- a/TESTING/LIN/zdrvrf3.f +++ b/TESTING/LIN/zdrvrf3.f @@ -299,7 +299,7 @@ + ' SIDE=''',A1,''',',' UPLO=''',A1,''',',' TRANS=''',A1,''',', + ' DIAG=''',A1,''',',' M=',I3,', N =', I3,', test=',G12.5) 9996 FORMAT( 1X, 'All tests for ',A5,' auxiliary routine passed the ', - + 'threshold (',I5,' tests run)') + + 'threshold ( ',I5,' tests run)') 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5, + ' tests failed to pass the threshold') * diff --git a/TESTING/LIN/zdrvrf4.f b/TESTING/LIN/zdrvrf4.f index fc6b4035..0f40ea33 100644 --- a/TESTING/LIN/zdrvrf4.f +++ b/TESTING/LIN/zdrvrf4.f @@ -272,8 +272,8 @@ + ' UPLO=''',A1,''',',' TRANS=''',A1,''',', ' N=',I3,', K =', I3, + ', test=',G12.5) 9996 FORMAT( 1X, 'All tests for ',A5,' auxiliary routine passed the ', - + 'threshold (',I5,' tests run)') - 9995 FORMAT( 1X, A6, ' auxiliary routine:',I5,' out of ',I5, + + 'threshold ( ',I6,' tests run)') + 9995 FORMAT( 1X, A6, ' auxiliary routine: ',I6,' out of ',I6, + ' tests failed to pass the threshold') * RETURN diff --git a/TESTING/lapack_testing.py b/TESTING/lapack_testing.py new file mode 100755 index 00000000..ae025b46 --- /dev/null +++ b/TESTING/lapack_testing.py @@ -0,0 +1,288 @@ +#! /usr/bin/env python +# -*- coding: utf-8 -*- + + +############################################################################### +# lapack_testing.py +############################################################################### + + +from subprocess import Popen, STDOUT, PIPE +import os, sys, math +import getopt +# Arguments +try: + opts, args = getopt.getopt(sys.argv[1:], "hsfep:t:n", + ["help", "short", "file", "error","prec=","test=","number"]) + +except getopt.error, msg: + print msg + print "for help use --help" + sys.exit(2) + +short_summary=0 +with_file=0 +just_errors = 0 +prec='x' +test='all' +only_numbers=0 +for o, a in opts: + if o in ("-h", "--help"): + print sys.argv[0]+" [-h|--help] [-s |--short] [-f |--file] [-e |--error] [-p p |--prec p] [-t test |--test test] [-n | --number]" + print " - h is to print this message" + print " - f is to use directly the output of the LAPACK testing (.out files). By default, the script will run all the LAPACK tests" + print " LEVEL OF OUTPUT" + print " - x is to print a detailed summary" + print " - e is to print only the error summary" + print " - s is to print a short summary" + print " - n is to print the numbers of failing tests (turn on summary mode)" + print " SECLECTION OF TESTS:" + print " - p [s/c/d/z] is to indicate the PRECISION to run:" + print " s=single" + print " d=double" + print " c=complex" + print " z=double complex" + print " x=all [DEFAULT]" + print " - t [lin/eig/mixed/rfp/all] is to indicate which TEST FAMILY to run:" + print " lin=Linear Equation" + print " eig=Eigen Problems" + print " mixed=mixed-precision" + print " rfp=rfp format" + print " all=all tests [DEFAULT]" + print " EXAMPLES:" + print " ./lapack_testing.py -n -f" + print " Will return the numbers of failed tests by analyzing the LAPACK output" + print " ./lapack_testing.py -n -f -p s" + print " Will return the numbers of failed tests in REAL precision by analyzing the LAPACK output" + print " ./lapack_testing.py -n -f -p s -t eig " + print " Will return the numbers of failed tests in REAL precision by analyzing only the LAPACK output of EIGEN testings" + print "Written by Julie Langou (June 2011) " + sys.exit(0) + else: + if o in ("-s", "--short"): + short_summary = 1 + if o in ("-f", "--file"): + with_file = 1 + if o in ("-e", "--error"): + just_errors = 1 + if o in ( '-p', '--prec' ): + prec = a + if o in ( '-t', '--test' ): + test = a + if o in ( '-n', '--number' ): + only_numbers = 1 + short_summary = 1 + +# process options +execution=1 +summary="SUMMARY\n"; +nb_of_test=0 + +# Add current directory to the path for subshells of this shell +# Allows the popen to find local files in both windows and unixes +os.environ["PATH"] = os.environ["PATH"]+":." + +# Define a function to open the executable (different filenames on unix and Windows) +def run_summary_test( f, cmdline, short_summary): + nb_test_run=0 + nb_test_fail=0 + nb_test_illegal=0 + nb_test_info=0 + if (with_file==1): + if not os.path.exists(cmdline): + error_message=cmdline+" file not found" + r=1 + else: + pipe = open(cmdline,'r') + r=0 + else: + if os.name != 'nt': + cmdline="./" + cmdline + + outfile=cmdline.split()[4] + pipe = open(outfile,'w') + p = Popen(cmdline, shell=True, stdout=pipe) + p.wait() + pipe.close() + r=p.returncode + pipe = open(outfile,'r') + error_message=cmdline+" did not work" + + if r != 0 and (with_file==0): + print "---- TESTING " + cmdline.split()[0] + "... FAILED(" + error_message +") !" + for line in pipe.readlines(): + f.write(str(line)) + elif r != 0 and (with_file==1): + print "---- ERROR: You used the option -f, please check that you have the LAPACK output!" + print "---- "+error_message + else: + for line in pipe.readlines(): + f.write(str(line)) + words_in_line=line.split() + if (line.find("run")!=-1): +# print line + whereisrun=words_in_line.index("run)") + nb_test_run+=int(words_in_line[whereisrun-2]) + if (line.find("out of")!=-1): + if (short_summary==0): print line, + whereisout= words_in_line.index("out") + nb_test_fail+=int(words_in_line[whereisout-1]) + if (line.find("illegal")!=-1): + if (short_summary==0):print line, + nb_test_illegal+=1 + if (line.find("INFO")!=-1): + if (short_summary==0):print line, + nb_test_info+=1 + if (with_file==1): + pipe.close() + + f.flush(); + + return [nb_test_run,nb_test_fail,nb_test_illegal,nb_test_info] + + +# If filename cannot be opened, send output to sys.stderr +filename = "testing_results.txt" +try: + f = open(filename, 'w') +except IOError: + f = sys.stdout + +if (short_summary==0): + print " " + print "---------------- Testing LAPACK Routines ----------------" + print " " + print "-- Detailed results are stored in", filename + +dtypes = ( +("s", "d", "c", "z"), +("REAL ", "DOUBLE PRECISION", "COMPLEX ", "COMPLEX16 "), +) + +if prec=='s': + range_prec=[0] +elif prec=='d': + range_prec=[1] +elif prec=='c': + range_prec=[2] +elif prec=='z': + range_prec=[3] +else: + range_prec=range(4) + +if test=='lin': + range_test=[15] +elif test=='mixed': + range_test=[16] + range_prec=[1,3] +elif test=='rfp': + range_test=[17] +elif test=='eig': + range_test=range(15) +else: + range_test=range(18) + +list_results = [ +[0, 0, 0, 0, 0], +[0, 0, 0, 0, 0], +[0, 0, 0, 0, 0], +[0, 0, 0, 0, 0], +] + +for dtype in range_prec: + letter = dtypes[0][dtype] + name = dtypes[1][dtype] + + if (short_summary==0): + print " " + print "------------------------- %s ------------------------" % name + print " " + sys.stdout.flush() + + + dtests = ( + ("nep", "sep", "svd", + letter+"ec",letter+"ed",letter+"gg", + letter+"gd",letter+"sb",letter+"sg", + letter+"bb","glm","gqr", + "gsv","csd","lse", + letter+"test", letter+dtypes[0][dtype-1]+"test",letter+"test_rfp"), + ("Nonsymmetric Eigenvalue Problem", "Symmetric Eigenvalue Problem", "Singular Value Decomposition", + "Eigen Condition","Nonsymmetric Eigenvalue","Nonsymmetric Generalized Eigenvalue Problem", + "Nonsymmetric Generalized Eigenvalue Problem driver", "Symmetric Eigenvalue Problem", "Symmetric Eigenvalue Generalized Problem", + "Banded Singular Value Decomposition routines", "Generalized Linear Regression Model routines", "Generalized QR and RQ factorization routines", + "Generalized Singular Value Decomposition routines", "CS Decomposition routines", "Constrained Linear Least Squares routines", + "Linear Equation routines", "Mixed Precision linear equation routines","RFP linear equation routines"), + (letter+"nep", letter+"sep", letter+"svd", + letter+"ec",letter+"ed",letter+"gg", + letter+"gd",letter+"sb",letter+"sg", + letter+"bb",letter+"glm",letter+"gqr", + letter+"gsv",letter+"csd",letter+"lse", + letter+"test", letter+dtypes[0][dtype-1]+"test",letter+"test_rfp"), + ) + + + for dtest in range_test: + nb_of_test=0 + # NEED TO SKIP SOME PRECISION (namely s and c) FOR PROTO MIXED PRECISION TESTING + if dtest==16 and (letter=="s" or letter=="c"): + continue + if (with_file==1): + cmdbase=dtests[2][dtest]+".out" + else: + if dtest==15: + # LIN TESTS + cmdbase="xlintst"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out" + elif dtest==16: + # PROTO LIN TESTS + cmdbase="xlintst"+letter+dtypes[0][dtype-1]+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out" + elif dtest==17: + # PROTO LIN TESTS + cmdbase="xlintstrf"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out" + else: + # EIG TESTS + cmdbase="xeigtst"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out" + if (just_errors==0 and short_summary==0): + print "--> Testing "+name+" "+dtests[1][dtest]+" [ "+cmdbase+" ]" + # Run the process: either to read the file or run the LAPACK testing + nb_test = run_summary_test(f, cmdbase, short_summary) + list_results[0][dtype]+=nb_test[0] + list_results[1][dtype]+=nb_test[1] + list_results[2][dtype]+=nb_test[2] + list_results[3][dtype]+=nb_test[3] + got_error=nb_test[1]+nb_test[2]+nb_test[3] + + if (short_summary==0): + if (nb_test[0]>0 and just_errors==0): + print "--> Tests passed: "+str(nb_test[0]) + if (nb_test[1]>0): + print "--> Tests failing to pass the threshold: "+str(nb_test[1]) + if (nb_test[2]>0): + print "--> Illegal Error: "+str(nb_test[2]) + if (nb_test[3]>0): + print "--> Info Error: "+str(nb_test[3]) + if (got_error>0 and just_errors==1): + print "ERROR IS LOCATED IN "+name+" "+dtests[1][dtest]+" [ "+cmdbase+" ]" + print "" + if (just_errors==0): + print "" +# elif (got_error>0): +# print dtests[2][dtest]+".out \t"+str(nb_test[1])+"\t"+str(nb_test[2])+"\t"+str(nb_test[3]) + + sys.stdout.flush() + summary+=name+"\t"+str(list_results[1][dtype])+"\t"+str(list_results[2][dtype])+"\t"+str(list_results[3][dtype])+"\n" + list_results[0][4]+=list_results[0][dtype] + list_results[1][4]+=list_results[1][dtype] + list_results[2][4]+=list_results[2][dtype] + list_results[3][4]+=list_results[3][dtype] + +if only_numbers==1: + print str(list_results[1][4])+"\n"+str(list_results[2][4])+"\n"+str(list_results[3][4]) +else: + print summary + print "--> ALL PRECISION \t"+str(list_results[1][4])+"\t"+str(list_results[2][4])+"\t"+str(list_results[3][4]) + + + +# This may close the sys.stdout stream, so make it the last statement +f.close() |