From 827977d9397e154fc9e9e9463110b41fe6752874 Mon Sep 17 00:00:00 2001
From: Isuru Fernando <isuruf@gmail.com>
Date: Mon, 27 Aug 2018 11:20:27 -0500
Subject: [PATCH] get flop count after doing cse and killing trivial
 assignments

---
 benchmarks/bench_translations.py | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/benchmarks/bench_translations.py b/benchmarks/bench_translations.py
index 8578a4b8..d6e6ee5d 100644
--- a/benchmarks/bench_translations.py
+++ b/benchmarks/bench_translations.py
@@ -22,8 +22,12 @@ import logging
 logger = logging.getLogger(__name__)
 
 import sympy
-import sumpy.symbolic as sym
+import six
+import pymbolic.mapper.flop_counter
 
+import sumpy.symbolic as sym
+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):
@@ -66,6 +70,13 @@ class TranslationSuite:
         tgt_rscale = sym.Symbol("tgt_rscale")
         result = l_expn.translate_from(m_expn, src_coeff_exprs, src_rscale,
                                        dvec, tgt_rscale)
-        return sympy.count_ops(result)
+        sac = SymbolicAssignmentCollection()
+        for i, expr in enumerate(result):
+            sac.assign_unique("coeff%d" % i, expr)
+        sac.run_global_cse()
+        insns = to_loopy_insns(six.iteritems(sac.assignments))
+        counter = pymbolic.mapper.flop_counter.FlopCounter()
+
+        return sum([counter.rec(insn.expression) for insn in insns])
 
     track_m2l_op_count.unit = "ops"
-- 
GitLab