[pypy-commit] pypy vecopt-merge: added missing vectorize=True for the jit drivers in loop.py
plan_rich
noreply at buildbot.pypy.org
Tue Aug 11 12:01:00 CEST 2015
Author: Richard Plangger <rich at pasra.at>
Branch: vecopt-merge
Changeset: r78881:4dcddb2caee3
Date: 2015-08-11 11:59 +0200
http://bitbucket.org/pypy/pypy/changeset/4dcddb2caee3/
Log: added missing vectorize=True for the jit drivers in loop.py
diff --git a/pypy/module/micronumpy/compile.py b/pypy/module/micronumpy/compile.py
--- a/pypy/module/micronumpy/compile.py
+++ b/pypy/module/micronumpy/compile.py
@@ -15,7 +15,7 @@
from pypy.module.micronumpy.descriptor import get_dtype_cache
from pypy.interpreter.miscutils import ThreadLocals, make_weak_value_dictionary
from pypy.interpreter.executioncontext import (ExecutionContext, ActionFlag,
- UserDelAction, CodeUniqueIds)
+ UserDelAction)
from pypy.interpreter.pyframe import PyFrame
@@ -93,7 +93,6 @@
self.config = config
self.interned_strings = make_weak_value_dictionary(self, str, W_Root)
- self.code_unique_ids = CodeUniqueIds()
self.builtin = DictObject({})
self.FrameClass = PyFrame
self.threadlocals = ThreadLocals()
@@ -165,6 +164,10 @@
lgt = (stop - start - 1) / step + 1
return (start, stop, step, lgt)
+ def unicode_from_object(self, w_item):
+ # XXX
+ return StringObject("")
+
@specialize.argtype(1)
def wrap(self, obj):
if isinstance(obj, float):
@@ -281,6 +284,12 @@
return w_obj.v
raise NotImplementedError
+ def unicode_w(self, w_obj):
+ # XXX
+ if isinstance(w_obj, StringObject):
+ return unicode(w_obj.v)
+ raise NotImplementedError
+
def int(self, w_obj):
if isinstance(w_obj, IntObject):
return w_obj
diff --git a/pypy/module/micronumpy/flatiter.py b/pypy/module/micronumpy/flatiter.py
--- a/pypy/module/micronumpy/flatiter.py
+++ b/pypy/module/micronumpy/flatiter.py
@@ -97,7 +97,7 @@
finally:
self.iter.reset(self.state, mutate=True)
- def descr___array_wrap__(self, space, obj):
+ def descr___array_wrap__(self, space, obj, w_context=None):
return obj
W_FlatIterator.typedef = TypeDef("numpy.flatiter",
diff --git a/pypy/module/micronumpy/loop.py b/pypy/module/micronumpy/loop.py
--- a/pypy/module/micronumpy/loop.py
+++ b/pypy/module/micronumpy/loop.py
@@ -9,7 +9,7 @@
from pypy.module.micronumpy import support, constants as NPY
from pypy.module.micronumpy.base import W_NDimArray, convert_to_array
from pypy.module.micronumpy.iterators import PureShapeIter, AxisIter, \
- AllButAxisIter
+ AllButAxisIter, ArrayIter
from pypy.interpreter.argument import Arguments
@@ -202,29 +202,28 @@
reduce_flat_driver = jit.JitDriver(
name='numpy_reduce_flat',
- greens = ['shapelen', 'func', 'done_func', 'calc_dtype'], reds = 'auto')
+ greens = ['shapelen', 'func', 'done_func', 'calc_dtype'], reds = 'auto',
+ vectorize = True)
-def compute_reduce(space, obj, calc_dtype, func, done_func, identity):
- obj_iter, obj_state = obj.create_iter()
+def reduce_flat(space, func, w_arr, calc_dtype, done_func, identity):
+ obj_iter, obj_state = w_arr.create_iter()
if identity is None:
cur_value = obj_iter.getitem(obj_state).convert_to(space, calc_dtype)
obj_state = obj_iter.next(obj_state)
else:
cur_value = identity.convert_to(space, calc_dtype)
- shapelen = len(obj.get_shape())
+ shapelen = len(w_arr.get_shape())
while not obj_iter.done(obj_state):
- reduce_driver.jit_merge_point(shapelen=shapelen, func=func,
- done_func=done_func,
- calc_dtype=calc_dtype)
+ reduce_flat_driver.jit_merge_point(
+ shapelen=shapelen, func=func,
+ done_func=done_func, calc_dtype=calc_dtype)
rval = obj_iter.getitem(obj_state).convert_to(space, calc_dtype)
if done_func is not None and done_func(calc_dtype, rval):
return rval
cur_value = func(calc_dtype, cur_value, rval)
obj_state = obj_iter.next(obj_state)
- rval = None
return cur_value
-
reduce_driver = jit.JitDriver(
name='numpy_reduce',
greens=['shapelen', 'func', 'dtype'], reds='auto',
@@ -316,7 +315,8 @@
accumulate_driver = jit.JitDriver(
name='numpy_accumulate',
- greens=['shapelen', 'func', 'calc_dtype'], reds='auto',
+ greens=['shapelen', 'func', 'calc_dtype'],
+ reds='auto',
vectorize=True)
@@ -367,7 +367,8 @@
where_driver = jit.JitDriver(name='numpy_where',
greens = ['shapelen', 'dtype', 'arr_dtype'],
- reds = 'auto', vectorize=True)
+ reds = 'auto',
+ vectorize=True)
def where(space, out, shape, arr, x, y, dtype):
out_iter, out_state = out.create_iter(shape)
diff --git a/pypy/module/micronumpy/strides.py b/pypy/module/micronumpy/strides.py
--- a/pypy/module/micronumpy/strides.py
+++ b/pypy/module/micronumpy/strides.py
@@ -7,6 +7,7 @@
# structures to describe slicing
class BaseChunk(object):
+ _attrs_ = ['step']
pass
diff --git a/pypy/module/micronumpy/ufuncs.py b/pypy/module/micronumpy/ufuncs.py
--- a/pypy/module/micronumpy/ufuncs.py
+++ b/pypy/module/micronumpy/ufuncs.py
@@ -276,7 +276,7 @@
loop.accumulate_flat(
space, self.func, obj, dtype, out, self.identity)
if call__array_wrap__:
- out = space.call_method(obj, '__array_wrap__', out)
+ out = space.call_method(obj, '__array_wrap__', out, None)
return out
axis_flags = [False] * shapelen
@@ -313,7 +313,7 @@
out.implementation.setitem(0, res)
res = out
if call__array_wrap__:
- res = space.call_method(obj, '__array_wrap__', res)
+ res = space.call_method(obj, '__array_wrap__', res, None)
return res
else:
@@ -360,7 +360,7 @@
loop.reduce(
space, self.func, obj, axis_flags, dtype, out, self.identity)
if call__array_wrap__:
- out = space.call_method(obj, '__array_wrap__', out)
+ out = space.call_method(obj, '__array_wrap__', out, None)
return out
def descr_outer(self, space, __args__):
More information about the pypy-commit
mailing list