From acf1d5eec0d7de02e522db6ec783448395a241de Mon Sep 17 00:00:00 2001
From: Jean-Matthieu Etancelin <jean-matthieu.etancelin@imag.fr>
Date: Tue, 19 Feb 2013 07:42:58 +0000
Subject: [PATCH]

---
 HySoP/hysop/tools/kernel_benchmark.py | 31 +++++++++++++++++++--------
 1 file changed, 22 insertions(+), 9 deletions(-)

diff --git a/HySoP/hysop/tools/kernel_benchmark.py b/HySoP/hysop/tools/kernel_benchmark.py
index 9adea3861..47f7a73bd 100644
--- a/HySoP/hysop/tools/kernel_benchmark.py
+++ b/HySoP/hysop/tools/kernel_benchmark.py
@@ -14,7 +14,7 @@ class BenchmarkSuite:
     def __init__(self, sizes, kernel_name,
                  versions, configs, test=False, true_res=None, arg_to_test=0,
                  inputs={}, file_name="Benchmarks_data",
-                 precision='SP'):
+                 precision='SP', nb_run=20):
         """
         Creates a benchmak suite, that consists in a list of Benchmark.
 
@@ -35,7 +35,9 @@ class BenchmarkSuite:
         If no such file, a new database is created.
         """
         self.pickle_file_name = file_name
-        if precision == 'DP':
+        if precision == 'SP':
+            self.pickle_file_name += '_SP'
+        else:
             self.pickle_file_name += '_DP'
         self.sizes = sizes
         self.versions = versions
@@ -46,6 +48,7 @@ class BenchmarkSuite:
         self.arg_to_test = arg_to_test
         self.kernel_name = kernel_name
         self.precision = precision
+        self.nb_run = nb_run
 
         if not self.test:
             try:
@@ -71,9 +74,14 @@ class BenchmarkSuite:
         for v in self.versions:
             if not v[1] in self.timings[self.kernel_name].keys():
                 self.timings[self.kernel_name][v[1]] = {}
-            for c in self.configs[v[1]]:
-                if not c[2] in self.timings[self.kernel_name][v[1]].keys():
-                    self.timings[self.kernel_name][v[1]][c[2]] = {}
+            if isinstance(self.configs, dict):
+                for c in self.configs[v[1]]:
+                    if not c[2] in self.timings[self.kernel_name][v[1]].keys():
+                        self.timings[self.kernel_name][v[1]][c[2]] = {}
+            else:
+                for c in self.configs:
+                    if not c[2] in self.timings[self.kernel_name][v[1]].keys():
+                        self.timings[self.kernel_name][v[1]][c[2]] = {}
 
     def launch(self):
         """
@@ -86,7 +94,11 @@ class BenchmarkSuite:
             self.true_res = {}
             self.compute_true_res(self.sizes, self.true_res, self.inputs)
         for v in self.versions:
-            for conf in self.configs[v[1]]:
+            if isinstance(self.configs, dict):
+                conf_list = self.configs[v[1]]
+            else:
+                conf_list = self.configs
+            for conf in conf_list:
                 try:
                     allowed_size = conf[3]
                 except IndexError:
@@ -95,13 +107,14 @@ class BenchmarkSuite:
                     b = Benchmark(v[0], v[1], self.sizes,
                                   lambda s: "-D WIDTH=" + str(s[0]) + conf[0](s),
                                   inputs=self.inputs, allowed_size=allowed_size,
-                                  precision=self.precision)
+                                  precision=self.precision, nb_run=self.nb_run)
                 else:
                     b = Benchmark(v[0], v[1], self.sizes,
                                   lambda s: "-D WIDTH=" + str(s[0]) + conf[0],
                                   inputs=self.inputs, allowed_size=allowed_size,
-                                  precision=self.precision)
+                                  precision=self.precision, nb_run=self.nb_run)
                 b.kernelSetup = conf[1]
+                print self.kernel_name, v[1], conf[2]
                 if self.test:
                     b.test(self.true_res, self.arg_to_test)
                 else:
@@ -290,7 +303,7 @@ class Benchmark:
         if self.code is not None:
             for size in self.sizes:
                 if self.is_size_allowed is None or self.is_size_allowed(size):
-                    build_options = " -cl-opt-disable"
+                    build_options = ""  # " -cl-opt-disable"
                     if self.correctlyroundeddividesqrt:
                         build_options += " -cl-fp32-correctly-rounded-divide-sqrt "
                     if self.precision == 'SP':
-- 
GitLab