public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2011-06-06 20:05 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2011-06-06 20:05 UTC (permalink / raw
  To: gentoo-commits

commit:     e929ad6df4c9e9ce5656b5aa79b27e78ad13633d
Author:     spiros <andyspiros <AT> gmail <DOT> com>
AuthorDate: Mon Jun  6 20:04:03 2011 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Mon Jun  6 20:04:03 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=e929ad6d

User input interface begin

---
 PortageUtils.py |    2 +-
 blas.py         |    4 +-
 main.py         |   87 +++++++++++++++++++++++++++++++++++++++----------------
 3 files changed, 65 insertions(+), 28 deletions(-)

diff --git a/PortageUtils.py b/PortageUtils.py
index 1cb1521..c27dc79 100644
--- a/PortageUtils.py
+++ b/PortageUtils.py
@@ -14,7 +14,7 @@ def available_packages(pattern):
     every matching pattern in the portage tree and installed overlays.
     """
     return [portage.catpkgsplit(l) \
-      for l in cmd.getoutput('equery -q list -p -e ' + pattern).split()]
+      for l in cmd.getoutput('equery -q list -po ' + pattern).split()]
 
 
 def install_package(package, env={}, root='/', pkgdir='usr/portage/packages'):

diff --git a/blas.py b/blas.py
index 88ebe90..2cf1ec8 100644
--- a/blas.py
+++ b/blas.py
@@ -23,8 +23,8 @@ class Module:
               'syr2', 'ger', 'rot', 'matrix_matrix', 'aat',
               'trisolve_vector', 'trisolve_matrix', 'trmm')]
         
-        # Create dir. If alls results already exist use them, otherwise
-        # remove old results 
+        # Create dir. If all results already exist use them, otherwise
+        # remove old results
         runtests = False
         if os.path.exists(testdir):
              runtests = all([os.path.exists(i) for i in files])

diff --git a/main.py b/main.py
index dcd0488..5f2f0d3 100644
--- a/main.py
+++ b/main.py
@@ -1,4 +1,4 @@
-import os, sys
+import os, sys, shlex
 import commands as cmd
 from PortageUtils import *
   
@@ -37,6 +37,22 @@ def print_usage():
     print "Usage: benchmarks [blas|cblas|lapack]"
     
     
+def tests_from_input(input):
+    tests = {}
+    for line in input.split('\n'):
+        line = line.strip()
+        spl = shlex.split(line)
+        if len(spl) < 2:
+            continue
+        package = available_packages(spl[1])
+        env = {}
+        for var in spl[2:]:
+            s = var.split('=')
+            env[s[0]] = s[1]
+        tests[spl[0]] = {'package' : package , 'env' : env}
+    return tests
+    
+    
 # Import the desired module or print help and exit
 try:
     tmp = __import__(sys.argv[1], fromlist = ['Module'])
@@ -61,27 +77,45 @@ used at compile-time as dictionary (it can just be a void one).
 After the tests every successful tested item will contain the item "result",
 which can contain any type of data and will be used for the final report.
 """
-tests = {
-    "abcde" : {
-        "package" : ('sci-libs', 'blas-reference', '3.3.1', 'r1'),
-        "env" : {'FC' : 'gfortran'}
-    },
-         
-    "fghij" : {
-        "package" : ('dev-cpp', 'eigen', '3.0.0', 'r1'),
-        "env" : {'CXX' : 'gcc', 'CXXFLAGS' : '-O2'}
-    },
-         
+#tests = {
+#    "abcde" : {
+#        "package" : ('sci-libs', 'blas-reference', '3.3.1', 'r1'),
+#        "env" : {'FC' : 'gfortran'}
+#    },
+#         
+#    "fghij" : {
+#        "package" : ('dev-cpp', 'eigen', '3.0.0', 'r1'),
+#        "env" : {'CXX' : 'gcc', 'CXXFLAGS' : '-O2'}
+#    },
+#         
 #    "klmno" : {
 #        "package" : ('dev-cpp', 'eigen', '3.0.0', 'r1'),
 #        "env" : {'CXX' : 'icc', 'CXXFLAGS' : '-O3'}
 #    },
+#
+#    "pqrst" : {
+#        "package" : ('sci-libs', 'blas-reference', '3.3.1', 'r1'),
+#        "env" : {'FC' : 'ifort'}
+#    }
+#}
 
-    "pqrst" : {
-        "package" : ('sci-libs', 'blas-reference', '3.3.1', 'r1'),
-        "env" : {'FC' : 'ifort'}
-    }
-}
+
+"""
+The test variable is generated from a string which can be read from input.
+Here is an example of the parsed input.
+Every line contains a configuration and will be an entry in the tests
+dictionary; the line has to contain:
+- an identification string
+- a package description, which can, but does not must to, contain a version
+- a list of environment variables separated by means of spaces 
+"""
+input = '''
+abcde blas-reference-3.3.1-r1 FC=gfortran
+fghij dev-cpp/eigen-3.0.0-r1 CXX=gcc CXXFLAGS='-O2'
+klmno dev-cpp/eigen-3.0.0-r1 CXX=icc CXXFLAGS='-O3'
+pqrst sci-libs/blas-reference-3.3.1-r1 FC=ifort
+'''
+tests = tests_from_input(input)
 
 for tn,(name,test) in enumerate(tests.items(),1):
     Print("BEGIN TEST %i" % tn)
@@ -93,14 +127,17 @@ for tn,(name,test) in enumerate(tests.items(),1):
     Print.down()
     package = "%s/%s-%s-%s" % test['package']
     Print("Emerging package %s" % package)
-    try:
-        install_package( \
-          test['package'], env=test['env'], root=root, pkgdir=pkgdir)
-    except InstallException as e:
-        Print("Package %s failed to emerge: %s" % (package, e.command))
-        Print.up()
-        print
-        continue
+    if os.exists(pkgdir+package+".tbz2"):
+        Print("Package already emerged - skipping")
+    else:
+        try:
+            install_package( \
+              test['package'], env=test['env'], root=root, pkgdir=pkgdir)
+        except InstallException as e:
+            Print("Package %s failed to emerge: %s" % (package, e.command))
+            Print.up()
+            print
+            continue
     Print("Package emerged")
     
     # Find implementations



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2011-06-10  0:52 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2011-06-10  0:52 UTC (permalink / raw
  To: gentoo-commits

commit:     71e3163c58a285bd61dd34f662d5e3674490f588
Author:     spiros <andyspiros <AT> gmail <DOT> com>
AuthorDate: Fri Jun 10 00:49:32 2011 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Fri Jun 10 00:49:32 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=71e3163c

Initial work for reports.

---
 blasbase.py  |   65 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
 blastests.in |    6 +---
 main.py      |    9 ++++++-
 3 files changed, 69 insertions(+), 11 deletions(-)

diff --git a/blasbase.py b/blasbase.py
index 1f8abb1..713ffcf 100644
--- a/blasbase.py
+++ b/blasbase.py
@@ -1,6 +1,8 @@
 import os, shlex
 import commands as cmd
 import subprocess as sp
+import matplotlib.pyplot as plt
+import numpy as np
 
 run_cmd = lambda c : sp.Popen(c, stdout=sp.PIPE).communicate()[0]
 
@@ -8,6 +10,8 @@ class ModuleBase:
     def __init__(self, Print, libdir, args):
         self.Print = Print
         self.libdir = libdir
+        self.summary = False
+        self.summary_only = False
         
         avail1 = ['axpy', 'axpby', 'rot']
         avail2 = ['matrix_vector','atv','symv','syr2','ger','trisolve_vector']
@@ -15,6 +19,12 @@ class ModuleBase:
         
         tests = []
         for i in args:
+            if i == '-S':
+                self.summary_only = True
+                continue
+            if i == '-s':
+                self.summary = True
+                continue
             if i == '1':
                 tests += avail1
                 continue
@@ -52,7 +62,10 @@ class ModuleBase:
         
         if not runtests:
             Print("Not testing: results exist")
-            return files
+            results = {}
+            for i in self.tests:
+                results[i] = '%s/bench_%s_%s.dat' %(testdir, i, name)
+            return results
         
         for i in files:
             if os.path.exists(i): os.remove(i)
@@ -91,19 +104,20 @@ class ModuleBase:
         cp.communicate()
         if cp.returncode != 0:
             raise Exception("Compilation failed: " + " ".join(cl))
-        Print("Compilation successful: %s" % " ".join(cl))
+        Print("Compilation successful")
         
         # Run test
         args = [exe] + self.tests
         proc = sp.Popen(args, bufsize=1, stdout=sp.PIPE, stderr=sp.PIPE, 
           cwd = testdir)
-        results = []
+        results = {}
         while True:
             errline = proc.stderr.readline()
             if not errline:
                 break
             resfile = errline.split()[-1]
-            results.append(resfile)
+            testname = resfile[6:-5-len(name)]
+            results[testname] = resfile
             Print(resfile)
             Print.down()
             for i in xrange(100):
@@ -123,4 +137,45 @@ class ModuleBase:
                 os.environ[v] = oldenv[v]
             elif os.environ.has_key(v):
                 del os.environ[v]
-        return files
+        return results
+    
+    def save_results(self, results, figdir):
+        newresults = {}
+        for test in self.tests:
+            newresults[test] = {}
+            for nameimpl in results:
+                print results[nameimpl]
+                nameimplstr = "%s/%s" % nameimpl
+                resdat = results[nameimpl][test]
+                newresults[test][nameimplstr] = resdat       
+        
+        if self.summary or self.summary_only:
+            # Save summary figure
+            sprows = (len(self.tests)+1)/2
+            plt.figure(figsize=(16,6*sprows), dpi=300)
+            for i, test in enumerate(self.tests, 1):
+                plt.subplot(sprows, 2, i)
+                plt.title(test)
+                for impl in newresults[test]:
+                    x,y = np.loadtxt(newresults[test][impl], unpack=True)
+                    plt.semilogx(x,y, label=impl, hold=True)
+                plt.legend(loc='best')
+                plt.grid(True)
+            fname = figdir+ '/summary.png'
+            plt.savefig(fname, format='png')
+            self.Print('Summary figure saved: ' + fname)
+                
+        if not self.summary_only:
+            for test in self.tests:
+                plt.figure(figsize=(12,9), dpi=300)
+                plt.title(test)
+                for impl in newresults[test]:
+                    x,y = np.loadtxt(newresults[test][impl], unpack=True)
+                    plt.semilogx(x,y, label=impl, hold=True)
+                plt.legend(loc='best')
+                plt.grid(True)
+                fname = figdir + '/' + test + '.png'
+                plt.savefig(fname, format='png')
+                self.Print('Figure ' + fname + ' saved')
+            
+            

diff --git a/blastests.in b/blastests.in
index c9462e3..a5f5998 100644
--- a/blastests.in
+++ b/blastests.in
@@ -1,4 +1,2 @@
-abcde blas-reference-3.3.1-r1 FC=gfortran
-fghij dev-cpp/eigen-3.0.0-r1 CXX=g++ CXXFLAGS='-O2'
-#klmno dev-cpp/eigen-3.0.0-r1 CXX=icpc CXXFLAGS='-O3'
-#pqrst sci-libs/blas-reference-3.3.1-r1 FC=ifort
+eigen-O2 dev-cpp/eigen-3.0.0-r1 CXX=g++ CXXFLAGS='-O2'
+eigen-O3 dev-cpp/eigen-3.0.0-r1 CXX=g++ CXXFLAGS='-O3'

diff --git a/main.py b/main.py
index 7b3c3a9..1ecb376 100644
--- a/main.py
+++ b/main.py
@@ -27,8 +27,10 @@ Print = _Print(2)
 # Retrieve relevant directories
 if os.getuid() == 0:
     pkgsdir = "/var/cache/benchmarks/packages/"
+    figdir = "/var/cache/benchmarks/results/"
 else:
     pkgsdir = os.environ['HOME'] + "/.benchmarks/packages/"
+    figdir = os.environ['HOME'] + "/.benchmarks/results"
 rootsdir = "/var/tmp/benchmarks/roots/"
 testsdir = "/var/tmp/benchmarks/tests/"
 libdir = sp.Popen \
@@ -178,10 +180,13 @@ for tn,(name,test) in enumerate(tests.items(),1):
     print
     
 
+                
+if not os.path.exists(figdir):
+    os.makedirs(figdir)
+        
 results = {}
 for (name,test) in tests.items():
     for impl in test['implementations']:
         results[(name, impl)] = test['results'][impl]
 
-for r,rr in results.items():
-    print r, rr
+mod.save_results(results, figdir)



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2011-06-10  1:02 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2011-06-10  1:02 UTC (permalink / raw
  To: gentoo-commits

commit:     43def047ec2a4adcf7cc6fddd0c9459dfdbbe5cc
Author:     spiros <andyspiros <AT> gmail <DOT> com>
AuthorDate: Fri Jun 10 00:59:35 2011 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Fri Jun 10 00:59:35 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=43def047

Two tiny corrections

---
 blasbase.py |    1 -
 main.py     |    3 ++-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/blasbase.py b/blasbase.py
index 713ffcf..3335000 100644
--- a/blasbase.py
+++ b/blasbase.py
@@ -144,7 +144,6 @@ class ModuleBase:
         for test in self.tests:
             newresults[test] = {}
             for nameimpl in results:
-                print results[nameimpl]
                 nameimplstr = "%s/%s" % nameimpl
                 resdat = results[nameimpl][test]
                 newresults[test][nameimplstr] = resdat       

diff --git a/main.py b/main.py
index 1ecb376..ee17fed 100644
--- a/main.py
+++ b/main.py
@@ -30,7 +30,8 @@ if os.getuid() == 0:
     figdir = "/var/cache/benchmarks/results/"
 else:
     pkgsdir = os.environ['HOME'] + "/.benchmarks/packages/"
-    figdir = os.environ['HOME'] + "/.benchmarks/results"
+    figdir = os.environ['HOME'] + "/.benchmarks/results/"
+figdir += time.strftime('%Y%m%d-%H%M') + '/'
 rootsdir = "/var/tmp/benchmarks/roots/"
 testsdir = "/var/tmp/benchmarks/tests/"
 libdir = sp.Popen \



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2011-06-13 14:12 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2011-06-13 14:12 UTC (permalink / raw
  To: gentoo-commits

commit:     3ce46646c899b4a452a8dff930f39b6e7d898bd2
Author:     spiros <andyspiros <AT> gmail <DOT> com>
AuthorDate: Mon Jun 13 14:11:53 2011 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Mon Jun 13 14:11:53 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=3ce46646

Starting code cleanup. Created btlutils.

---
 blasbase.py |   36 +++++++++++++++---------------------
 btlutils.py |   30 ++++++++++++++++++++++++++++++
 main.py     |    6 ++++++
 3 files changed, 51 insertions(+), 21 deletions(-)

diff --git a/blasbase.py b/blasbase.py
index 3335000..b9be2cd 100644
--- a/blasbase.py
+++ b/blasbase.py
@@ -3,6 +3,7 @@ import commands as cmd
 import subprocess as sp
 import matplotlib.pyplot as plt
 import numpy as np
+import btlutils as btl
 
 run_cmd = lambda c : sp.Popen(c, stdout=sp.PIPE).communicate()[0]
 
@@ -85,29 +86,22 @@ class ModuleBase:
             os.environ['LD_LIBRARY_PATH'] = root + libdir
         
         # Compile
-        exe = testdir + "/test"
-        inc = """
-        -Ibtl/actions
-        -Ibtl/generic_bench
-        -Ibtl/generic_bench/utils
-        -Ibtl/libs/BLAS
-        -Ibtl/libs/STL
-        """.replace('\n', '')
-        libs = "-lrt -L" + root+libdir
-        cxxflags = run_cmd(['portageq', 'envvar', 'CXXFLAGS']).strip()
-        defines = "-DCBLASNAME=" + name
-        implflags = self._get_flags(root, impl, libdir)
-        cl = "g++ %s %s %s %s %s btl/libs/BLAS/main.cpp -o %s" \
-            % (inc, libs, cxxflags, defines, implflags, exe)
-        cl = shlex.split(cl)
-        cp = sp.Popen(cl, stdout=sp.PIPE, stderr=sp.PIPE)
-        cp.communicate()
-        if cp.returncode != 0:
-            raise Exception("Compilation failed: " + " ".join(cl))
-        Print("Compilation successful")
+        returncode, compilecl = btl.btlcompile(
+          exe = testdir + "/test",
+          source = "btl/libs/BLAS/main.cpp",
+          btldir = 'btl/',
+          includes = ['btl/libs/BLAS'],
+          defines = ["CBLASNAME=" + name],
+          libs = [],
+          libdirs = [root+libdir],
+          other = [self._get_flags(root, impl, libdir)]
+        )
+        if returncode != 0:
+            raise Exception("Compilation failed: " + compilecl)
+        Print("Compilation successful: " + compilecl)
         
         # Run test
-        args = [exe] + self.tests
+        args = [testdir + "/test"] + self.tests
         proc = sp.Popen(args, bufsize=1, stdout=sp.PIPE, stderr=sp.PIPE, 
           cwd = testdir)
         results = {}

diff --git a/btlutils.py b/btlutils.py
new file mode 100644
index 0000000..3da5b0c
--- /dev/null
+++ b/btlutils.py
@@ -0,0 +1,30 @@
+import subprocess as sp
+import shlex
+
+run_cmd = lambda c : sp.Popen(c, stdout=sp.PIPE).communicate()[0]
+
+def btlcompile(exe, source, btldir, includes, defines, libs, libdirs, other):
+    incs = (
+      "%s/actions" % btldir,
+      "%s/generic_bench" % btldir,
+      "%s/generic_bench/utils" % btldir,
+      "%s/libs/STL" % btldir
+    ) + tuple(includes)
+    incs = ' '.join(['-I'+i for i in incs])
+    
+    defs = ' '.join(['-D'+d for d in ["NDEBUG"] + defines])
+    
+    libs = ' '.join(['-l'+l for l in ["rt"] + libs])
+    
+    libdirs = ' '.join(['-L'+L for L in libdirs])
+    
+    cxxflags = run_cmd(['portageq', 'envvar', 'CXXFLAGS']).strip()
+    
+    otherflags = ' '.join(other)
+    
+    cl = "g++ -o %s %s %s %s %s %s %s %s" \
+        % (exe, source, incs, defs, libs, libdirs, cxxflags, otherflags)
+    cl = shlex.split(cl)
+    cp = sp.Popen(cl, stdout=sp.PIPE, stderr=sp.PIPE)
+    cp.communicate()
+    return (cp.returncode, ' '.join(cl))

diff --git a/main.py b/main.py
index ee17fed..a992e58 100644
--- a/main.py
+++ b/main.py
@@ -1,6 +1,7 @@
 import os, sys, shlex
 from PortageUtils import *
 import subprocess as sp
+import time
   
 class _Print:
     def __init__(self, maxlevel=10):
@@ -78,6 +79,11 @@ try:
 except ImportError, IndexError:
     print_usage()
     exit(1)
+    
+#tmp = __import__(sys.argv[1], fromlist = ['Module'])
+#mod = tmp.Module(Print, libdir, sys.argv[3:])
+#del tmp
+#testsfname = sys.argv[2]
 
 
 """



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2011-06-13 23:53 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2011-06-13 23:53 UTC (permalink / raw
  To: gentoo-commits

commit:     351b0455f1858ec0f8d19edfba0e0620a4133052
Author:     spiros <andyspiros <AT> gmail <DOT> com>
AuthorDate: Mon Jun 13 23:52:50 2011 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Mon Jun 13 23:52:50 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=351b0455

Some bugs solved.

---
 blas.py      |    7 +++++--
 blastests.in |    4 ++--
 main.py      |   23 +++++++++++++++--------
 3 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/blas.py b/blas.py
index 295e833..b9d6ed8 100644
--- a/blas.py
+++ b/blas.py
@@ -4,8 +4,11 @@ import subprocess as sp
 class Module(blasbase.ModuleBase): 
     @staticmethod
     def get_impls(root):
-        return [i for i in os.listdir(root + "/etc/env.d/alternatives/blas") \
-          if i[0] != '_']
+        output = sp.Popen(
+          ['eselect', '--no-color', '--brief', 'blas', 'list'],
+          env={'ROOT' : root}, stdout=sp.PIPE
+        ).communicate()[0]
+        return output.strip().split('\n')
            
     def _get_flags(self, root, impl, libdir):
         # Retrieve pkgconfig settings and map the directories to the new root

diff --git a/blastests.in b/blastests.in
index a5f5998..3b80df7 100644
--- a/blastests.in
+++ b/blastests.in
@@ -1,2 +1,2 @@
-eigen-O2 dev-cpp/eigen-3.0.0-r1 CXX=g++ CXXFLAGS='-O2'
-eigen-O3 dev-cpp/eigen-3.0.0-r1 CXX=g++ CXXFLAGS='-O3'
+eigen-O2 dev-cpp/eigen-3.0.0-r1 CXX=g++ CXXFLAGS='-O2 -march=native'
+eigen-O3 dev-cpp/eigen-3.0.0-r1 CXX=g++ CXXFLAGS='-O3 -march=native'

diff --git a/main.py b/main.py
index a992e58..ea459a4 100644
--- a/main.py
+++ b/main.py
@@ -22,7 +22,7 @@ class _Print:
     def down(self, n=1):
         self._level = max(self._level+n, 0)
      
-Print = _Print(2)
+Print = _Print(3)
     
     
 # Retrieve relevant directories
@@ -54,19 +54,18 @@ def tests_from_input(input):
             continue
         if line[0] == '#':
             continue
-        avail = available_packages(spl[1])
         env = {}
         # TODO: add @file for env set based on external file
         # TODO: add -impl for skipping implementation
         for var in spl[2:]:
-            s = var.split('=')
+            s = var.split('=', 1)
             env[s[0]] = s[1]
-	avail = available_packages(spl[1])
-	if len(avail) > 1:
+        avail = available_packages(spl[1])
+        if len(avail) > 1:
             for n,p in enumerate(avail):
-	            tests[spl[0]+"_%02i"%n] = {'package':p , 'env':env}
-	else:
-	    tests[spl[0]] = {'package':avail[0] , 'env':env}
+                tests[spl[0]+"_%02i"%n] = {'package':p , 'env':env}
+        else:
+            tests[spl[0]] = {'package':avail[0] , 'env':env}
     return tests
     
     
@@ -135,6 +134,14 @@ dictionary; the line has to contain:
 input = file(testsfname).read()
 tests = tests_from_input(input)
 
+print "The following tests will be run:"
+for tname, ttest in tests.items():
+    print "Tests: " + tname
+    print " - Package: " + "%s/%s-%s-%s" % ttest['package']
+    print " - Environment: " + \
+      ' '.join([n+'="'+v+'"' for n,v in ttest['env'].items()])
+    print
+
 for tn,(name,test) in enumerate(tests.items(),1):
     Print("BEGIN TEST %i - %s" % (tn, name))
     



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2011-06-15 12:56 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2011-06-15 12:56 UTC (permalink / raw
  To: gentoo-commits

commit:     bb92ba7dd4ebb313038d5ea0452c06787d3998c0
Author:     spiros <andyspiros <AT> gmail <DOT> com>
AuthorDate: Wed Jun 15 12:55:43 2011 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Wed Jun 15 12:55:43 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=bb92ba7d

Introduced LAPACK, cleanup of btlbase (former blasbase). Some changes
to main.

---
 blas.py                   |   70 ++++++++++++++++++++++++-----
 blasbase.py => btlbase.py |  109 ++++++++++++++++++++++++---------------------
 cblas.py                  |   72 ++++++++++++++++++++++++-----
 lapack.py                 |   56 +++++++++++++++++++++++
 lapacktests.in            |    2 +
 main.py                   |   26 +++++-----
 6 files changed, 246 insertions(+), 89 deletions(-)

diff --git a/blas.py b/blas.py
index b9d6ed8..52bb221 100644
--- a/blas.py
+++ b/blas.py
@@ -1,23 +1,69 @@
-import os, blasbase
+import os, btlbase
 import subprocess as sp
+import shlex
 
-class Module(blasbase.ModuleBase): 
+class Module(btlbase.BTLBase):
+    def _initialize(self):
+        self.libname = "blas"
+        self.avail1 = ['axpy', 'axpby', 'rot']
+        self.avail2 = ['matrix_vector','atv','symv','syr2','ger',
+          'trisolve_vector']
+        self.avail3 = ['matrix_matrix', 'aat', 'trisolve_matrix', 'trmm']
+        self.avail = self.avail1 + self.avail2 + self.avail3
+    
+    def _parse_args(self, args):     
+        # Parse arguments
+        tests = []
+        for i in args:
+            if i == '1':
+                tests += avail1
+                continue
+            if i == '2':
+                tests += avail2
+                continue
+            if i == '3':
+                tests += avail3
+                continue
+            if i in self.avail:
+                tests.append(i)
+                continue
+            raise Exception("Argument not recognized: " + i)
+        
+        # Sort tests
+        self.tests = [i for i in self.avail if i in tests]
+        
+        # If no test is specified, then choose four standard tests
+        if len(self.tests) == 0:
+            self.tests = ['axpy', 'matrix_vector', \
+              'trisolve_vector', 'matrix_matrix']
+    
     @staticmethod
-    def get_impls(root):
-        output = sp.Popen(
-          ['eselect', '--no-color', '--brief', 'blas', 'list'],
-          env={'ROOT' : root}, stdout=sp.PIPE
-        ).communicate()[0]
-        return output.strip().split('\n')
+    def _btl_source():
+        return "/libs/BLAS/main.cpp"
+    
+    @staticmethod
+    def _btl_includes():
+        return ["/libs/BLAS"]
+    
+    def _btl_defines(self):
+        return ["CBLASNAME=" + self.libname, "BLAS_INTERFACE"]
            
     def _get_flags(self, root, impl, libdir):
         # Retrieve pkgconfig settings and map the directories to the new root
-        path = \
-          "%s/etc/env.d/alternatives/blas/%s/%s/pkgconfig" % (root,impl,libdir)
+        path = "%s/etc/env.d/alternatives/%s/%s/%s/pkgconfig" % \
+          (root, self.libname, impl, libdir)
         pkgconf = sp.Popen('pkg-config --libs --cflags blas', shell=True, \
           stdout=sp.PIPE, env={'PKG_CONFIG_PATH':path}).communicate()[0]
         pkgconf = pkgconf.replace('-L/', '-L'+root+'/')
         pkgconf = pkgconf.replace('-I/', '-I'+root+'/')
-        return pkgconf + " -DBLAS_INTERFACE"
+        return shlex.split(pkgconf)
+        
+        
+    def get_impls(self, root):
+        output = sp.Popen(
+          ['eselect', '--no-color', '--brief', self.libname, 'list'],
+          env={'ROOT' : root}, stdout=sp.PIPE
+        ).communicate()[0]
+        return output.strip().split('\n')
 
-del blasbase
+del btlbase

diff --git a/blasbase.py b/btlbase.py
similarity index 66%
rename from blasbase.py
rename to btlbase.py
index 36413c7..ecb74d9 100644
--- a/blasbase.py
+++ b/btlbase.py
@@ -5,62 +5,49 @@ import subprocess as sp
 try:
     import matplotlib.pyplot as plt
     import numpy as np
+    with_images = True
 except ImportError:
     sys.stderr.write('Error: matplotlib and numpy are needed' + \
       'in order to generate the reports!\n')
-    sys.stderr.write('Continue anyway.\n')    
+    sys.stderr.write('Continue anyway.\n\n')    
+    with_images = False
     
 import btlutils as btl
 
 run_cmd = lambda c : sp.Popen(c, stdout=sp.PIPE).communicate()[0]
 
-class ModuleBase:
+class BTLBase:
     def __init__(self, Print, libdir, args):
         self.Print = Print
         self.libdir = libdir
         self.summary = False
         self.summary_only = False
         
-        avail1 = ['axpy', 'axpby', 'rot']
-        avail2 = ['matrix_vector','atv','symv','syr2','ger','trisolve_vector']
-        avail3 = ['matrix_matrix', 'aat', 'trisolve_matrix', 'trmm']
+        self._initialize()
         
-        tests = []
+        passargs = []
         for i in args:
             if i == '-S':
                 self.summary_only = True
                 continue
-            if i == '-s':
+            elif i == '-s':
                 self.summary = True
                 continue
-            if i == '1':
-                tests += avail1
-                continue
-            if i == '2':
-                tests += avail2
-                continue
-            if i == '3':
-                tests += avail3
-                continue
-            if i in avail1 + avail2 + avail3:
-                tests.append(i)
-                continue
-            raise Exception("Argument not recognized: " + i)
-        self.tests = [i for i in avail1+avail2+avail3 if i in tests]
+            else:
+                passargs += [i]
         
-        if len(self.tests) == 0:
-            self.tests = ['axpy', 'matrix_vector', \
-              'trisolve_vector', 'matrix_matrix']
+        self._parse_args(passargs)
         
           
-    def run_test(self, root, impl, testdir):
+    def run_test(self, root, impl, testdir, env):
+        # Convenient renames and definition of report files 
         Print = self.Print
         libdir = self.libdir
-        name = 'blas'
+        name = self.libname
         files = ['%s/bench_%s_%s.dat' %(testdir, op, name) for op in self.tests]
         
-        # Create dir. If all results already exist use them, otherwise
-        # remove old results
+        # Create dir. If all results already exist use them and do not perform
+        # the tests, otherwise remove every old results.
         runtests = False
         if os.path.exists(testdir):
             runtests = not all([os.path.exists(i) for i in files])
@@ -77,31 +64,44 @@ class ModuleBase:
         
         for i in files:
             if os.path.exists(i): os.remove(i)
+            
+        # Prepare the environment
+        if env.has_key('LIBRARY_PATH'):
+            env['LIBRARY_PATH'] = root+libdir + ":" + env['LIBRARY_PATH']
+        else:
+            env['LIBRARY_PATH'] = root+libdir
+            
+        if env.has_key('INCLUDE_PATH'):
+            env['INCLUDE_PATH'] = root+"/usr/include" +":"+ env['INCLUDE_PATH']
+        else:
+            env['INCLUDE_PATH'] = root+"/usr/include"
+            
+        if env.has_key('LD_LIBRARY_PATH'):
+            env['LD_LIBRARY_PATH'] = root+libdir + ":" + env['LD_LIBRARY_PATH']
+        else:
+            env['LD_LIBRARY_PATH'] = root+libdir
         
-        # Setup environment for testing
+        # Backup the environment
         oldenv = {}
-        for v in ('LIBRARY_PATH', 'INCLUDE_PATH', 'LD_LIBRARY_PATH'):
-            # Backup old environment variables
-            oldenv[v] = \
-              (os.environ.has_key(v) and (os.environ[v],) or (None,))[0]
-        os.environ['LIBRARY_PATH'] = root + libdir
-        os.environ['INCLUDE_PATH'] = root + '/usr/include'
-        if oldenv['LD_LIBRARY_PATH'] != None:
-            os.environ['LD_LIBRARY_PATH'] = \
-              root + libdir + ":" + oldenv['LD_LIBRARY_PATH']
-        else:
-            os.environ['LD_LIBRARY_PATH'] = root + libdir
+        for k in env.keys():
+            oldenv[k] = \
+              (os.environ.has_key(k) and (os.environ[k],) or (None,))[0]
+        
+        # Set the environment
+        for k,v in env.items():
+            os.environ[k] = v
         
         # Compile
+        btldir = 'btl/'
         returncode, compilecl = btl.btlcompile(
           exe = testdir + "/test",
-          source = "btl/libs/BLAS/main.cpp",
-          btldir = 'btl/',
-          includes = ['btl/libs/BLAS'],
-          defines = ["CBLASNAME=" + name],
+          source = btldir + self._btl_source(),
+          btldir = btldir,
+          includes = [btldir+d for d in self._btl_includes()],
+          defines = self._btl_defines(),
           libs = [],
           libdirs = [root+libdir],
-          other = [self._get_flags(root, impl, libdir)]
+          other = self._get_flags(root, impl, libdir)
         )
         if returncode != 0:
             raise Exception("Compilation failed: " + compilecl)
@@ -132,15 +132,20 @@ class ModuleBase:
         else:
             Print('Test successful')
         
-        # Restore old environment variables
-        for v in ('LIBRARY_PATH', 'INCLUDE_PATH', 'LD_LIBRARY_PATH'):
-            if oldenv[v] != None:
-                os.environ[v] = oldenv[v]
-            elif os.environ.has_key(v):
-                del os.environ[v]
+        # Restore the old environment
+        for k in env.keys():
+            if oldenv[k] != None:
+                os.environ[k] = oldenv[k]
+            elif os.environ.has_key(k):
+                del os.environ[k]
         return results
     
     def save_results(self, results, figdir):
+        if not with_images:
+            self.Print("Report generation skipped - missing libraries")
+            return
+    
+        # Re-order the result dictionary
         newresults = {}
         for test in self.tests:
             newresults[test] = {}
@@ -149,6 +154,7 @@ class ModuleBase:
                 resdat = results[nameimpl][test]
                 newresults[test][nameimplstr] = resdat       
         
+        # Generate summary - a single image with all plots
         if self.summary or self.summary_only:
             # Save summary figure
             sprows = (len(self.tests)+1)/2
@@ -165,6 +171,7 @@ class ModuleBase:
             plt.savefig(fname, format='png')
             self.Print('Summary figure saved: ' + fname)
                 
+        # Generate plots
         if not self.summary_only:
             for test in self.tests:
                 plt.figure(figsize=(12,9), dpi=300)

diff --git a/cblas.py b/cblas.py
index ad47c65..c3d0342 100644
--- a/cblas.py
+++ b/cblas.py
@@ -1,23 +1,69 @@
-import os, blasbase
+import os, btlbase
 import subprocess as sp
+import shlex
 
-class Module(blasbase.ModuleBase):
+class Module(btlbase.BTLBase):
+    def _initialize(self):
+        self.libname = "cblas"
+        self.avail1 = ['axpy', 'axpby', 'rot']
+        self.avail2 = ['matrix_vector','atv','symv','syr2','ger',
+          'trisolve_vector']
+        self.avail3 = ['matrix_matrix', 'aat', 'trisolve_matrix', 'trmm']
+        self.avail = self.avail1 + self.avail2 + self.avail3
+    
+    def _parse_args(self, args):     
+        # Parse arguments
+        tests = []
+        for i in args:
+            if i == '1':
+                tests += avail1
+                continue
+            if i == '2':
+                tests += avail2
+                continue
+            if i == '3':
+                tests += avail3
+                continue
+            if i in self.avail:
+                tests.append(i)
+                continue
+            raise Exception("Argument not recognized: " + i)
+        
+        # Sort tests
+        self.tests = [i for i in self.avail if i in tests]
+        
+        # If no test is specified, then choose four standard tests
+        if len(self.tests) == 0:
+            self.tests = ['axpy', 'matrix_vector', \
+              'trisolve_vector', 'matrix_matrix']
+    
     @staticmethod
-    def get_impls(root):
-        output = sp.Popen(
-          ['eselect', '--no-color', '--brief', 'cblas', 'list'],
-          env={'ROOT' : root}, stdout=sp.PIPE
-        ).communicate()[0]
-        return output.strip().split('\n')
-          
+    def _btl_source():
+        return "/libs/BLAS/main.cpp"
+    
+    @staticmethod
+    def _btl_includes():
+        return ["/libs/BLAS"]
+    
+    def _btl_defines(self):
+        return ["CBLASNAME=" + self.libname, "CBLAS_INTERFACE"]
+           
     def _get_flags(self, root, impl, libdir):
         # Retrieve pkgconfig settings and map the directories to the new root
-        path = \
-          "%s/etc/env.d/alternatives/cblas/%s/%s/pkgconfig" % (root,impl,libdir)
+        path = "%s/etc/env.d/alternatives/%s/%s/%s/pkgconfig" % \
+          (root, self.libname, impl, libdir)
         pkgconf = sp.Popen('pkg-config --libs --cflags cblas', shell=True, \
           stdout=sp.PIPE, env={'PKG_CONFIG_PATH':path}).communicate()[0]
         pkgconf = pkgconf.replace('-L/', '-L'+root+'/')
         pkgconf = pkgconf.replace('-I/', '-I'+root+'/')
-        return pkgconf + " -DCBLAS_INTERFACE"
+        return shlex.split(pkgconf)
+        
+        
+    def get_impls(self, root):
+        output = sp.Popen(
+          ['eselect', '--no-color', '--brief', self.libname, 'list'],
+          env={'ROOT' : root}, stdout=sp.PIPE
+        ).communicate()[0]
+        return output.strip().split('\n')
 
-del blasbase
+del btlbase

diff --git a/lapack.py b/lapack.py
new file mode 100644
index 0000000..1d2f3cb
--- /dev/null
+++ b/lapack.py
@@ -0,0 +1,56 @@
+import os, blasbase
+import subprocess as sp
+import shlex
+
+class Module(blasbase.BTLBase):
+    def _initialize(self):
+        self.libname = "lapack"
+        self.avail = ['general_solve', 'least_squares', 'lu_decomp', \
+          'cholesky', 'symm_ev']
+    
+    def _parse_args(self, args):     
+        # Parse arguments
+        tests = []
+        for i in args:
+            if i in self.avail:
+                tests.append(i)
+                continue
+            raise Exception("Argument not recognized: " + i)
+        
+        # Sort tests
+        self.tests = [i for i in self.avail if i in tests]
+        
+        # If no test is specified, run everything
+        if len(self.tests) == 0:
+            self.tests = self.avail
+    
+    @staticmethod
+    def _btl_source():
+        return "/libs/LAPACK/main.cpp"
+    
+    @staticmethod
+    def _btl_includes():
+        return ["/libs/BLAS", "libs/LAPACK"]
+    
+    def _btl_defines(self):
+        return ["LAPACKNAME=" + self.libname]
+           
+    def _get_flags(self, root, impl, libdir):
+        # Retrieve pkgconfig settings and map the directories to the new root
+        path = "%s/etc/env.d/alternatives/%s/%s/%s/pkgconfig" % \
+          (root, self.libname, impl, libdir)
+        pkgconf = sp.Popen('pkg-config --libs --cflags lapack', shell=True, \
+          stdout=sp.PIPE, env={'PKG_CONFIG_PATH':path}).communicate()[0]
+        pkgconf = pkgconf.replace('-L/', '-L'+root+'/')
+        pkgconf = pkgconf.replace('-I/', '-I'+root+'/')
+        return shlex.split(pkgconf)
+        
+        
+    def get_impls(self, root):
+        output = sp.Popen(
+          ['eselect', '--no-color', '--brief', self.libname, 'list'],
+          env={'ROOT' : root}, stdout=sp.PIPE
+        ).communicate()[0]
+        return output.strip().split('\n')
+
+del blasbase

diff --git a/lapacktests.in b/lapacktests.in
new file mode 100644
index 0000000..1dfcfb6
--- /dev/null
+++ b/lapacktests.in
@@ -0,0 +1,2 @@
+reference-O2 sci-libs/lapack-reference-3.3.1-r1 FFLAGS=-O2
+reference-O3 sci-libs/lapack-reference-3.3.1-r1 FFLAGS=-O3

diff --git a/main.py b/main.py
index feeef86..8933834 100644
--- a/main.py
+++ b/main.py
@@ -80,11 +80,6 @@ try:
 except ImportError, IndexError:
     print_usage()
     exit(1)
-    
-#tmp = __import__(sys.argv[1], fromlist = ['Module'])
-#mod = tmp.Module(Print, libdir, sys.argv[3:])
-#del tmp
-#testsfname = sys.argv[2]
 
 
 """
@@ -102,22 +97,22 @@ After the tests every successful tested item will contain the item "result",
 which can contain any type of data and will be used for the final report.
 """
 #tests = {
-#    "abcde" : {
+#    "reference-gfortran" : {
 #        "package" : ('sci-libs', 'blas-reference', '3.3.1', 'r1'),
 #        "env" : {'FC' : 'gfortran'}
 #    },
 #         
-#    "fghij" : {
+#    "eigen-gcc" : {
 #        "package" : ('dev-cpp', 'eigen', '3.0.0', 'r1'),
-#        "env" : {'CXX' : 'gcc', 'CXXFLAGS' : '-O2'}
+#        "env" : {'CXX' : 'g++', 'CXXFLAGS' : '-O2'}
 #    },
 #         
-#    "klmno" : {
+#    "eigen-icc" : {
 #        "package" : ('dev-cpp', 'eigen', '3.0.0', 'r1'),
 #        "env" : {'CXX' : 'icc', 'CXXFLAGS' : '-O3'}
 #    },
 #
-#    "pqrst" : {
+#    "reference-ifort" : {
 #        "package" : ('sci-libs', 'blas-reference', '3.3.1', 'r1'),
 #        "env" : {'FC' : 'ifort'}
 #    }
@@ -136,13 +131,17 @@ dictionary; the line has to contain:
 input = file(testsfname).read()
 tests = tests_from_input(input)
 
+# Write summary
+print 60*'='
 print "The following tests will be run:"
 for tname, ttest in tests.items():
-    print "Tests: " + tname
+    print "Test: " + tname
     print " - Package: " + "%s/%s-%s-%s" % ttest['package']
     print " - Environment: " + \
       ' '.join([n+'="'+v+'"' for n,v in ttest['env'].items()])
     print
+print 60*'='
+print
 
 for tn,(name,test) in enumerate(tests.items(),1):
     Print("BEGIN TEST %i - %s" % (tn, name))
@@ -187,9 +186,10 @@ for tn,(name,test) in enumerate(tests.items(),1):
         Print("Testing " + impl)
         Print.down()
         
-        # Compile/link the test suite against the library
+        # Run the test suite
         testdir = "%s/%s/%s" % (testsdir, name, impl)
-        test['results'][impl] = mod.run_test(root, impl, testdir)
+        test['results'][impl] = \
+          mod.run_test(root=root, impl=impl, testdir=testdir, env=test['env'])
         Print.up()
             
     Print.up()



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2011-06-15 23:25 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2011-06-15 23:25 UTC (permalink / raw
  To: gentoo-commits

commit:     9e8213dc144f97872735ca329734609767a9d9a5
Author:     spiros <andyspiros <AT> gmail <DOT> com>
AuthorDate: Wed Jun 15 23:24:43 2011 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Wed Jun 15 23:24:43 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=9e8213dc

Correct bug at main.py:207.

---
 btlbase.py  |    1 +
 btlutils.py |    1 +
 main.py     |    5 +++--
 3 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/btlbase.py b/btlbase.py
index ecb74d9..a8d8c1e 100644
--- a/btlbase.py
+++ b/btlbase.py
@@ -92,6 +92,7 @@ class BTLBase:
             os.environ[k] = v
         
         # Compile
+        # TODO: use CXX instead of g++
         btldir = 'btl/'
         returncode, compilecl = btl.btlcompile(
           exe = testdir + "/test",

diff --git a/btlutils.py b/btlutils.py
index 3da5b0c..752096e 100644
--- a/btlutils.py
+++ b/btlutils.py
@@ -22,6 +22,7 @@ def btlcompile(exe, source, btldir, includes, defines, libs, libdirs, other):
     
     otherflags = ' '.join(other)
     
+    # TODO: use CXX instead of g++
     cl = "g++ -o %s %s %s %s %s %s %s %s" \
         % (exe, source, incs, defs, libs, libdirs, cxxflags, otherflags)
     cl = shlex.split(cl)

diff --git a/main.py b/main.py
index 9799a43..474f9bd 100644
--- a/main.py
+++ b/main.py
@@ -204,8 +204,9 @@ if not os.path.exists(figdir):
         
 results = {}
 for (name,test) in tests.items():
-    for impl in test['implementations']:
-        results[(name, impl)] = test['results'][impl]
+    if test.has_key('implementations'):
+        for impl in test['implementations']:
+            results[(name, impl)] = test['results'][impl]
 
 mod.save_results(results, figdir)
 



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2011-07-13 21:48 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2011-07-13 21:48 UTC (permalink / raw
  To: gentoo-commits

commit:     0f0ac12a76e94ec68683ab2d61dd55cba4b49821
Author:     spiros <andyspiros <AT> gmail <DOT> com>
AuthorDate: Wed Jul 13 21:44:37 2011 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Wed Jul 13 21:44:37 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=0f0ac12a

main.py executable

---
 0 files changed, 0 insertions(+), 0 deletions(-)

diff --git a/main.py b/main.py
old mode 100644
new mode 100755



^ permalink raw reply	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2011-07-17  0:21 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2011-07-17  0:21 UTC (permalink / raw
  To: gentoo-commits

commit:     3eadb96a4cc26784a088a60b74f39cabe5331f40
Author:     spiros <andyspiros <AT> gmail <DOT> com>
AuthorDate: Sun Jul 17 00:16:49 2011 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Sun Jul 17 00:16:49 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=3eadb96a

main.py executable

---
 0 files changed, 0 insertions(+), 0 deletions(-)

diff --git a/main.py b/main.py
old mode 100644
new mode 100755



^ permalink raw reply	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2011-08-09  0:00 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2011-08-09  0:00 UTC (permalink / raw
  To: gentoo-commits

commit:     21035a61148d88293ba8af84d7c96555aa19428e
Author:     spiros <andyspiros <AT> gmail <DOT> com>
AuthorDate: Mon Aug  8 22:40:53 2011 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Mon Aug  8 22:40:53 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=21035a61

Merge branch 'unstable' of git+ssh://git.overlays.gentoo.org/proj/auto-numerical-bench


 PortageUtils.py                                    |  109 +++-
 accuracy/lapack/diff.hh                            |   30 +
 accuracy/lapack/lapack_LU.hh                       |   57 ++
 accuracy/lapack/lapack_QR.hh                       |   57 ++
 accuracy/lapack/lapack_STEV.hh                     |   35 +
 accuracy/lapack/lapack_SVD.hh                      |   40 ++
 accuracy/lapack/lapack_SYEV.hh                     |   43 ++
 accuracy/lapack/lapack_cholesky.hh                 |   37 ++
 accuracy/lapack/main_lapack.cpp                    |  103 +++
 accuracy/lapack/timer.hh                           |   50 ++
 accuracy/sizes.hh                                  |   42 ++
 basemodule.py                                      |   12 +-
 benchconfig.py                                     |   44 +-
 btl/COPYING                                        |  340 ----------
 btl/README                                         |  154 -----
 btl/actions/action_aat_product.hh                  |  145 -----
 btl/actions/action_ata_product.hh                  |  145 -----
 btl/actions/action_atv_product.hh                  |  134 ----
 btl/actions/action_axpby.hh                        |  127 ----
 btl/actions/action_axpy.hh                         |  139 ----
 btl/actions/action_cholesky.hh                     |  129 ----
 btl/actions/action_fftw_1d_backward_estimate.hh    |   94 ---
 btl/actions/action_fftw_1d_backward_measure.hh     |   94 ---
 btl/actions/action_fftw_1d_forward_estimate.hh     |   94 ---
 btl/actions/action_fftw_1d_forward_measure.hh      |   94 ---
 btl/actions/action_general_solve.hh                |  120 ----
 btl/actions/action_ger.hh                          |  128 ----
 btl/actions/action_hessenberg.hh                   |  233 -------
 btl/actions/action_least_squares.hh                |  120 ----
 btl/actions/action_lu_decomp.hh                    |  124 ----
 btl/actions/action_lu_solve.hh                     |  136 ----
 btl/actions/action_matrix_matrix_product.hh        |  150 -----
 btl/actions/action_matrix_matrix_product_bis.hh    |  152 -----
 btl/actions/action_matrix_vector_product.hh        |  153 -----
 btl/actions/action_partial_lu.hh                   |  125 ----
 btl/actions/action_rot.hh                          |  116 ----
 btl/actions/action_symm_ev.hh                      |   87 ---
 btl/actions/action_symv.hh                         |  139 ----
 btl/actions/action_syr2.hh                         |  133 ----
 btl/actions/action_trisolve.hh                     |  137 ----
 btl/actions/action_trisolve_matrix.hh              |  165 -----
 btl/actions/action_trmm.hh                         |  165 -----
 btl/actions/basic_actions.hh                       |   21 -
 btl/actions/fftw_actions.hh                        |    9 -
 btl/data/action_settings.txt                       |   18 -
 btl/data/gnuplot_common_settings.hh                |   87 ---
 btl/data/go_mean                                   |   57 --
 btl/data/mean.cxx                                  |  182 ------
 btl/data/mk_gnuplot_script.sh                      |   68 --
 btl/data/mk_mean_script.sh                         |   52 --
 btl/data/mk_new_gnuplot.sh                         |   54 --
 btl/data/perlib_plot_settings.txt                  |   16 -
 btl/data/regularize.cxx                            |  131 ----
 btl/data/smooth.cxx                                |  198 ------
 btl/data/smooth_all.sh                             |   68 --
 btl/generic_bench/bench.hh                         |  168 -----
 btl/generic_bench/bench_parameter.hh               |   53 --
 btl/generic_bench/btl.hh                           |  247 -------
 btl/generic_bench/init/init_function.hh            |   54 --
 btl/generic_bench/init/init_matrix.hh              |   64 --
 btl/generic_bench/init/init_vector.hh              |   37 --
 btl/generic_bench/static/bench_static.hh           |   80 ---
 btl/generic_bench/static/intel_bench_fixed_size.hh |   66 --
 btl/generic_bench/static/static_size_generator.hh  |   57 --
 btl/generic_bench/timers/STL_perf_analyzer.hh      |   82 ---
 btl/generic_bench/timers/STL_timer.hh              |   78 ---
 btl/generic_bench/timers/mixed_perf_analyzer.hh    |   73 ---
 btl/generic_bench/timers/portable_perf_analyzer.hh |  103 ---
 .../timers/portable_perf_analyzer_old.hh           |  134 ----
 btl/generic_bench/timers/portable_timer.hh         |  145 -----
 btl/generic_bench/timers/x86_perf_analyzer.hh      |  108 ----
 btl/generic_bench/timers/x86_timer.hh              |  246 -------
 btl/generic_bench/utils/size_lin_log.hh            |   70 --
 btl/generic_bench/utils/size_log.hh                |   54 --
 btl/generic_bench/utils/utilities.h                |   90 ---
 btl/generic_bench/utils/xy_file.hh                 |   75 ---
 btl/libs/BLAS/CMakeLists.txt                       |   60 --
 btl/libs/BLAS/blas.h                               |  675 --------------------
 btl/libs/BLAS/blas_interface.hh                    |   76 ---
 btl/libs/BLAS/blas_interface_impl.hh               |   79 ---
 btl/libs/BLAS/c_interface_base.h                   |   72 ---
 btl/libs/BLAS/cblas_interface_impl.hh              |   79 ---
 btl/libs/BLAS/main.cpp                             |  106 ---
 btl/libs/FFTW/fftw_interface.hh                    |   62 --
 btl/libs/FFTW/main.cpp                             |   45 --
 btl/libs/LAPACK/lapack_interface.hh                |   53 --
 btl/libs/LAPACK/lapack_interface_impl.hh           |   68 --
 btl/libs/LAPACK/main.cpp                           |   48 --
 btl/libs/STL/CMakeLists.txt                        |    2 -
 btl/libs/STL/STL_interface.hh                      |  244 -------
 btl/libs/STL/main.cpp                              |   42 --
 btl/libs/eigen3/CMakeLists.txt                     |   65 --
 btl/libs/eigen3/btl_tiny_eigen3.cpp                |   46 --
 btl/libs/eigen3/eigen3_interface.hh                |  240 -------
 btl/libs/eigen3/main_adv.cpp                       |   44 --
 btl/libs/eigen3/main_linear.cpp                    |   35 -
 btl/libs/eigen3/main_matmat.cpp                    |   35 -
 btl/libs/eigen3/main_vecmat.cpp                    |   36 -
 btlbase.py                                         |   18 +-
 fftw.py                                            |    5 +-
 lapack.py                                          |    5 +-
 blas_accuracy.py => lapack_accuracy.py             |   29 +-
 main.py                                            |   64 +-
 metis.py                                           |  162 +++++
 scalapack.py                                       |   68 ++
 testdescr.py                                       |   14 +-
 106 files changed, 925 insertions(+), 9428 deletions(-)



^ permalink raw reply	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2011-08-09  0:00 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2011-08-09  0:00 UTC (permalink / raw
  To: gentoo-commits

commit:     c6b10b2698803d97f41cc2d95c384fcae690361f
Author:     spiros <andyspiros <AT> gmail <DOT> com>
AuthorDate: Mon Aug  8 23:59:39 2011 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Mon Aug  8 23:59:39 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=c6b10b26

Added main logging. Solved issues with utils and Portage.

---
 PortageUtils.py |   62 ++++++++++++++++++++++++++++++------------------------
 benchconfig.py  |    7 +++++-
 benchprint.py   |   21 +++++++++++++++---
 benchutils.py   |    5 +---
 4 files changed, 58 insertions(+), 37 deletions(-)

diff --git a/PortageUtils.py b/PortageUtils.py
index 8280d1c..f06c53d 100644
--- a/PortageUtils.py
+++ b/PortageUtils.py
@@ -8,6 +8,35 @@ class InstallException(Exception):
     def __init__(self, command, logfile):
         self.command = command
         self.logfile = logfile
+        
+def _getEnv(root='/', envAdds={}):
+    denv = os.environ.copy()
+
+    #PATH
+    denv['PATH'] = ':'.join([pjoin(root, i) for i in ('bin', 'usr/bin')])
+    if os.environ.has_key('PATH'):
+        denv['PATH'] += ':' + os.environ['PATH']
+    denv['ROOTPATH'] = denv['PATH']
+    #LIBRARY_PATH
+    denv['LIBRARY_PATH'] = ':'.join([pjoin(root, i) for i in \
+      ('usr/lib', 'usr/lib64', 'usr/lib32')])
+    if os.environ.has_key('LIBRARY_PATH'):
+        denv['LIBRARY_PATH'] += ':' + os.environ['LIBRARY_PATH']
+    #LD_LIBRARY_PATH
+    denv['LD_LIBRARY_PATH'] = ':'.join([pjoin(root, i) for i in \
+      ('usr/lib', 'usr/lib64', 'usr/lib32')])
+    if os.environ.has_key('LD_LIBRARY_PATH'):
+        denv['LD_LIBRARY_PATH'] += ':' + os.environ['LD_LIBRARY_PATH']
+    #INCLUDE_PATH
+    denv['INCLUDE_PATH'] = ':'.join([pjoin(root, i) for i in ('usr/include',)])
+    if os.environ.has_key('INCLUDE_PATH'):
+        denv['INCLUDE_PATH'] += ':' + os.environ['INCLUDE_PATH']
+        
+    # Adds
+    for k,v in envAdds.items():
+        denv[k] = v
+    
+    return denv
 
 def available_packages(pattern):
     """Returns a list of packages matching the given pattern.
@@ -51,9 +80,7 @@ def install_dependencies(package, env={}, root='/',
         logdir = "/var/log/benchmarks/.unordered"
     
     # Adjust environment
-    denv = os.environ
-    for k,v in env.items():
-        denv[k] = v
+    denv = _getEnv(root, dict(PKGDIR=pkgdir))
     
     # Retrieve dependencies
     deps = get_dependencies(package, denv, False)
@@ -83,31 +110,10 @@ def install_package(package, env={}, root='/', pkgdir='usr/portage/packages',
     The function has no return value and raises an exception in case of building
     or emerging failure. Note: dependencies will NOT be emerged!
     """
-    
-    # Adjust environment
-    denv = os.environ.copy()
-    for k,v in env.items():
-        denv[k] = v
-    denv['PKGDIR'] = pkgdir    
-    #PATH
-    denv['PATH'] = ':'.join([pjoin(root, i) for i in ('bin', 'usr/bin')])
-    if os.environ.has_key('PATH'):
-        denv['PATH'] += ':' + os.environ['PATH']
-    denv['ROOTPATH'] = denv['PATH']
-    #LIBRARY_PATH
-    denv['LIBRARY_PATH'] = ':'.join([pjoin(root, i) for i in \
-      ('usr/lib', 'usr/lib64', 'usr/lib32')])
-    if os.environ.has_key('LIBRARY_PATH'):
-        denv['LIBRARY_PATH'] += ':' + os.environ['LIBRARY_PATH']
-    #LD_LIBRARY_PATH
-    denv['LD_LIBRARY_PATH'] = ':'.join([pjoin(root, i) for i in \
-      ('usr/lib', 'usr/lib64', 'usr/lib32')])
-    if os.environ.has_key('LD_LIBRARY_PATH'):
-        denv['LD_LIBRARY_PATH'] += ':' + os.environ['LD_LIBRARY_PATH']
-    #INCLUDE_PATH
-    denv['INCLUDE_PATH'] = ':'.join([pjoin(root, i) for i in ('usr/include',)])
-    if os.environ.has_key('INCLUDE_PATH'):
-        denv['INCLUDE_PATH'] += ':' + os.environ['INCLUDE_PATH']
+    envAdds = env.copy()
+    envAdds['PKGDIR'] = pkgdir
+    denv = _getEnv(root, envAdds)
+    del envAdds
     
     # Retrieve package string
     pkg = normalize_cpv(package)

diff --git a/benchconfig.py b/benchconfig.py
index c684685..f707959 100644
--- a/benchconfig.py
+++ b/benchconfig.py
@@ -32,6 +32,7 @@ if needsinitialization:
         testsdir = "/var/tmp/benchmarks/tests/"
         rootsdir = "/var/tmp/benchmarks/roots/"
         pkgsdir = "/var/cache/benchmarks/packages/"
+        
         reportdirb = "/var/cache/benchmarks/reports/"
         logdirb = "/var/log/benchmarks/"+modname+"_"+time.strftime('%Y-%m-%d')
     else:
@@ -42,6 +43,10 @@ if needsinitialization:
         logdirb = pjoin(os.environ['HOME'], ".benchmarks/log",
                         modname + "_" + time.strftime('%Y-%m-%d'))
     
+    bu.mkdir(testsdir)
+    bu.mkdir(rootsdir)
+    bu.mkdir(pkgsdir)
+    
     # Report directory
     reportdirb += modname + "_" + time.strftime('%Y-%m-%d')
     if os.path.exists(reportdirb):
@@ -76,4 +81,4 @@ def makedirs():
     
     
     
-inizialized = True
\ No newline at end of file
+inizialized = True

diff --git a/benchprint.py b/benchprint.py
index b91da66..e4b7e41 100644
--- a/benchprint.py
+++ b/benchprint.py
@@ -5,24 +5,37 @@ except NameError:
 
 
 if needsinitialization:
+    import benchconfig as cfg, benchutils as bu
+    from os.path import dirname, join as pjoin
+
     class _Print:
-        def __init__(self, maxlevel=10):
+        def __init__(self, logfile, maxlevel=10):
             self._level = 0
             self._maxlevel = maxlevel
+            bu.mkdir(dirname(logfile))
+            self._logfile = file(logfile, 'w')
         
         def __call__(self, arg):
             if self._level > self._maxlevel:
                 return
+                
             if self._level <= 0:
                 print str(arg)
+                print >> self._logfile, str(arg)
+                self._logfile.flush()
                 return
-            print (self._level-1)*"  " + "-- " + str(arg)
+                
+            printstr = (self._level-1)*"  " + "-- " + str(arg)
+            if self._level <= self._maxlevel-1:
+                print >> self._logfile, printstr
+                self._logfile.flush()
+            print printstr
             
         def up(self, n=1):
             self._level = max(self._level-n, 0)
         
         def down(self, n=1):
             self._level = max(self._level+n, 0)
-    Print = _Print(3)
+    Print = _Print(pjoin(cfg.logdir, 'main.log'), 3)
 
-initialized = True
\ No newline at end of file
+initialized = True

diff --git a/benchutils.py b/benchutils.py
index 748f928..df12ee9 100644
--- a/benchutils.py
+++ b/benchutils.py
@@ -1,11 +1,8 @@
 import os, sys
-from os.path import join as pjoin, basename, dirname
 import subprocess as sp
-import benchconfig as cfg
-import benchpkgconfig as pc
 
 def mkdir(dir):
     if not os.path.exists(dir):
         os.makedirs(dir)
         
-run_cmd = lambda c : sp.Popen(c, stdout=sp.PIPE).communicate()[0]
\ No newline at end of file
+run_cmd = lambda c : sp.Popen(c, stdout=sp.PIPE).communicate()[0]



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2011-08-12 22:56 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2011-08-12 22:56 UTC (permalink / raw
  To: gentoo-commits

commit:     a0bba3e031348a0d5274708b4c6e401e9ae68ed0
Author:     spiros <andyspiros <AT> gmail <DOT> com>
AuthorDate: Fri Aug 12 22:55:56 2011 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Fri Aug 12 22:55:56 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=a0bba3e0

Some help added.

---
 basemodule.py  |   13 +++++
 benchconfig.py |    4 --
 benchprint.py  |   15 ++++--
 blasbase.py    |   17 +++++--
 btlbase.py     |   11 ++++
 lapack.py      |    9 ++-
 main.py        |  147 ++++++++++++++++++++++++++++++++++++++++++++++----------
 7 files changed, 172 insertions(+), 44 deletions(-)

diff --git a/basemodule.py b/basemodule.py
index b55adfc..6185774 100644
--- a/basemodule.py
+++ b/basemodule.py
@@ -45,6 +45,19 @@ class BaseModule:
                 passargs += [i]
         
         self._parse_args(passargs)
+    
+    @classmethod
+    def printHelp(cls):
+        print "Usage: numbench " + cfg.modulename + " [options] [tests]"
+        print
+        print "Generic options:"
+        print "   -s -summary"
+        print "      Generate a summary image that contains all tests results"
+        print "      and show it on the HTML report page."
+        print
+        print "   -S -summary-only"
+        print "      Only generate the summary image and skip all other plots."
+        print
         
     # Alternatives-2 version
     def get_impls(self, root):

diff --git a/benchconfig.py b/benchconfig.py
index f707959..6769e8d 100644
--- a/benchconfig.py
+++ b/benchconfig.py
@@ -43,10 +43,6 @@ if needsinitialization:
         logdirb = pjoin(os.environ['HOME'], ".benchmarks/log",
                         modname + "_" + time.strftime('%Y-%m-%d'))
     
-    bu.mkdir(testsdir)
-    bu.mkdir(rootsdir)
-    bu.mkdir(pkgsdir)
-    
     # Report directory
     reportdirb += modname + "_" + time.strftime('%Y-%m-%d')
     if os.path.exists(reportdirb):

diff --git a/benchprint.py b/benchprint.py
index e4b7e41..8c394e2 100644
--- a/benchprint.py
+++ b/benchprint.py
@@ -12,8 +12,7 @@ if needsinitialization:
         def __init__(self, logfile, maxlevel=10):
             self._level = 0
             self._maxlevel = maxlevel
-            bu.mkdir(dirname(logfile))
-            self._logfile = file(logfile, 'w')
+            self._logfile = logfile
         
         def __call__(self, arg):
             if self._level > self._maxlevel:
@@ -21,14 +20,18 @@ if needsinitialization:
                 
             if self._level <= 0:
                 print str(arg)
-                print >> self._logfile, str(arg)
-                self._logfile.flush()
+                bu.mkdir(dirname(logfile))
+                logfile = file(self._logfile, 'a')
+                print >> logfile, str(arg)
+                logfile.close()
                 return
                 
             printstr = (self._level-1)*"  " + "-- " + str(arg)
             if self._level <= self._maxlevel-1:
-                print >> self._logfile, printstr
-                self._logfile.flush()
+                bu.mkdir(dirname(logfile))
+                logfile = file(self._logfile, 'a')
+                print >> logfile, printstr
+                logfile.close()
             print printstr
             
         def up(self, n=1):

diff --git a/blasbase.py b/blasbase.py
index b5d899c..2f2b84e 100644
--- a/blasbase.py
+++ b/blasbase.py
@@ -3,13 +3,20 @@ import subprocess as sp
 import shlex
 from os.path import join as pjoin
 
+avail1 = ['axpy', 'axpby', 'rot']
+avail2 = ['matrix_vector','atv','symv', 'ger', 'syr2',
+          'trisolve_vector']
+avail3 = ['matrix_matrix', 'aat', 'trisolve_matrix', 'trmm']
+
 class BLASBase(btlbase.BTLBase):
+    
+    avail1 = avail1
+    avail2 = avail2
+    avail3 = avail3
+    avail = avail1 + avail2 + avail3
+        
     def _initialize(self):
-        self.avail1 = ['axpy', 'axpby', 'rot']
-        self.avail2 = ['matrix_vector','atv','symv', 'ger', 'syr2',
-          'trisolve_vector']
-        self.avail3 = ['matrix_matrix', 'aat', 'trisolve_matrix', 'trmm']
-        self.avail = self.avail1 + self.avail2 + self.avail3
+        pass
     
     def _parse_args(self, args):     
         # Parse arguments

diff --git a/btlbase.py b/btlbase.py
index 5a7c555..4947555 100644
--- a/btlbase.py
+++ b/btlbase.py
@@ -7,10 +7,21 @@ from benchprint import Print
 from htmlreport import HTMLreport
 import basemodule
 import benchconfig as cfg
+from testdescr import testdescr
 
 
 class BTLBase(basemodule.BaseModule):
     
+    @classmethod
+    def printHelp(cls):
+        basemodule.BaseModule.printHelp()
+        
+        print "Tests:"
+        for i in cls.avail:
+            print "   " + i + ":"
+            print "     " + testdescr[i]
+            print
+    
     def _parse_args(self, args):
         # Generate list of dat (result) files, relative to the testdir
         self.files = [pjoin('bench_%s_%s.dat' % (op, self.libname)) \

diff --git a/lapack.py b/lapack.py
index 677603e..ae318fa 100644
--- a/lapack.py
+++ b/lapack.py
@@ -3,11 +3,14 @@ import subprocess as sp
 import shlex
 
 class Module(btlbase.BTLBase):
-    def _initialize(self):
-        self.libname = "lapack"
-        self.avail = ['general_solve', 'least_squares', 'lu_decomp', \
+    
+    libname = "lapack"
+    avail = ['general_solve', 'least_squares', 'lu_decomp', \
           'cholesky', 'qr_decomp', 'svd_decomp', 'syev', 'stev', 'symm_ev']
     
+    def _initialize(self):
+        pass
+    
     def _parse_args(self, args):     
         # Parse arguments
         tests = []

diff --git a/main.py b/main.py
index 0bd842f..4be9802 100755
--- a/main.py
+++ b/main.py
@@ -5,33 +5,89 @@ from os.path import join as pjoin
 import subprocess as sp
 
 def print_usage():
-    print "Usage: benchmarks [blas|cblas|lapack] file args"
+    print "Usage: numbench [blas|cblas|lapack|scalapack|fftw|metis|" + \
+    "blas_accuracy|lapack_accuracy] file args"
 
-if len(sys.argv) < 3:
-    print_usage()
-    exit(1)
-
-from PortageUtils import *
-import benchconfig as cfg
-from benchprint import Print
-
-
-# Import the desired module or print help and exit
-try:
-    cfg.inputfile = os.path.abspath(sys.argv[2])
-    os.chdir(cfg.scriptdir)
-    tmp = __import__(sys.argv[1], fromlist = ['Module'])
-    mod = tmp.Module(sys.argv[3:])
-    del tmp
-    cfg.makedirs()
-except ImportError as e:
-    print e
-    print_usage()
-    exit(1)
-except IndexError:
-    print_usage()
-    exit(1)
-  
+def print_help():
+    print "Usage: numbench module conffile [options]"
+    print "       numbench module [-h|--help]"
+    print
+    print "numbench is a tool for compiling and benchmarking numerical"
+    print "libraries. It is useful to find out the implementations of common"
+    print "libraries that run faster on the machine and are more accurate."
+    print "The script makes use of the portage features in order to download,"
+    print "compile, install and test the packages"
+    print
+    print
+    print "Modules:"
+    print "The following modules are available:"
+    print "   blas - Test BLAS implementations"
+    print "   cblas - Test CBLAS implementations"
+    print "   lapack - Test LAPACK implementations"
+    print "   scalapack - Test the ScaLAPACK library"
+    print "   blas_accuracy - Test BLAS implementations for accuracy"
+    print "   lapack_accuracy - Test LAPACK implementations for accuracy"
+    print "   fftw - Test the FFTW library"
+    print "   metis - Test the METIS tools"
+    print
+    print "More information about a module is available through the command:"
+    print "  numbench module --help"
+    print
+    print
+    print "Config file:"
+    print "In order to run a test, a configuration file has to be provided."
+    print "Each line of this file defines a package that is to be tested."
+    print "It is possible to test different versions of the same package, or"
+    print "even to test many times the same package with different compile-time"
+    print "environment; for each different version or environment, a different"
+    print "line has to be written."
+    print
+    print "Each line begins with an identification token of the test. This"
+    print "identification can contain any characters, but it is recommended"
+    print "that it only contains alphanumeric digits, the period . , the minus"
+    print "sign - and the underscore _ ."
+    print "After the identification word, the package has to be provided. The"
+    print "package specification should be fully provided, in the usual"
+    print "category/package-version[-revision] format. For instance"
+    print "sci-libs/lapack-reference-3.3.1-r1. However, the script will try to"
+    print "choose the best package in case of lacking information."
+    print "After the package, the environment has to be specified. In order"
+    print "to do that, the user has to use the KEY=VALUE format. If the value"
+    print "contains a whitespace, the single or double quoting marks have to be"
+    print "used. The following are two valid configuration lines that define"
+    print "the tests for the sci-libs/atlas package with different compilers"
+    print "and CFLAGS:"
+    print
+    print "atlas-gcc sci-libs/atlas-3.9.46 CC=gcc CFLAGS=-O2"
+    print "atlas-gcc-4.6.1 sci-libs/atlas-3.9.46 CC=gcc-4.6.1",
+    print "CFLAGS=\"-O3 -march=native\""
+    print
+    print "Variables that affect the emerge process, such as USE, can be used"
+    print "and are effective."
+    print "More configuration options are available. As each package can"
+    print "install many implementations of the same library (for instance, the"
+    print "sci-libs/atlas package installs the serial version and the"
+    print "parallelized version with threads or openmp, depending on the USE"
+    print "flags), each implementation is tested; but if you do not want to"
+    print "test a specific implementation, you can mask it by adding to the"
+    print "configuration line the string '-implementation' (without quoting"
+    print "marks); then the script will skip the implementation. The following"
+    print "is an example where the 32-bit implementations of the acml are"
+    print "skipped:"
+    print
+    print "acml sci-libs/acml-4.4.0 -acml32-gfortran -acml32-gfortran-openmp"
+    print
+    print "The last configuration option that can be used is for libraries that"
+    print "internally use other libraries. For example, most LAPACK"
+    print "implementations lie on BLAS and/or CBLAS implementations. It is"
+    print "possible to make the tested LAPACK implementation use a specific"
+    print "BLAS implementation through the 'blas:implementation' (without"
+    print "quotation marks) format. For instance, the following line"
+    print "defines a test where the atlas LAPACK implementation uses the"
+    print "openblas library as BLAS and CBLAS (openblas has to be installed for"
+    print "this to work):"
+    print
+    print "atlas sci-libs/atlas-3.9.46 blas:openblas"
     
 def tests_from_input(input):
     tests = {}
@@ -69,7 +125,46 @@ def tests_from_input(input):
         else:
             sys.stderr.write('Error: package ' + spl[1] + ' not found\n')
     return tests
+
+import benchconfig as cfg
+
+
+# Import the desired module or print help and exit
+try:
+
+    # Print main help
+    if (sys.argv[1] in ('-h', '--help')):
+        print_help()
+        exit(0);
     
+    cfg.modulename = sys.argv[1]
+    
+    # Print module help
+    if (sys.argv[2] in ('-h', '--help')):
+        os.chdir(cfg.scriptdir)
+        cfg.inputfile = ''
+        tmp = __import__(cfg.modulename, fromlist = ['Module'])
+        tmp.Module.printHelp()
+        exit(0)
+    
+    # Normal run: import module
+    cfg.inputfile = os.path.abspath(sys.argv[2])
+    os.chdir(cfg.scriptdir)
+    tmp = __import__(sys.argv[1], fromlist = ['Module'])
+    mod = tmp.Module(sys.argv[3:])
+    del tmp
+    cfg.makedirs()
+    
+except ImportError as e:
+    print e
+    print_usage()
+    exit(1)
+except IndexError:
+    print_usage()
+    exit(1)
+  
+from PortageUtils import *
+from benchprint import Print
 
 
 



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2011-08-14 12:35 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2011-08-14 12:35 UTC (permalink / raw
  To: gentoo-commits

commit:     1bd7537c4e72fc15f126cb35d3a84e4a87e6ad52
Author:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
AuthorDate: Sun Aug 14 11:15:00 2011 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Sun Aug 14 11:15:00 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=1bd7537c

Merge remote branch 'origin/master'


 basemodule.py  |   13 +++++
 benchconfig.py |    4 --
 benchprint.py  |   15 ++++--
 blasbase.py    |   17 +++++--
 btlbase.py     |   11 ++++
 lapack.py      |    9 ++-
 main.py        |  147 ++++++++++++++++++++++++++++++++++++++++++++++----------
 7 files changed, 172 insertions(+), 44 deletions(-)



^ permalink raw reply	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2011-08-14 12:59 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2011-08-14 12:59 UTC (permalink / raw
  To: gentoo-commits

commit:     e0b87487e792a28e25add7aaa04e797764d8303f
Author:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
AuthorDate: Sun Aug 14 12:59:10 2011 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Sun Aug 14 12:59:10 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=e0b87487

Solved bug in benchprint

---
 benchprint.py |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/benchprint.py b/benchprint.py
index 8c394e2..b37acbc 100644
--- a/benchprint.py
+++ b/benchprint.py
@@ -20,7 +20,7 @@ if needsinitialization:
                 
             if self._level <= 0:
                 print str(arg)
-                bu.mkdir(dirname(logfile))
+                bu.mkdir(dirname(self._logfile))
                 logfile = file(self._logfile, 'a')
                 print >> logfile, str(arg)
                 logfile.close()
@@ -28,7 +28,7 @@ if needsinitialization:
                 
             printstr = (self._level-1)*"  " + "-- " + str(arg)
             if self._level <= self._maxlevel-1:
-                bu.mkdir(dirname(logfile))
+                bu.mkdir(dirname(self._logfile))
                 logfile = file(self._logfile, 'a')
                 print >> logfile, printstr
                 logfile.close()



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2011-08-15 21:57 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2011-08-15 21:57 UTC (permalink / raw
  To: gentoo-commits

commit:     aa13341c53fb1fb13dda9bcabaa8e78f23c57a65
Author:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
AuthorDate: Mon Aug 15 21:57:04 2011 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Mon Aug 15 21:57:04 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=aa13341c

Added instructions and more samples.

---
 basemodule.py     |    4 +++
 benchprint.py     |    2 +-
 fftw.py           |    4 +++
 main.py           |   60 ++++++++++++++++++++++++++++++-----------------------
 metis.py          |    3 ++
 metistests.in     |    2 +
 scalapacktests.in |    2 +
 7 files changed, 50 insertions(+), 27 deletions(-)

diff --git a/basemodule.py b/basemodule.py
index 6185774..7eda37f 100644
--- a/basemodule.py
+++ b/basemodule.py
@@ -69,6 +69,10 @@ class BaseModule:
             return []
         else:
             return [i.split()[0] for i in output.split('\n')] 
+        
+    # Alternatives-2 version
+    def instructionsFor(self, impl):
+        Print("# eselect " + self.libname + " set " + impl)
            
     def getTest(self, root, impl, testdir, logdir):
         TestClass = self._testClass()

diff --git a/benchprint.py b/benchprint.py
index b37acbc..0836bbe 100644
--- a/benchprint.py
+++ b/benchprint.py
@@ -14,7 +14,7 @@ if needsinitialization:
             self._maxlevel = maxlevel
             self._logfile = logfile
         
-        def __call__(self, arg):
+        def __call__(self, arg='\n'):
             if self._level > self._maxlevel:
                 return
                 

diff --git a/fftw.py b/fftw.py
index dd2b6e8..1d97c02 100644
--- a/fftw.py
+++ b/fftw.py
@@ -32,6 +32,10 @@ class Module(btlbase.BTLBase):
     @staticmethod
     def get_impls(root):
         return ['fftw', 'fftw_threads']
+        
+    def instructionsFor(self, impl):
+        Print("Use command 'pkg-config --cflags --libs " + impl + \
+              "' when compiling")
     
     @staticmethod
     def _testClass():

diff --git a/main.py b/main.py
index 4be9802..539e4ff 100755
--- a/main.py
+++ b/main.py
@@ -114,15 +114,11 @@ def tests_from_input(input):
             else:
                 e_0, e_1 = var.split('=', 1)
                 env[e_0] = e_1
-        avail = available_packages(spl[1])
-        if len(avail) > 1:
-            for n,p in enumerate(avail):
-                tests[spl[0]+"_%02i"%n] = {'package':p , 'env':env, \
-                  'skip':skip, 'changes':change, 'descr':descr}
-        elif len(avail) == 1:
-            tests[spl[0]] = {'package':avail[0] , 'env':env, 'skip':skip, \
+        try:
+            avail = available_packages(spl[1])[-1]
+            tests[spl[0]] = {'package':avail , 'env':env, 'skip':skip, \
               'changes':change, 'descr':descr}
-        else:
+        except:
             sys.stderr.write('Error: package ' + spl[1] + ' not found\n')
     return tests
 
@@ -237,8 +233,11 @@ for tn,(name,test) in enumerate(cfg.tests.items(),1):
     Print.down()
     package = normalize_cpv(test['package'])
     archive = pjoin(pkgdir, package+".tbz2")
+    test['pkgdir'] = pkgdir
+    test['archive'] = archive
     if os.path.exists(archive):
         Print("Package already emerged - skipping")
+        test['emergesuccess'] = True
     else:
         try:
             # Emerge dependencies
@@ -256,26 +255,10 @@ for tn,(name,test) in enumerate(cfg.tests.items(),1):
               test['package'], env=test['env'], root=root, pkgdir=pkgdir, \
               logfile=logfile
               )
-#            archives.append(archive)
-            
-            # Unpack the archive onto the given root directory
-#            Print("Unpacking packages")
-#            logfile = pjoin(tlogdir, 'tar.log')
-#            Print("(Run 'tail -f " + logfile + "' on another terminal" \
-#              + " to see the progress)")
-#            logfile = file(logfile, 'w')
-#            tarcmds = [['tar', 'xvjf', a, '-C', root] for a in archives]
-#            os.path.exists(root) or os.makedirs(root)
-#            tarcmd = ['tar', 'xjf', archive, '-C', root]
-#            for c in tarcmds:
-#                logfile.write(' '.join(c) + '\n' + 80*'-' + '\n')
-#                tarp = sp.Popen(c, stdout=sp.PIPE, stderr=sp.STDOUT)
-#                logfile.write(tarp.communicate()[0])
-#                logfile.write('\n\n' + 80*'#' + '\n\n')
-#                if tarp.returncode != 0:
-#                    raise InstallException(tarcmd, logfile.name)
+            test['emergesuccess'] = True
                 
         except InstallException as e:
+            test['emergesuccess'] = False
             Print("Package %s failed to emerge" % package)
             Print("Error log: " + e.logfile)
             Print.up()
@@ -319,3 +302,28 @@ for (name,test) in cfg.tests.items():
             results[(name, impl)] = test['results'][impl]
 
 mod.save_results(results)
+
+
+Print._level = 0
+Print()
+# Print instructions
+for name,test in cfg.tests.items():
+    if not test['emergesuccess']:
+        continue
+    printstr = "Instructions for " + name + ":"
+    Print(printstr)
+    Print(len(printstr)*'-')
+    Print.down()
+    Print("# PKGDIR=" + test['pkgdir'] + " emerge -K '=" + \
+          normalize_cpv(test['package']) + "'")
+    try:
+        for impl in test['implementations']:
+            Print("Implementation " + impl + ":")
+            Print.down()
+            mod.instructionsFor(impl)
+            Print.up()
+    except:
+        pass
+        
+    Print.up()
+    Print()

diff --git a/metis.py b/metis.py
index c65d8a8..f3ad768 100644
--- a/metis.py
+++ b/metis.py
@@ -40,6 +40,9 @@ class Module(basemodule.BaseModule):
     @staticmethod
     def get_impls(*args, **kwargs):
         return ('metis',)
+        
+    def instructionsFor(self, impl):
+        Print("Nothing to do")
     
     def save_results(self, results):
         basemodule.BaseModule.save_results(self, results, 'loglog', 'Seconds')

diff --git a/metistests.in b/metistests.in
new file mode 100644
index 0000000..76de6bb
--- /dev/null
+++ b/metistests.in
@@ -0,0 +1,2 @@
+metis sci-libs/metis-4.0.1-r1 CFLAGS="-march=native"
+metis-O3 sci-libs/metis-4.0.1-r1 CFLAGS="-march=native -O3"
\ No newline at end of file

diff --git a/scalapacktests.in b/scalapacktests.in
new file mode 100644
index 0000000..e32c0fb
--- /dev/null
+++ b/scalapacktests.in
@@ -0,0 +1,2 @@
+reference sci-libs/scalapack-1.8.0 FFLAGS="-march=native"
+reference-O3 sci-libs/scalapack-1.8.0 FFLAGS="-march=native -O3"
\ No newline at end of file



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2011-08-16 23:38 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2011-08-16 23:38 UTC (permalink / raw
  To: gentoo-commits

commit:     ec981d6b55043f28b655ceade6eec2067aea7c51
Author:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
AuthorDate: Tue Aug 16 23:38:34 2011 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Tue Aug 16 23:38:34 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=ec981d6b

Added "executable".

---
 exec.py |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/exec.py b/exec.py
new file mode 100644
index 0000000..cb4d1eb
--- /dev/null
+++ b/exec.py
@@ -0,0 +1,2 @@
+#!/usr/bin/python2
+import numbench.main
\ No newline at end of file



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2011-08-22 18:15 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2011-08-22 18:15 UTC (permalink / raw
  To: gentoo-commits

commit:     c064d327bf11f84441ab0f65d07b735124a3e5b2
Author:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
AuthorDate: Mon Aug 22 18:14:41 2011 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Mon Aug 22 18:14:41 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=c064d327

Added COPYING.

---
 COPYING |  340 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 340 insertions(+), 0 deletions(-)

diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..486449c
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,340 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2012-02-24 17:22 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2012-02-24 17:22 UTC (permalink / raw
  To: gentoo-commits

commit:     07410451faf82fbb764d8889436919f99c03fa64
Author:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
AuthorDate: Fri Feb 24 18:20:53 2012 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Fri Feb 24 18:20:53 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=07410451

Merge remote branch 'origin/master' into HEAD

Conflicts:
	numbench/report.py


 blastests.xml          |   48 ++++++++++++++++++++++++++++--------------------
 numbench/htmlreport.py |    9 ++++++---
 numbench/main.py       |    3 +++
 numbench/report.py     |    2 +-
 numbench/utils/btl.py  |    2 +-
 5 files changed, 39 insertions(+), 25 deletions(-)

diff --cc blastests.xml
index d01615b,c8f4379..b1cc327
--- a/blastests.xml
+++ b/blastests.xml
@@@ -7,9 -5,7 +7,8 @@@
              <var name="FFLAGS">-O3</var>
          </emergeenv>
      </test>
 +-->
  
- <!--
      <test id="atlas">
          <pkg>sci-libs/atlas-3.9.67</pkg>
          <emergeenv>
diff --cc numbench/report.py
index 75be5c4,e3b4f73..2d8d384
--- a/numbench/report.py
+++ b/numbench/report.py
@@@ -16,8 -16,8 +16,8 @@@
  # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  #
  from os.path import join as pjoin, basename
 -from shutil import copy as fcopy, copytree
 -import numpy as np
 +import sys, numpy as np
- from shutil import rmtree
++from shutil import copy as fcopy, copytree, rmtree
  
  import benchconfig as cfg
  import benchutils as bu



^ permalink raw reply	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2012-02-28 19:20 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2012-02-28 19:20 UTC (permalink / raw
  To: gentoo-commits

commit:     e45796c5cf1111c0011046e0abaa5894cedda1af
Author:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
AuthorDate: Tue Feb 28 19:19:22 2012 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Tue Feb 28 19:19:22 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=e45796c5

Merge branch 'master' of git://git.overlays.gentoo.org/proj/auto-numerical-bench


 cblastests.in               |   12 --
 fftwtests.in                |    5 -
 lapacktests.in              |    9 --
 numbench/basemodule.py      |  287 -------------------------------------------
 numbench/benchchilds.py     |   30 -----
 numbench/blas.py            |   23 ----
 numbench/blas_accuracy.py   |  164 ------------------------
 numbench/blasbase.py        |   82 ------------
 numbench/btlbase.py         |  194 -----------------------------
 numbench/cblas.py           |   23 ----
 numbench/fftw.py            |   86 -------------
 numbench/lapack.py          |   70 -----------
 numbench/lapack_accuracy.py |  169 -------------------------
 numbench/metis.py           |  184 ---------------------------
 numbench/scalapack.py       |   88 -------------
 15 files changed, 0 insertions(+), 1426 deletions(-)



^ permalink raw reply	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2012-03-05 15:48 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2012-03-05 15:48 UTC (permalink / raw
  To: gentoo-commits

commit:     e9e071f6f4e35f8184cee5daae7466f1d62ce349
Author:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
AuthorDate: Mon Mar  5 15:46:27 2012 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Mon Mar  5 15:46:27 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=e9e071f6

Merge remote branch 'origin/master'


 numbench/benchconfig.py                 |    2 +-
 numbench/modules/blas.py                |    4 +-
 numbench/modules/cblas.py               |    4 +-
 numbench/modules/fftw.py                |   70 +++++++++++++++++++++++++++++++
 numbench/modules/internal/btlBase.py    |   12 +++---
 numbench/modules/internal/lapackBase.py |    4 +-
 numbench/modules/lapack.py              |    4 +-
 numbench/utils/portageutils.py          |    2 +-
 samples/fftwtests.xml                   |   31 ++++++++++++++
 9 files changed, 117 insertions(+), 16 deletions(-)



^ permalink raw reply	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2012-04-09 22:58 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2012-04-09 22:58 UTC (permalink / raw
  To: gentoo-commits

commit:     dc982ab1bbeb7053f865af8ef5f2af929b94a959
Author:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
AuthorDate: Mon Apr  9 22:56:01 2012 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Mon Apr  9 22:56:01 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=dc982ab1

Updated setup.py.

---
 setup.py |   23 +++++++++++++++++++----
 1 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/setup.py b/setup.py
index d850b17..4f366cf 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 
 #=====================================================
-# Copyright (C) 2011 Andrea Arteaga <andyspiros@gmail.com>
+# Copyright (C) 2011-2012 Andrea Arteaga <andyspiros@gmail.com>
 #=====================================================
 #
 # This program is free software; you can redistribute it and/or
@@ -18,13 +18,28 @@
 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
 
+import os
 from distutils.core import setup
 
+def recursiveGetPackage(pkg, directory):
+    pkg += os.path.basename(directory)
+    dirs = [os.path.join(directory, i) for i in os.listdir(directory)]
+    dirs = [i for i in dirs if os.path.isdir(i)]
+    res = [pkg]
+    for i in dirs:
+        res += recursiveGetPackage(pkg+'.', i)
+    return res
+
+setupdir = os.path.dirname(os.path.abspath(__file__))
+numdir = os.path.join(setupdir, 'numbench')
+
+
 setup(name='Numbench',
       version='1.0',
       description='Numerical benchmarks for Gentoo',
       author='Andrea Arteaga',
       author_email='andyspiros@gmail.com',
-      url='http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git',
-      packages=['numbench'],
-     )
\ No newline at end of file
+      url='http://soc.dev.gentoo.org/~spiros',
+      packages=recursiveGetPackage('', numdir),
+     )
+



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2012-08-04  1:11 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2012-08-04  1:11 UTC (permalink / raw
  To: gentoo-commits

commit:     de2a152abb7cdc6b4e519d702c36dd9d34f1e66f
Author:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
AuthorDate: Sat Aug  4 01:05:35 2012 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Sat Aug  4 01:05:35 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=de2a152a

Merge branch 'btloutput'



^ permalink raw reply	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2012-08-11 18:00 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2012-08-11 18:00 UTC (permalink / raw
  To: gentoo-commits

commit:     6041f0367d053ef780824e61368d032ba2ef2dd4
Author:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
AuthorDate: Sat Aug 11 20:01:21 2012 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Sat Aug 11 20:01:21 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=6041f036

Merge branch 'master' of ssh://git.overlays.gentoo.org/proj/auto-numerical-bench

Conflicts:
	samples/lapacktests.xml



^ permalink raw reply	[flat|nested] 24+ messages in thread

* [gentoo-commits] proj/auto-numerical-bench:master commit in: /
@ 2012-09-02 11:41 Andrea Arteaga
  0 siblings, 0 replies; 24+ messages in thread
From: Andrea Arteaga @ 2012-09-02 11:41 UTC (permalink / raw
  To: gentoo-commits

commit:     e520e72d3dfdf950f9bbd5f192f38dd2170ff3de
Author:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
AuthorDate: Sun Sep  2 11:41:44 2012 +0000
Commit:     Andrea Arteaga <andyspiros <AT> gmail <DOT> com>
CommitDate: Sun Sep  2 11:41:44 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/auto-numerical-bench.git;a=commit;h=e520e72d

Merge branch 'master' of ssh://git.overlays.gentoo.org/proj/auto-numerical-bench


 samples/blastests.xml      |   82 +++++++++++++++++++----------------
 samples/cblastests.xml     |  103 +++++++++++++++++--------------------------
 samples/fftwtests.xml      |   69 ++++++++++++++++-------------
 samples/lapacketests.xml   |   45 +++++++++++---------
 samples/lapacktests.xml    |    5 +-
 samples/openblas.xml       |   34 +++++++-------
 samples/scalapacktests.xml |   39 +++++++++++------
 7 files changed, 192 insertions(+), 185 deletions(-)


^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2012-09-02 11:42 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-02 11:41 [gentoo-commits] proj/auto-numerical-bench:master commit in: / Andrea Arteaga
  -- strict thread matches above, loose matches on Subject: below --
2012-08-11 18:00 Andrea Arteaga
2012-08-04  1:11 Andrea Arteaga
2012-04-09 22:58 Andrea Arteaga
2012-03-05 15:48 Andrea Arteaga
2012-02-28 19:20 Andrea Arteaga
2012-02-24 17:22 Andrea Arteaga
2011-08-22 18:15 Andrea Arteaga
2011-08-16 23:38 Andrea Arteaga
2011-08-15 21:57 Andrea Arteaga
2011-08-14 12:59 Andrea Arteaga
2011-08-14 12:35 Andrea Arteaga
2011-08-12 22:56 Andrea Arteaga
2011-08-09  0:00 Andrea Arteaga
2011-08-09  0:00 Andrea Arteaga
2011-07-17  0:21 Andrea Arteaga
2011-07-13 21:48 Andrea Arteaga
2011-06-15 23:25 Andrea Arteaga
2011-06-15 12:56 Andrea Arteaga
2011-06-13 23:53 Andrea Arteaga
2011-06-13 14:12 Andrea Arteaga
2011-06-10  1:02 Andrea Arteaga
2011-06-10  0:52 Andrea Arteaga
2011-06-06 20:05 Andrea Arteaga

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox