From f0c48b5b3dac36e5e17e3715cc4990453b16f3d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20He=C3=9F?= <rene.hess@iwr.uni-heidelberg.de> Date: Fri, 15 Jun 2018 13:57:22 +0200 Subject: [PATCH] Add option to throw error if program was not fully vectorized --- python/dune/perftool/options.py | 1 + python/dune/perftool/sumfact/vectorization.py | 3 +++ 2 files changed, 4 insertions(+) diff --git a/python/dune/perftool/options.py b/python/dune/perftool/options.py index 7853bb54..a30ec5f7 100644 --- a/python/dune/perftool/options.py +++ b/python/dune/perftool/options.py @@ -80,6 +80,7 @@ class PerftoolFormOptionsArray(ImmutableRecord): sumfact = PerftoolOption(default=False, helpstr="Use sumfactorization") vectorization_quadloop = PerftoolOption(default=False, helpstr="whether to generate code with explicit vectorization") vectorization_strategy = PerftoolOption(default="none", helpstr="The identifier of the vectorization cost model. Possible values: none|explicit|model") + vectorization_not_fully_vectorized_error = PerftoolOption(default=False, helpstr="throw an error if nonquadloop vectorization did not fully vectorize") vectorization_horizontal = PerftoolOption(default=None, helpstr="an explicit value for horizontal vectorization read by the 'explicit' strategy") vectorization_vertical = PerftoolOption(default=None, helpstr="an explicit value for vertical vectorization read by the 'explicit' strategy") vectorization_padding = PerftoolOption(default=None, helpstr="an explicit value for the allowed padding in vectorization") diff --git a/python/dune/perftool/sumfact/vectorization.py b/python/dune/perftool/sumfact/vectorization.py index 78822934..3e79419d 100644 --- a/python/dune/perftool/sumfact/vectorization.py +++ b/python/dune/perftool/sumfact/vectorization.py @@ -32,6 +32,9 @@ import math @generator_factory(item_tags=("vecinfo", "dryrundata"), cache_key_generator=lambda o, n: o) def _cache_vectorization_info(old, new): + if get_form_option("vectorization_not_fully_vectorized_error"): + if not isinstance(new, VectorizedSumfactKernel): + raise PerftoolVectorizationError("Did not fully vectorize!") if new is None: raise PerftoolVectorizationError("Vectorization info for sum factorization kernel was not gathered correctly!") return new -- GitLab