diff --git a/python/dune/perftool/sumfact/vectorization.py b/python/dune/perftool/sumfact/vectorization.py index 14b9ba4de00eb1e7730ae3daf107ce9e6a762631..0b6c9494d0dc4780cf4202a093f39dafa164b656 100644 --- a/python/dune/perftool/sumfact/vectorization.py +++ b/python/dune/perftool/sumfact/vectorization.py @@ -169,11 +169,14 @@ def short_stringify_vectorization_strategy(strategy): stage1 = [] stage3 = [] + keys = set(sf.cache_key for sf in strategy.values()) for kernel in strategy.values(): - if kernel.stage == 1: - stage1.append(_short(kernel)) - if kernel.stage == 3: - stage3.append(_short(kernel)) + if kernel.cache_key in keys: + keys.discard(kernel.cache_key) + if kernel.stage == 1: + stage1.append(_short(kernel)) + if kernel.stage == 3: + stage3.append(_short(kernel)) return "m0={};S1:{};S3:{}".format(qp[0], "|".join(stage1), "|".join(stage3)) @@ -267,6 +270,7 @@ def level1_optimal_vectorization_strategy(sumfacts, width): cost = strategy_cost((qp, optimal_strategies[qp])) print("The target cost was: {}".format(get_form_option("vectorization_target"))) print("The achieved cost was: {}".format(cost)) + print("The optimal cost would be: {}".format(strategy_cost(level1_optimal_vectorization_strategy(sumfacts, width)))) set_form_option("vectorization_strategy", "target") print("The score in 'target' logic was: {}".format(strategy_cost((qp, optimal_strategies[qp]))))