From 8c6315f38ab3cdbabcac0d882e6271de5601589b Mon Sep 17 00:00:00 2001
From: Isuru Fernando <isuruf@gmail.com>
Date: Mon, 27 Aug 2018 13:16:16 -0500
Subject: [PATCH] Add different dims, orders for benchmarks

---
 benchmarks/bench_translations.py | 96 +++++++++++++++++++++++++-------
 1 file changed, 77 insertions(+), 19 deletions(-)

diff --git a/benchmarks/bench_translations.py b/benchmarks/bench_translations.py
index 98ab2325..539b09b1 100644
--- a/benchmarks/bench_translations.py
+++ b/benchmarks/bench_translations.py
@@ -30,38 +30,39 @@ from sumpy.assignment_collection import SymbolicAssignmentCollection
 from sumpy.codegen import to_loopy_insns
 
 class Param:
-    def __init__(self, knl, local_expn_class, mpole_expn_class):
-        self.knl = knl
-        self.local_expn_class = local_expn_class
-        self.mpole_expn_class = mpole_expn_class
+    def __init__(self, dim, order):
+        self.dim = dim
+        self.order = order
 
     def __repr__(self):
-        return "{}_{}_{}".format(self.knl, self.local_expn_class.__name__, self.mpole_expn_class.__name__)
+        return "{}D_order_{}".format(self.dim, self.order)
 
 
-class TranslationSuite:
+class TranslationBenchmarkSuite:
 
     params = [
-        Param(LaplaceKernel(2), VolumeTaylorLocalExpansion, VolumeTaylorMultipoleExpansion),
-        Param(LaplaceKernel(2), LaplaceConformingVolumeTaylorLocalExpansion,
-         LaplaceConformingVolumeTaylorMultipoleExpansion),
-        Param(HelmholtzKernel(2), VolumeTaylorLocalExpansion, VolumeTaylorMultipoleExpansion),
-        Param(HelmholtzKernel(2), HelmholtzConformingVolumeTaylorLocalExpansion,
-         HelmholtzConformingVolumeTaylorMultipoleExpansion),
-        Param(HelmholtzKernel(2), H2DLocalExpansion, H2DMultipoleExpansion)
+        Param(2, 10),
+        Param(2, 15),
+        Param(2, 20),
+        Param(3, 5),
+        Param(3, 10),
     ]
-    param_names = ['translation']
+
+    param_names = ['order']
 
     def setup(self, param):
         logging.basicConfig(level=logging.INFO)
-        self.ctx = cl.create_some_context()
-        self.queue = cl.CommandQueue(self.ctx)
         np.random.seed(17)
+        if self.__class__ == TranslationBenchmarkSuite:
+            raise NotImplementedError
+        mpole_expn_class = self.mpole_expn_class
+        if param.order == 3 and H2DMultipoleExpansion == mpole_expn_class:
+            raise NotImplementedError
 
     def track_m2l_op_count(self, param):
-        knl = param.knl
-        m_expn = param.mpole_expn_class(knl, order=3)
-        l_expn = param.local_expn_class(knl, order=3)
+        knl = self.knl(param.dim)
+        m_expn = self.mpole_expn_class(knl, order=param.order)
+        l_expn = self.local_expn_class(knl, order=param.order)
 
         src_coeff_exprs = [sym.Symbol("src_coeff%d" % i)
                 for i in range(len(m_expn))]
@@ -80,3 +81,60 @@ class TranslationSuite:
         return sum([counter.rec(insn.expression)+1 for insn in insns])
 
     track_m2l_op_count.unit = "ops"
+
+
+class LaplaceVolumeTaylorTranslation(TranslationBenchmarkSuite):
+    knl = LaplaceKernel
+    local_expn_class = VolumeTaylorLocalExpansion
+    mpole_expn_class = VolumeTaylorMultipoleExpansion
+    params = [
+        Param(2, 10),
+        Param(3, 5),
+    ]
+
+
+class LaplaceConformingVolumeTaylorTranslation(TranslationBenchmarkSuite):
+    knl = LaplaceKernel
+    local_expn_class = LaplaceConformingVolumeTaylorLocalExpansion
+    mpole_expn_class = LaplaceConformingVolumeTaylorMultipoleExpansion
+    params = [
+        Param(2, 10),
+        Param(2, 15),
+        Param(2, 20),
+        Param(3, 5),
+    ]
+
+
+class HelmholtzVolumeTaylorTranslation(TranslationBenchmarkSuite):
+    knl = HelmholtzKernel
+    local_expn_class = VolumeTaylorLocalExpansion
+    mpole_expn_class = VolumeTaylorMultipoleExpansion
+    params = [
+        Param(2, 10),
+        Param(3, 5),
+    ]
+
+
+class HelmholtzConformingVolumeTaylorTranslation(TranslationBenchmarkSuite):
+    knl = HelmholtzKernel
+    local_expn_class = HelmholtzConformingVolumeTaylorLocalExpansion
+    mpole_expn_class = HelmholtzConformingVolumeTaylorMultipoleExpansion
+    params = [
+        Param(2, 10),
+        Param(2, 15),
+        Param(2, 20),
+        Param(3, 5),
+    ]
+
+
+class Helmholtz2DTranslation(TranslationBenchmarkSuite):
+    knl = HelmholtzKernel
+    local_expn_class = H2DLocalExpansion
+    mpole_expn_class = H2DMultipoleExpansion
+    params = [
+        Param(2, 10),
+        Param(2, 15),
+        Param(2, 20),
+    ]
+
+
-- 
GitLab