[pypy-commit] pypy numpypy-axisops: add jit_merge_point
mattip
noreply at buildbot.pypy.org
Sat Jan 7 22:04:40 CET 2012
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|
More information about the pypy-commit
mailing list