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