| @@ -1,31 +1,29 @@ | |||
| #! /usr/bin/env python | |||
| # -*- coding: utf-8 -*- | |||
| #!/usr/bin/env python3 | |||
| ############################################################################### | |||
| # lapack_testing.py | |||
| ############################################################################### | |||
| from __future__ import print_function | |||
| from subprocess import Popen, STDOUT, PIPE | |||
| import os, sys, math | |||
| import getopt | |||
| # Arguments | |||
| try: | |||
| opts, args = getopt.getopt(sys.argv[1:], "hd:b:srep:t:n", | |||
| ["help", "dir", "bin", "short", "run", "error","prec=","test=","number"]) | |||
| ["help", "dir=", "bin=", "short", "run", "error","prec=","test=","number"]) | |||
| except getopt.error as msg: | |||
| print(msg) | |||
| print("for help use --help") | |||
| sys.exit(2) | |||
| short_summary=0 | |||
| with_file=1 | |||
| just_errors = 0 | |||
| short_summary = False | |||
| with_file = True | |||
| just_errors = False | |||
| prec='x' | |||
| test='all' | |||
| only_numbers=0 | |||
| only_numbers = False | |||
| test_dir='TESTING' | |||
| bin_dir='bin/Release' | |||
| @@ -34,10 +32,9 @@ for o, a in opts: | |||
| print(sys.argv[0]+" [-h|--help] [-d dir |--dir dir] [-s |--short] [-r |--run] [-e |--error] [-p p |--prec p] [-t test |--test test] [-n | --number]") | |||
| print(" - h is to print this message") | |||
| print(" - r is to use to run the LAPACK tests then analyse the output (.out files). By default, the script will not run all the LAPACK tests") | |||
| print(" - d [dir] is to indicate where is the LAPACK testing directory (.out files). By default, the script will use .") | |||
| print(" - b [bin] is to indicate where is the LAPACK binary files are located. By default, the script will use .") | |||
| print(" - d [dir] indicates the location of the LAPACK testing directory (.out files). By default, the script will use {:s}.".format(test_dir)) | |||
| print(" - b [bin] indicates the location of the LAPACK binary files. By default, the script will use {:s}.".format(bin_dir)) | |||
| 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)") | |||
| @@ -63,15 +60,14 @@ for o, a in opts: | |||
| print(" Will return the numbers of failed tests in REAL precision by running the LAPACK Tests then analyzing the output") | |||
| print(" ./lapack_testing.py -n -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 | |||
| short_summary = True | |||
| if o in ("-r", "--run"): | |||
| with_file = 0 | |||
| with_file = False | |||
| if o in ("-e", "--error"): | |||
| just_errors = 1 | |||
| just_errors = True | |||
| if o in ( '-p', '--prec' ): | |||
| prec = a | |||
| if o in ( '-b', '--bin' ): | |||
| @@ -81,12 +77,12 @@ for o, a in opts: | |||
| if o in ( '-t', '--test' ): | |||
| test = a | |||
| if o in ( '-n', '--number' ): | |||
| only_numbers = 1 | |||
| short_summary = 1 | |||
| only_numbers = True | |||
| short_summary = True | |||
| # process options | |||
| abs_bin_dir=os.path.normpath(os.path.join(os.getcwd(),bin_dir)) | |||
| abs_bin_dir=os.path.abspath(bin_dir) | |||
| os.chdir(test_dir) | |||
| @@ -108,7 +104,7 @@ def run_summary_test( f, cmdline, short_summary): | |||
| nb_test_illegal=0 | |||
| nb_test_info=0 | |||
| if (with_file): | |||
| if with_file: | |||
| if not os.path.exists(cmdline): | |||
| error_message=cmdline+" file not found" | |||
| r=1 | |||
| @@ -145,16 +141,16 @@ def run_summary_test( f, cmdline, short_summary): | |||
| 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, end=' ') | |||
| if not short_summary: print(line, end=' ') | |||
| whereisout= words_in_line.index("out") | |||
| nb_test_fail+=int(words_in_line[whereisout-1]) | |||
| if ((line.find("illegal")!=-1) or (line.find("Illegal")!=-1)): | |||
| if (short_summary==0):print(line, end=' ') | |||
| if not short_summary: print(line, end=' ') | |||
| nb_test_illegal+=1 | |||
| if (line.find(" INFO")!=-1): | |||
| if (short_summary==0):print(line, end=' ') | |||
| if not short_summary: print(line, end=' ') | |||
| nb_test_info+=1 | |||
| if (with_file==1): | |||
| if with_file: | |||
| pipe.close() | |||
| f.flush(); | |||
| @@ -169,7 +165,7 @@ try: | |||
| except IOError: | |||
| f = sys.stdout | |||
| if (short_summary==0): | |||
| if not short_summary: | |||
| print(" ") | |||
| print("---------------- Testing LAPACK Routines ----------------") | |||
| print(" ") | |||
| @@ -203,6 +199,8 @@ elif test=='mixed': | |||
| range_prec=[1,3] | |||
| elif test=='rfp': | |||
| range_test=[18] | |||
| elif test=='dmd': | |||
| range_test=[20] | |||
| elif test=='eig': | |||
| range_test=list(range(16)) | |||
| else: | |||
| @@ -219,7 +217,7 @@ for dtype in range_prec: | |||
| letter = dtypes[0][dtype] | |||
| name = dtypes[1][dtype] | |||
| if (short_summary==0): | |||
| if not short_summary: | |||
| print(" ") | |||
| print("------------------------- %s ------------------------" % name) | |||
| print(" ") | |||
| @@ -231,19 +229,19 @@ for dtype in range_prec: | |||
| letter+"gd",letter+"sb",letter+"sg", | |||
| letter+"bb","glm","gqr", | |||
| "gsv","csd","lse", | |||
| letter+"test", letter+dtypes[0][dtype-1]+"test",letter+"test_rfp"), | |||
| letter+"test", letter+dtypes[0][dtype-1]+"test",letter+"test_rfp",letter+"dmd"), | |||
| ("Nonsymmetric-Eigenvalue-Problem", "Symmetric-Eigenvalue-Problem", "Symmetric-Eigenvalue-Problem-2-stage", "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"), | |||
| "Linear-Equation-routines", "Mixed-Precision-linear-equation-routines","RFP-linear-equation-routines","Dynamic-Mode-Decomposition"), | |||
| (letter+"nep", letter+"sep", letter+"se2", 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"), | |||
| letter+"test", letter+dtypes[0][dtype-1]+"test",letter+"test_rfp",letter+"dmd"), | |||
| ) | |||
| @@ -252,22 +250,25 @@ for dtype in range_prec: | |||
| # NEED TO SKIP SOME PRECISION (namely s and c) FOR PROTO MIXED PRECISION TESTING | |||
| if dtest==17 and (letter=="s" or letter=="c"): | |||
| continue | |||
| if (with_file==1): | |||
| if with_file: | |||
| cmdbase=dtests[2][dtest]+".out" | |||
| else: | |||
| if dtest==16: | |||
| # LIN TESTS | |||
| cmdbase="LIN/xlintst"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out" | |||
| cmdbase="xlintst"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out" | |||
| elif dtest==17: | |||
| # PROTO LIN TESTS | |||
| cmdbase="LIN/xlintst"+letter+dtypes[0][dtype-1]+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out" | |||
| cmdbase="xlintst"+letter+dtypes[0][dtype-1]+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out" | |||
| elif dtest==18: | |||
| # PROTO LIN TESTS | |||
| cmdbase="LIN/xlintstrf"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out" | |||
| cmdbase="xlintstrf"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out" | |||
| elif dtest==20: | |||
| # DMD EIG TESTS | |||
| cmdbase="xdmdeigtst"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out" | |||
| else: | |||
| # EIG TESTS | |||
| cmdbase="EIG/xeigtst"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out" | |||
| if (not just_errors and not short_summary): | |||
| cmdbase="xeigtst"+letter+" < "+dtests[0][dtest]+".in > "+dtests[2][dtest]+".out" | |||
| if not just_errors and not short_summary: | |||
| print("Testing "+name+" "+dtests[1][dtest]+"-"+cmdbase, end=' ') | |||
| # Run the process: either to read the file or run the LAPACK testing | |||
| nb_test = run_summary_test(f, cmdbase, short_summary) | |||
| @@ -277,19 +278,19 @@ for dtype in range_prec: | |||
| list_results[3][dtype]+=nb_test[3] | |||
| got_error=nb_test[1]+nb_test[2]+nb_test[3] | |||
| if (not short_summary): | |||
| if (nb_test[0]>0 and just_errors==0): | |||
| if not short_summary: | |||
| if nb_test[0] > 0 and not just_errors: | |||
| print("passed: "+str(nb_test[0])) | |||
| if (nb_test[1]>0): | |||
| if nb_test[1] > 0: | |||
| print("failing to pass the threshold: "+str(nb_test[1])) | |||
| if (nb_test[2]>0): | |||
| if nb_test[2] > 0: | |||
| print("Illegal Error: "+str(nb_test[2])) | |||
| if (nb_test[3]>0): | |||
| if nb_test[3] > 0: | |||
| print("Info Error: "+str(nb_test[3])) | |||
| if (got_error>0 and just_errors==1): | |||
| if got_error > 0 and just_errors: | |||
| print("ERROR IS LOCATED IN "+name+" "+dtests[1][dtest]+" [ "+cmdbase+" ]") | |||
| print("") | |||
| if (just_errors==0): | |||
| if not just_errors: | |||
| 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]) | |||
| @@ -307,7 +308,7 @@ for dtype in range_prec: | |||
| list_results[2][4]+=list_results[2][dtype] | |||
| list_results[3][4]+=list_results[3][dtype] | |||
| if only_numbers==1: | |||
| if only_numbers: | |||
| print(str(list_results[1][4])+"\n"+str(list_results[2][4]+list_results[3][4])) | |||
| else: | |||
| print(summary) | |||