From 1c3a8a27ee5df46176bbdcd87da3f6d4e2956681 Mon Sep 17 00:00:00 2001 From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de> Date: Fri, 24 Aug 2018 11:57:09 +0200 Subject: [PATCH] Write a short string identifier of the vectorization strategy. --- python/dune/perftool/sumfact/vectorization.py | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/python/dune/perftool/sumfact/vectorization.py b/python/dune/perftool/sumfact/vectorization.py index 6e228abe..d9ca54c8 100644 --- a/python/dune/perftool/sumfact/vectorization.py +++ b/python/dune/perftool/sumfact/vectorization.py @@ -155,6 +155,29 @@ def stringify_vectorization_strategy(strategy): return result +def short_stringify_vectorization_strategy(strategy): + """ A short string decribing the vectorization strategy. This is used + in costmodel validation plots to describe what a data point does + """ + qp, strategy = strategy + + def _short(k): + if isinstance(k, VectorizedSumfactKernel): + return str(k.horizontal_width) + else: + return "scalar" + + stage1 = [] + stage3 = [] + for kernel in strategy.values(): + 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)) + + def filter_active_inactive_sumfacts(): # Retrieve all sum factorization kernels for stage 1 and 3 from dune.perftool.generation import retrieve_cache_items @@ -261,7 +284,7 @@ def level1_optimal_vectorization_strategy(sumfacts, width): # TODO: Depending on the number of samples, we might need a file lock here. with open(filename, 'a') as f: - f.write("{} {}".format(identifier, cost)) + f.write(" ".join((identifier, str(cost), short_stringify_vectorization_strategy((qp, optimal_strategies[qp])))) + "\n") return qp, optimal_strategies[qp] -- GitLab