diff --git a/python/dune/perftool/options.py b/python/dune/perftool/options.py index 7853bb547268bf587aa56fa4aaaa2fb1896508f4..a30ec5f71c74dc1c60d2f4da731adf91a49cd527 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 788229347bd1f2d6a1caaadf863a8d353213be80..3e79419dcb97777c86a130deb3f0b82b84d4c950 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