From ab9547c7a6e7919b23089fa49ee22310e93c1b3d Mon Sep 17 00:00:00 2001
From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de>
Date: Tue, 6 Dec 2016 15:10:19 +0100
Subject: [PATCH] Simplify invocation of vectorization transformation

---
 .../loopy/transformations/collect_rotate.py   | 20 ++++++-------------
 python/dune/perftool/pdelab/localoperator.py  | 12 +++--------
 2 files changed, 9 insertions(+), 23 deletions(-)

diff --git a/python/dune/perftool/loopy/transformations/collect_rotate.py b/python/dune/perftool/loopy/transformations/collect_rotate.py
index d3d35c5f..c4e901e4 100644
--- a/python/dune/perftool/loopy/transformations/collect_rotate.py
+++ b/python/dune/perftool/loopy/transformations/collect_rotate.py
@@ -6,6 +6,7 @@ from dune.perftool.loopy.transformations.vectorview import (add_temporary_with_v
                                                             add_vector_view,
                                                             get_vector_view_name,
                                                             )
+from dune.perftool.sumfact.quadrature import quadrature_inames
 from dune.perftool.tools import get_pymbolic_basename
 
 from loopy.kernel.creation import parse_domains
@@ -20,23 +21,14 @@ import loopy as lp
 import numpy as np
 
 
-def collect_vector_data_rotate(knl, insns, inames):
+def collect_vector_data_rotate(knl):
     #
     # Process/Assert/Standardize the input
     #
-
-    # inames input -> tuple
-    if isinstance(inames, str):
-        inames = inames.split(",")
-    inames = tuple(i.strip() for i in inames)
-
-    # insns -> list of Instruction instances
-    if isinstance(insns, lp.match.MatchExpressionBase):
-        insns = lp.find_instructions(knl, insns)
-    else:
-        if isinstance(insns, str):
-            insns = [i.strip() for i in insns.split(",")]
-        insns = [knl.id_to_insn[i] for i in insns]
+    insns = [i for i in lp.find_instructions(knl, lp.match.Tagged("quadvec"))]
+    if not insns:
+        return knl
+    inames = quadrature_inames()
 
     # Analyse the inames of the given instructions and identify inames
     # that they all have in common. Those inames will also be iname dependencies
diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py
index 014b84f5..abddb94c 100644
--- a/python/dune/perftool/pdelab/localoperator.py
+++ b/python/dune/perftool/pdelab/localoperator.py
@@ -543,16 +543,10 @@ def extract_kernel_from_cache(tag):
     # Maybe apply vectorization strategies
     if get_option("vectorize_quad"):
         if get_option("sumfact"):
-            # Vectorization of the quadrature loop
-            insns = [i.id for i in lp.find_instructions(kernel, lp.match.Tagged("quadvec"))]
-            if insns:
-                from dune.perftool.sumfact.quadrature import quadrature_inames
-                inames = quadrature_inames()
-
-                from dune.perftool.loopy.transformations.collect_rotate import collect_vector_data_rotate
-                kernel = collect_vector_data_rotate(kernel, insns, inames)
+            from dune.perftool.loopy.transformations.collect_rotate import collect_vector_data_rotate
+            kernel = collect_vector_data_rotate(kernel)
         else:
-            raise NotImplementedError("Only vectorizing sumfactoized code right now!")
+            raise NotImplementedError("Only vectorizing sumfactorized code right now!")
 
     # Now add the preambles to the kernel
     preambles = [(i, p) for i, p in enumerate(retrieve_cache_items("{} and preamble".format(tag)))]
-- 
GitLab