From 0aa4edf0f6f83a8040571c5521f87b3add92cf93 Mon Sep 17 00:00:00 2001
From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de>
Date: Thu, 22 Dec 2016 14:21:08 +0100
Subject: [PATCH] Fix

---
 .../dune/perftool/loopy/transformations/vectorview.py | 11 ++++++++++-
 python/loopy                                          |  2 +-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/python/dune/perftool/loopy/transformations/vectorview.py b/python/dune/perftool/loopy/transformations/vectorview.py
index 0fa7ff09..5ff07aeb 100644
--- a/python/dune/perftool/loopy/transformations/vectorview.py
+++ b/python/dune/perftool/loopy/transformations/vectorview.py
@@ -9,6 +9,7 @@ from dune.perftool.loopy.vcl import get_vcl_type_size
 import loopy as lp
 import numpy as np
 import pymbolic.primitives as prim
+import pytools as pt
 
 
 def get_vector_view_name(tmpname):
@@ -37,8 +38,16 @@ def add_vector_view(knl, tmpname):
         bsname = temp.base_storage
 
     # Determine the shape by dividing total size by vector size
+    # Also apply the padding we need for rotation
+    # TODO: *Only* apply this padding if really needed (a bit hard to figure out)
     vecsize = get_vcl_type_size(temp.dtype)
-    size = prim.FloorDiv(prim.Product(temp.shape), vecsize)
+    if all(isinstance(s, int) for s in temp.shape):
+        size = pt.product(temp.shape) // vecsize
+        if size % vecsize != 0:
+            size = (size // vecsize + 1) * vecsize
+    else:
+        size = prim.FloorDiv(prim.Product(temp.shape), vecsize)
+        size = (size // vecsize + 1) * vecsize
 
     # Now add a vector view temporary
     vecname = tmpname + "_vec"
diff --git a/python/loopy b/python/loopy
index c16057b7..87331320 160000
--- a/python/loopy
+++ b/python/loopy
@@ -1 +1 @@
-Subproject commit c16057b7c361584d04edb59132f0742ecaa38226
+Subproject commit 87331320981ca8f7419f32b48609e6dc465bbfff
-- 
GitLab