From 0fa9b6c69582e49eee71d11adea86615ec1ef26c Mon Sep 17 00:00:00 2001
From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de>
Date: Mon, 3 Dec 2018 09:56:15 +0100
Subject: [PATCH] Correctly skip vectorization in case boundary is not sumfact

---
 python/dune/codegen/pdelab/localoperator.py  | 10 ++++------
 python/dune/codegen/sumfact/vectorization.py |  2 +-
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/python/dune/codegen/pdelab/localoperator.py b/python/dune/codegen/pdelab/localoperator.py
index c598232f..3b8b8f9c 100644
--- a/python/dune/codegen/pdelab/localoperator.py
+++ b/python/dune/codegen/pdelab/localoperator.py
@@ -564,12 +564,10 @@ def extract_kernel_from_cache(tag, name, signature, wrap_in_cgen=True, add_timin
     kernel = heuristic_duplication(kernel)
 
     # Maybe apply vectorization strategies
-    if get_form_option("vectorization_quadloop"):
-        if get_form_option("sumfact"):
-            from dune.codegen.loopy.transformations.vectorize_quad import vectorize_quadrature_loop
-            kernel = vectorize_quadrature_loop(kernel)
-        else:
-            raise NotImplementedError("Only vectorizing sumfactorized code right now!")
+    if get_form_option("vectorization_quadloop") and get_form_option("sumfact"):
+        from dune.codegen.loopy.transformations.vectorize_quad import vectorize_quadrature_loop
+        kernel = vectorize_quadrature_loop(kernel)
+
     if get_form_option("vectorization_blockstructured"):
         from dune.codegen.blockstructured.vectorization import vectorize_micro_elements
         kernel = vectorize_micro_elements(kernel)
diff --git a/python/dune/codegen/sumfact/vectorization.py b/python/dune/codegen/sumfact/vectorization.py
index 38996a90..674078fd 100644
--- a/python/dune/codegen/sumfact/vectorization.py
+++ b/python/dune/codegen/sumfact/vectorization.py
@@ -273,7 +273,7 @@ def decide_vectorization_strategy():
     all_sumfacts, active_sumfacts, inactive_sumfacts = filter_active_inactive_sumfacts()
 
     # If no vectorization is needed, abort now
-    if get_form_option("vectorization_strategy") == "none" or (get_global_context_value("form_type") == "jacobian" and not get_form_option("vectorization_jacobians")):
+    if get_form_option("vectorization_strategy") == "none" or (get_global_context_value("form_type") == "jacobian" and not get_form_option("vectorization_jacobians")) or not get_form_option("sumfact"):
         for sf in all_sumfacts:
             _cache_vectorization_info(sf, sf.copy(buffer=get_counted_variable("buffer")))
         return
-- 
GitLab