diff --git a/python/dune/perftool/loopy/transformations/vectorview.py b/python/dune/perftool/loopy/transformations/vectorview.py index 0fa7ff09d8978f2d9f0176698bde6745c8d19b51..5ff07aeb79c49171f245f31ee5f9a306fc3a83a6 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 c16057b7c361584d04edb59132f0742ecaa38226..87331320981ca8f7419f32b48609e6dc465bbfff 160000 --- a/python/loopy +++ b/python/loopy @@ -1 +1 @@ -Subproject commit c16057b7c361584d04edb59132f0742ecaa38226 +Subproject commit 87331320981ca8f7419f32b48609e6dc465bbfff