Author: mattip Branch: numpypy-axisops Changeset: r51126:f3a9a6a5871d Date: 2012-01-06 16:32 +0200 http://bitbucket.org/pypy/pypy/changeset/f3a9a6a5871d/
Log: add jit_merge_point diff --git a/pypy/module/micronumpy/interp_numarray.py b/pypy/module/micronumpy/interp_numarray.py --- a/pypy/module/micronumpy/interp_numarray.py +++ b/pypy/module/micronumpy/interp_numarray.py @@ -297,7 +297,7 @@ descr_min = _reduce_ufunc_impl("minimum") def _reduce_argmax_argmin_impl(op_name): - reduce_driver = jit.JitDriver( + axisreduce_driver = jit.JitDriver( greens=['shapelen', 'sig'], reds=['result', 'idx', 'frame', 'self', 'cur_best', 'dtype'], get_printable_location=signature.new_printable_location(op_name), @@ -312,7 +312,7 @@ result = 0 idx = 1 while not frame.done(): - reduce_driver.jit_merge_point(sig=sig, + axisreduce_driver.jit_merge_point(sig=sig, shapelen=shapelen, self=self, dtype=dtype, frame=frame, result=result, @@ -783,18 +783,28 @@ return value def compute(self): + reduce_driver = jit.JitDriver( + greens=['shapelen', 'sig', 'self'], + reds=['result', 'ri', 'frame', 'nextval', 'dtype', 'value'], + get_printable_location=\ + signature.new_printable_location(self.binfunc), + ) self.computing = True dtype = self.dtype result = W_NDimArray(self.size, self.shape, dtype) self.values = self.values.get_concrete() shapelen = len(result.shape) - objlen = len(self.values.shape) sig = self.find_sig(res_shape=result.shape, arr=self.values) ri = ArrayIterator(result.size) frame = sig.create_frame(self.values, dim=self.dim) value = self.get_identity(sig, frame, shapelen) + nextval = 0. while not frame.done(): - #XXX add jit_merge_point + reduce_driver.jit_merge_point(frame=frame, self=self, + value=value, sig=sig, + shapelen=shapelen, ri=ri, + nextval=nextval, dtype=dtype, + result=result) if frame.iterators[0].axis_done: value = self.get_identity(sig, frame, shapelen) ri = ri.next(shapelen) diff --git a/pypy/module/micronumpy/test/test_zjit.py b/pypy/module/micronumpy/test/test_zjit.py --- a/pypy/module/micronumpy/test/test_zjit.py +++ b/pypy/module/micronumpy/test/test_zjit.py @@ -115,6 +115,21 @@ "int_add": 1, "int_ge": 1, "guard_false": 1, "jump": 1, 'arraylen_gc': 1}) + def define_sum2d(): + return """ + a = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]] + b = sum(a,0) + b -> 1 + """ + + def test_axissum(self): + py.test.skip("2dsum") + result = self.run("sum2d") + assert result == 30 + self.check_simple_loop({"getinteriorfield_raw": 2, "float_add": 2, + "int_add": 1, "int_ge": 1, "guard_false": 1, + "jump": 1, 'arraylen_gc': 1}) + def define_prod(): return """ a = |30| _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit