Author: Brian Kearns <[email protected]>
Branch: numpy-speed
Changeset: r70709:cc857b7e9422
Date: 2014-04-17 03:30 -0400
http://bitbucket.org/pypy/pypy/changeset/cc857b7e9422/
Log: virtualize the array iter in dot
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
@@ -270,7 +270,10 @@
dot_driver = jit.JitDriver(name = 'numpy_dot',
greens = ['dtype'],
- reds = 'auto')
+ reds=['n', 's1', 's2', 'i1', 'i2', 'i',
+ 'left_impl', 'right_impl', 'result',
+ 'outi', 'lefti', 'righti', 'oval'],
+ virtualizables=['outi'])
def multidim_dot(space, left, right, result, dtype, right_critical_dim):
''' assumes left, right are concrete arrays
@@ -306,7 +309,11 @@
i = 0
while i < n:
i += 1
- dot_driver.jit_merge_point(dtype=dtype)
+ dot_driver.jit_merge_point(dtype=dtype,
+ n=n, s1=s1, s2=s2, i1=i1, i2=i2, i=i,
+ left_impl=left_impl, right_impl=right_impl, result=result,
+ outi=outi, lefti=lefti, righti=righti, oval=oval,
+ )
lval = left_impl.getitem(i1).convert_to(space, dtype)
rval = right_impl.getitem(i2).convert_to(space, dtype)
oval = dtype.itemtype.add(oval, dtype.itemtype.mul(lval, rval))
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
@@ -569,31 +569,32 @@
'raw_load': 2,
})
self.check_resops({
- 'cond_call': 6,
+ 'cond_call': 4,
'float_add': 2,
'float_mul': 2,
'getarrayitem_gc': 7,
'getarrayitem_gc_pure': 15,
- 'getfield_gc': 41,
+ 'getfield_gc': 35,
'getfield_gc_pure': 39,
'guard_class': 4,
- 'guard_false': 14,
+ 'guard_false': 18,
'guard_nonnull': 12,
'guard_nonnull_class': 4,
'guard_not_invalidated': 2,
'guard_true': 13,
- 'guard_value': 4,
+ 'guard_value': 6,
'int_add': 25,
'int_ge': 4,
'int_le': 8,
'int_lt': 11,
'int_sub': 4,
'jump': 3,
- 'ptr_ne': 6,
+ 'ptr_eq': 4,
+ 'ptr_ne': 4,
'raw_load': 6,
'raw_store': 1,
- 'setarrayitem_gc': 10,
- 'setfield_gc': 14,
+ 'setarrayitem_gc': 7,
+ 'setfield_gc': 10,
})
def define_argsort():
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit