Author: Richard Plangger <r...@pasra.at> Branch: vecopt-merge Changeset: r79056:7594920913e7 Date: 2015-08-19 14:54 +0200 http://bitbucket.org/pypy/pypy/changeset/7594920913e7/
Log: why not split the parameters up into several different integer ones, why not do it this way in the first place? diff --git a/pypy/module/pypyjit/interp_jit.py b/pypy/module/pypyjit/interp_jit.py --- a/pypy/module/pypyjit/interp_jit.py +++ b/pypy/module/pypyjit/interp_jit.py @@ -137,12 +137,10 @@ for key, w_value in kwds_w.items(): if key == 'enable_opts': jit.set_param(None, 'enable_opts', space.str_w(w_value)) - elif key == 'vec_params': - jit.set_param(None, 'vec_params', space.str_w(w_value)) else: intval = space.int_w(w_value) for name, _ in unroll_parameters: - if name == key and name != 'enable_opts' and name != 'vec_params': + if name == key and name != 'enable_opts': jit.set_param(None, name, intval) break else: diff --git a/rpython/jit/metainterp/warmspot.py b/rpython/jit/metainterp/warmspot.py --- a/rpython/jit/metainterp/warmspot.py +++ b/rpython/jit/metainterp/warmspot.py @@ -71,8 +71,8 @@ backendopt=False, trace_limit=sys.maxint, inline=False, loop_longevity=0, retrace_limit=5, function_threshold=4, enable_opts=ALL_OPTS_NAMES, max_retrace_guards=15, - max_unroll_recursion=7, vec=0, vec_params='0:0:50:0.6', - **kwds): + max_unroll_recursion=7, vec=0, vec_all=0, vec_cost=0, + vec_length=50, vec_ratio=6, **kwds): from rpython.config.config import ConfigError translator = interp.typer.annotator.translator try: @@ -96,7 +96,10 @@ jd.warmstate.set_param_enable_opts(enable_opts) jd.warmstate.set_param_max_unroll_recursion(max_unroll_recursion) jd.warmstate.set_param_vec(vec) - jd.warmstate.set_param_vec_params(vec_params) + jd.warmstate.set_param_vec_all(vec_all) + jd.warmstate.set_param_vec_cost(vec_cost) + jd.warmstate.set_param_vec_length(vec_length) + jd.warmstate.set_param_vec_ratio(vec_ratio) warmrunnerdesc.finish() if graph_and_interp_only: return interp, graph diff --git a/rpython/jit/metainterp/warmstate.py b/rpython/jit/metainterp/warmstate.py --- a/rpython/jit/metainterp/warmstate.py +++ b/rpython/jit/metainterp/warmstate.py @@ -303,20 +303,17 @@ def set_param_vec(self, value): self.vec = bool(value) - def set_param_vec_params(self, value): - if NonConstant(False): - value = 'blah' # not a constant '' - values = value.split(":") - self.vec_all = bool(values[0]) - self.vec_cost = 0 - if len(values) > 1: - self.vec_cost = int(values[1]) - self.vec_length = 50 - if len(values) > 2: - self.vec_length = int(values[2]) - self.vec_ratio = 0.60 - if len(values) > 3: - self.vec_ratio = float(values[3]) + def set_param_vec_all(self, value): + self.vec_all = bool(value) + + def set_param_vec_cost(self, value): + self.vec_cost = bool(value) + + def set_param_vec_length(self, value): + self.vec_length = int(value) + + def set_param_vec_ratio(self, value): + self.vec_ratio = value / 10.0 def disable_noninlinable_function(self, greenkey): cell = self.JitCell.ensure_jit_cell_at_key(greenkey) diff --git a/rpython/rlib/jit.py b/rpython/rlib/jit.py --- a/rpython/rlib/jit.py +++ b/rpython/rlib/jit.py @@ -554,13 +554,11 @@ 'optimizations to enable, or all = %s' % ENABLE_ALL_OPTS, 'max_unroll_recursion': 'how many levels deep to unroll a recursive function', 'vec': 'turn on the vectorization optimization (vecopt). requires sse4.1', - 'vec_params': 'parameters to the optimization separated by colons. <all>[:<cost>[:<length>[:<ratio>]]]. ' - 'all = 1: try to vectorize trace loops that occur outside of the numpy library. ' - 'cost = 0: threshold for which traces to bail. 0 means the costs ' - 'balance the unpacking, if below the vectorizer bails out. ' - 'length = 50: the amount of instructions allowed in "all" traces. ' - 'ratio = 0.60: the number statements that have vector equivalents divided ' - 'by the total number of trace instructions.', + 'vec_all': 'all = 1: try to vectorize trace loops that occur outside of the numpy library.', + 'vec_cost': 'cost = 0: threshold for which traces to bail. 0 means the costs.', + 'vec_length': 'length = 50: the amount of instructions allowed in "all" traces.', + 'vec_ratio': 'ratio = 6: an integer (0-10 => X / 10) statements that have vector equivalents ' + 'divided by the total number of trace instructions.', } PARAMETERS = {'threshold': 1039, # just above 1024, prime @@ -577,7 +575,10 @@ 'enable_opts': 'all', 'max_unroll_recursion': 7, 'vec': 0, - 'vec_params': '0:0:50:0.60', + 'vec_all': 0, + 'vec_cost': 0, + 'vec_length': 50, + 'vec_ratio': 6, } unroll_parameters = unrolling_iterable(PARAMETERS.items()) @@ -799,11 +800,9 @@ value = parts[1] if name == 'enable_opts': set_param(driver, 'enable_opts', value) - elif name == 'vec_params': - set_param(driver, 'vec_params', value) else: for name1, _ in unroll_parameters: - if name1 == name and name1 != 'vec_params' and name1 != 'enable_opts': + if name1 == name and name1 != 'enable_opts': try: set_param(driver, name1, int(value)) except ValueError: @@ -969,8 +968,6 @@ assert s_name.is_constant() if s_name.const == 'enable_opts': assert annmodel.SomeString(can_be_None=True).contains(s_value) - elif s_name.const == 'vec_params': - assert annmodel.SomeString(can_be_None=True).contains(s_value) else: assert (s_value == annmodel.s_None or annmodel.SomeInteger().contains(s_value)) @@ -986,8 +983,6 @@ name = hop.args_s[1].const if name == 'enable_opts': repr = string_repr - elif name == 'vec_params': - repr = string_repr else: repr = lltype.Signed if (isinstance(hop.args_v[2], Constant) and _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit