|
|
|
@@ -3,22 +3,22 @@ |
|
|
|
|
|
|
|
|
|
|
|
############################################################################### |
|
|
|
# lapack_testing.py |
|
|
|
# lapack_testing.py |
|
|
|
############################################################################### |
|
|
|
|
|
|
|
|
|
|
|
from subprocess import Popen, STDOUT, PIPE |
|
|
|
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:srep:t:n", |
|
|
|
["help", "dir", "short", "run", "error","prec=","test=","number"]) |
|
|
|
|
|
|
|
except getopt.error, msg: |
|
|
|
print msg |
|
|
|
print "for help use --help" |
|
|
|
sys.exit(2) |
|
|
|
opts, args = getopt.getopt(sys.argv[1:], "hd:srep:t:n", |
|
|
|
["help", "dir", "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 |
|
|
|
@@ -32,56 +32,56 @@ bin_dir='bin/Release' |
|
|
|
abs_bin_dir=os.path.normpath(os.path.join(os.getcwd(),bin_dir)) |
|
|
|
|
|
|
|
for o, a in opts: |
|
|
|
if o in ("-h", "--help"): |
|
|
|
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 " 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/x] is to indicate the PRECISION to run:" |
|
|
|
print " s=single" |
|
|
|
print " d=double" |
|
|
|
print " sd=single/double" |
|
|
|
print " c=complex" |
|
|
|
print " z=double complex" |
|
|
|
print " cz=complex/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" |
|
|
|
print " Will return the numbers of failed tests by analyzing the LAPACK output" |
|
|
|
print " ./lapack_testing.py -n -r -p s" |
|
|
|
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 |
|
|
|
if o in ("-r", "--run"): |
|
|
|
with_file = 0 |
|
|
|
if o in ("-e", "--error"): |
|
|
|
just_errors = 1 |
|
|
|
if o in ( '-p', '--prec' ): |
|
|
|
prec = a |
|
|
|
if o in ( '-d', '--dir' ): |
|
|
|
test_dir = a |
|
|
|
if o in ( '-t', '--test' ): |
|
|
|
test = a |
|
|
|
if o in ( '-n', '--number' ): |
|
|
|
only_numbers = 1 |
|
|
|
short_summary = 1 |
|
|
|
if o in ("-h", "--help"): |
|
|
|
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(" 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/x] is to indicate the PRECISION to run:") |
|
|
|
print(" s=single") |
|
|
|
print(" d=double") |
|
|
|
print(" sd=single/double") |
|
|
|
print(" c=complex") |
|
|
|
print(" z=double complex") |
|
|
|
print(" cz=complex/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") |
|
|
|
print(" Will return the numbers of failed tests by analyzing the LAPACK output") |
|
|
|
print(" ./lapack_testing.py -n -r -p s") |
|
|
|
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 |
|
|
|
if o in ("-r", "--run"): |
|
|
|
with_file = 0 |
|
|
|
if o in ("-e", "--error"): |
|
|
|
just_errors = 1 |
|
|
|
if o in ( '-p', '--prec' ): |
|
|
|
prec = a |
|
|
|
if o in ( '-d', '--dir' ): |
|
|
|
test_dir = a |
|
|
|
if o in ( '-t', '--test' ): |
|
|
|
test = a |
|
|
|
if o in ( '-n', '--number' ): |
|
|
|
only_numbers = 1 |
|
|
|
short_summary = 1 |
|
|
|
|
|
|
|
# process options |
|
|
|
|
|
|
|
@@ -89,7 +89,7 @@ os.chdir(test_dir) |
|
|
|
|
|
|
|
execution=1 |
|
|
|
summary="\n\t\t\t--> LAPACK TESTING SUMMARY <--\n"; |
|
|
|
if with_file: summary+= "\t\tProcessing LAPACK Testing output found in the "+test_dir+" direcory\n"; |
|
|
|
if with_file: summary+= "\t\tProcessing LAPACK Testing output found in the "+test_dir+" directory\n"; |
|
|
|
summary+="SUMMARY \tnb test run \tnumerical error \tother error \n"; |
|
|
|
summary+="================ \t===========\t=================\t================ \n"; |
|
|
|
nb_of_test=0 |
|
|
|
@@ -100,80 +100,80 @@ 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): |
|
|
|
if not os.path.exists(cmdline): |
|
|
|
error_message=cmdline+" file not found" |
|
|
|
r=1 |
|
|
|
if short_summary: return [nb_test_run,nb_test_fail,nb_test_illegal,nb_test_info] |
|
|
|
else: |
|
|
|
pipe = open(cmdline,'r') |
|
|
|
r=0 |
|
|
|
else: |
|
|
|
if os.name != 'nt': |
|
|
|
cmdline='./' + cmdline |
|
|
|
else : |
|
|
|
cmdline=abs_bin_dir+os.path.sep+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 not with_file: |
|
|
|
print "---- TESTING " + cmdline.split()[0] + "... FAILED(" + error_message +") !" |
|
|
|
for line in pipe.readlines(): |
|
|
|
f.write(str(line)) |
|
|
|
elif r != 0 and with_file and not short_summary: |
|
|
|
print "---- WARNING: please check that you have the LAPACK output : "+cmdline+"!" |
|
|
|
print "---- WARNING: with the option -r, we can run the LAPACK testing for you" |
|
|
|
# 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) or (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] |
|
|
|
nb_test_run=0 |
|
|
|
nb_test_fail=0 |
|
|
|
nb_test_illegal=0 |
|
|
|
nb_test_info=0 |
|
|
|
|
|
|
|
if (with_file): |
|
|
|
if not os.path.exists(cmdline): |
|
|
|
error_message=cmdline+" file not found" |
|
|
|
r=1 |
|
|
|
if short_summary: return [nb_test_run,nb_test_fail,nb_test_illegal,nb_test_info] |
|
|
|
else: |
|
|
|
pipe = open(cmdline,'r') |
|
|
|
r=0 |
|
|
|
else: |
|
|
|
if os.name != 'nt': |
|
|
|
cmdline='./' + cmdline |
|
|
|
else : |
|
|
|
cmdline=abs_bin_dir+os.path.sep+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 not with_file: |
|
|
|
print("---- TESTING " + cmdline.split()[0] + "... FAILED(" + error_message +") !") |
|
|
|
for line in pipe.readlines(): |
|
|
|
f.write(str(line)) |
|
|
|
elif r != 0 and with_file and not short_summary: |
|
|
|
print("---- WARNING: please check that you have the LAPACK output : "+cmdline+"!") |
|
|
|
print("---- WARNING: with the option -r, we can run the LAPACK testing for you") |
|
|
|
# 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, 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=' ') |
|
|
|
nb_test_illegal+=1 |
|
|
|
if (line.find(" INFO")!=-1): |
|
|
|
if (short_summary==0):print(line, end=' ') |
|
|
|
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') |
|
|
|
f = open(filename, 'w') |
|
|
|
except IOError: |
|
|
|
f = sys.stdout |
|
|
|
f = sys.stdout |
|
|
|
|
|
|
|
if (short_summary==0): |
|
|
|
print " " |
|
|
|
print "---------------- Testing LAPACK Routines ----------------" |
|
|
|
print " " |
|
|
|
print "-- Detailed results are stored in", filename |
|
|
|
print(" ") |
|
|
|
print("---------------- Testing LAPACK Routines ----------------") |
|
|
|
print(" ") |
|
|
|
print("-- Detailed results are stored in", filename) |
|
|
|
|
|
|
|
dtypes = ( |
|
|
|
("s", "d", "c", "z"), |
|
|
|
@@ -181,32 +181,32 @@ dtypes = ( |
|
|
|
) |
|
|
|
|
|
|
|
if prec=='s': |
|
|
|
range_prec=[0] |
|
|
|
range_prec=[0] |
|
|
|
elif prec=='d': |
|
|
|
range_prec=[1] |
|
|
|
range_prec=[1] |
|
|
|
elif prec=='sd': |
|
|
|
range_prec=[0,1] |
|
|
|
range_prec=[0,1] |
|
|
|
elif prec=='c': |
|
|
|
range_prec=[2] |
|
|
|
range_prec=[2] |
|
|
|
elif prec=='z': |
|
|
|
range_prec=[3] |
|
|
|
range_prec=[3] |
|
|
|
elif prec=='cz': |
|
|
|
range_prec=[2,3] |
|
|
|
else: |
|
|
|
prec='x'; |
|
|
|
range_prec=range(4) |
|
|
|
range_prec=[2,3] |
|
|
|
else: |
|
|
|
prec='x'; |
|
|
|
range_prec=list(range(4)) |
|
|
|
|
|
|
|
if test=='lin': |
|
|
|
range_test=[15] |
|
|
|
range_test=[15] |
|
|
|
elif test=='mixed': |
|
|
|
range_test=[16] |
|
|
|
range_prec=[1,3] |
|
|
|
range_test=[16] |
|
|
|
range_prec=[1,3] |
|
|
|
elif test=='rfp': |
|
|
|
range_test=[17] |
|
|
|
range_test=[17] |
|
|
|
elif test=='eig': |
|
|
|
range_test=range(15) |
|
|
|
else: |
|
|
|
range_test=range(18) |
|
|
|
range_test=list(range(15)) |
|
|
|
else: |
|
|
|
range_test=list(range(18)) |
|
|
|
|
|
|
|
list_results = [ |
|
|
|
[0, 0, 0, 0, 0], |
|
|
|
@@ -216,111 +216,111 @@ list_results = [ |
|
|
|
] |
|
|
|
|
|
|
|
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" |
|
|
|
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: |
|
|
|
# EIG TESTS |
|
|
|
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+" ]" |
|
|
|
# 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 (not short_summary): |
|
|
|
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 "" |
|
|
|
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 (not just_errors and not short_summary): |
|
|
|
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 (not short_summary): |
|
|
|
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() |
|
|
|
if (list_results[0][dtype] > 0 ): |
|
|
|
percent_num_error=float(list_results[1][dtype])/float(list_results[0][dtype])*100 |
|
|
|
percent_error=float(list_results[2][dtype]+list_results[3][dtype])/float(list_results[0][dtype])*100 |
|
|
|
else: |
|
|
|
percent_num_error=0 |
|
|
|
percent_error=0 |
|
|
|
summary+=name+"\t"+str(list_results[0][dtype])+"\t\t"+str(list_results[1][dtype])+"\t("+"%.3f" % percent_num_error+"%)\t"+str(list_results[2][dtype]+list_results[3][dtype])+"\t("+"%.3f" % percent_error+"%)\t""\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] |
|
|
|
|
|
|
|
|
|
|
|
sys.stdout.flush() |
|
|
|
if (list_results[0][dtype] > 0 ): |
|
|
|
percent_num_error=float(list_results[1][dtype])/float(list_results[0][dtype])*100 |
|
|
|
percent_error=float(list_results[2][dtype]+list_results[3][dtype])/float(list_results[0][dtype])*100 |
|
|
|
else: |
|
|
|
percent_num_error=0 |
|
|
|
percent_error=0 |
|
|
|
summary+=name+"\t"+str(list_results[0][dtype])+"\t\t"+str(list_results[1][dtype])+"\t("+"%.3f" % percent_num_error+"%)\t"+str(list_results[2][dtype]+list_results[3][dtype])+"\t("+"%.3f" % percent_error+"%)\t""\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]+list_results[3][4]) |
|
|
|
print(str(list_results[1][4])+"\n"+str(list_results[2][4]+list_results[3][4])) |
|
|
|
else: |
|
|
|
print summary |
|
|
|
if (list_results[0][4] > 0 ): |
|
|
|
percent_num_error=float(list_results[1][4])/float(list_results[0][4])*100 |
|
|
|
percent_error=float(list_results[2][4]+list_results[3][4])/float(list_results[0][4])*100 |
|
|
|
else: |
|
|
|
percent_num_error=0 |
|
|
|
percent_error=0 |
|
|
|
if (prec=='x'): |
|
|
|
print "--> ALL PRECISIONS\t"+str(list_results[0][4])+"\t\t"+str(list_results[1][4])+"\t("+"%.3f" % percent_num_error+"%)\t"+str(list_results[2][4]+list_results[3][4])+"\t("+"%.3f" % percent_error+"%)\t""\n" |
|
|
|
if list_results[0][4] == 0: |
|
|
|
print "NO TESTS WERE ANALYZED, please use the -r option to run the LAPACK TESTING" |
|
|
|
print(summary) |
|
|
|
if (list_results[0][4] > 0 ): |
|
|
|
percent_num_error=float(list_results[1][4])/float(list_results[0][4])*100 |
|
|
|
percent_error=float(list_results[2][4]+list_results[3][4])/float(list_results[0][4])*100 |
|
|
|
else: |
|
|
|
percent_num_error=0 |
|
|
|
percent_error=0 |
|
|
|
if (prec=='x'): |
|
|
|
print("--> ALL PRECISIONS\t"+str(list_results[0][4])+"\t\t"+str(list_results[1][4])+"\t("+"%.3f" % percent_num_error+"%)\t"+str(list_results[2][4]+list_results[3][4])+"\t("+"%.3f" % percent_error+"%)\t""\n") |
|
|
|
if list_results[0][4] == 0: |
|
|
|
print("NO TESTS WERE ANALYZED, please use the -r option to run the LAPACK TESTING") |
|
|
|
|
|
|
|
# This may close the sys.stdout stream, so make it the last statement |
|
|
|
f.close() |