From e8b3fb9ac260c667b6706e952a0be5db0ba7c56d Mon Sep 17 00:00:00 2001 From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de> Date: Tue, 6 Mar 2018 09:43:46 +0100 Subject: [PATCH] Remove fromlist vectorization strategy It would be hard to implement on top of the latest feature and contradict features projected for the near future. --- python/dune/perftool/options.py | 2 +- python/dune/perftool/sumfact/vectorization.py | 40 ------------------- 2 files changed, 1 insertion(+), 41 deletions(-) diff --git a/python/dune/perftool/options.py b/python/dune/perftool/options.py index 067d6da6..0e59ff24 100644 --- a/python/dune/perftool/options.py +++ b/python/dune/perftool/options.py @@ -78,7 +78,7 @@ class PerftoolFormOptionsArray(ImmutableRecord): fastdg = PerftoolOption(default=False, helpstr="Use FastDGGridOperator from PDELab.") 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|fromlist") + vectorization_strategy = PerftoolOption(default="none", helpstr="The identifier of the vectorization cost model. Possible values: none|explicit|model") 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 97a197c9..4f7abe67 100644 --- a/python/dune/perftool/sumfact/vectorization.py +++ b/python/dune/perftool/sumfact/vectorization.py @@ -62,12 +62,6 @@ def costmodel(sf): return sf.operations * vertical_penalty * scalar_penalty -@backend(interface="vectorization_strategy", name="fromlist") -def fromlist_costmodel(sf): - # The fromlist strategy needs to reuse the cost model! - return costmodel(sf) - - @backend(interface="vectorization_strategy", name="explicit") def explicit_costfunction(sf): # Read the explicitly set values for horizontal and vertical vectorization @@ -181,40 +175,6 @@ def decide_vectorization_strategy(): width = get_vcl_type_size(dtype_floatingpoint()) qp, sfdict = level1_optimal_vectorization_strategy(active_sumfacts, width) - -# TODO: Check how the 'fromlist' generator fits into the new overall picture -# -# if get_form_option("vectorization_strategy") == "fromlist": -# # This is a bit special and does not follow the minimization procedure at all -# -# def _choose_strategy_from_list(stage1_sumfacts): -# strategy = 0 -# for qp in quad_points: -# for strat in fixed_quad_vectorization_opportunity_generator(frozenset(stage1_sumfacts), width, qp): -# if strategy == int(get_form_option("vectorization_list_index")): -# # Output the strategy and its cost into a separate file -# if get_global_context_value("form_type") == "jacobian_apply": -# with open("strategycosts.csv", "a") as f: -# f.write("{} {}\n".format(strategy, strategy_cost((qp, strat)))) -# return qp, strat -# strategy = strategy + 1 -# -# raise PerftoolVectorizationError("Specified vectorization list index '{}' was too high!".format(get_form_option("vectorization_list_index"))) -# -# s1_sumfacts = frozenset(sf for sf in active_sumfacts if sf.stage == 1) -# -# total = sum(len([s for s in fixed_quad_vectorization_opportunity_generator(frozenset(s1_sumfacts), width, qp)]) for qp in quad_points) -# print("'fromlist' vectorization is attempting to pick #{} of {} strategies...".format(int(get_form_option("vectorization_list_index")), -# total)) -# qp, sfdict = _choose_strategy_from_list(s1_sumfacts) -# -# keys = frozenset(sf.input_key for sf in active_sumfacts if sf.stage != 1) -# for key in keys: -# key_sumfacts = frozenset(sf for sf in active_sumfacts if sf.input_key == key) -# minimum = min(fixed_quad_vectorization_opportunity_generator(key_sumfacts, width, qp), -# key=fixedqp_strategy_costfunction(qp)) -# sfdict = add_to_frozendict(sfdict, minimum) - set_quadrature_points(qp) logger.debug("decide_vectorization_strategy: Decided for the following strategy:" -- GitLab