diff --git a/python/dune/perftool/sumfact/symbolic.py b/python/dune/perftool/sumfact/symbolic.py index 0cbb6b814b13b3f60bacc065ea539ed0a8a37af5..790548f1b99a9cd36d8e3c395890debb419c2cec 100644 --- a/python/dune/perftool/sumfact/symbolic.py +++ b/python/dune/perftool/sumfact/symbolic.py @@ -120,8 +120,9 @@ class SumfactKernel(SumfactKernelBase, ImmutableRecord, prim.Variable): # The following construction is a bit weird: Dict comprehensions do not have # access to the locals of the calling scope: So we need to do the eval beforehand - defaults = [eval(a) for a in SumfactKernel.init_arg_names] - defaultdict = {a: defaults[SumfactKernel.init_arg_names.index(a)] for a in SumfactKernel.init_arg_names} + defaultdict = {} + for a in SumfactKernel.init_arg_names: + defaultdict[a] = eval(a) # Call the base class constructors ImmutableRecord.__init__(self, **defaultdict) diff --git a/python/dune/perftool/sumfact/vectorization.py b/python/dune/perftool/sumfact/vectorization.py index 217d22deedd1d5e6f036fc395082cfc21862cc62..6900885499385a62fc9dbca9d1e9adac7e444551 100644 --- a/python/dune/perftool/sumfact/vectorization.py +++ b/python/dune/perftool/sumfact/vectorization.py @@ -166,19 +166,23 @@ def decide_vectorization_strategy(): for inputkey in inputkeys: width = get_vcl_type_size(np.float64) sumfact_filter = [sf for sf in sumfacts if sf.input_key == inputkey] - sfdict.update(**horizontal_vectorization_strategy(sumfact_filter, width)) + for old, new in horizontal_vectorization_strategy(sumfact_filter, width).items(): + sfdict[old] = new elif get_option("vectorize_slice"): for sumfact in sumfacts: width = get_vcl_type_size(np.float64) - sfdict.update(**vertical_vectorization_strategy(sumfact, width)) + for old, new in vertical_vectorization_strategy(sumfact, width).items(): + sfdict[old] = new elif get_option("vectorize_diagonal"): inputkeys = set(sf.input_key for sf in sumfacts) for inputkey in inputkeys: width = get_vcl_type_size(np.float64) sumfact_filter = [sf for sf in sumfacts if sf.input_key == inputkey] - sfdict.update(**diagonal_vectorization_strategy(sumfact_filter, width)) + for old, new in diagonal_vectorization_strategy(sumfact_filter, width).items(): + sfdict[old] = new else: - sfdict.update(**no_vectorization(sumfacts)) + for old, new in no_vectorization(sumfacts).items(): + sfdict[old] = new # Register the results for sf in sumfacts: