Author: Maciej Fijalkowski <[email protected]>
Branch: numpy-multidim-shards
Changeset: r49681:0c2425c1ad39
Date: 2011-11-23 11:07 +0200
http://bitbucket.org/pypy/pypy/changeset/0c2425c1ad39/
Log: rename shards to strides
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
@@ -163,11 +163,11 @@
for i in range(shape_len - 1, -1, -1):
if self.indices[i] < self.arr.shape[i] - 1:
self.indices[i] += 1
- self.offset += self.arr.shards[i]
+ self.offset += self.arr.strides[i]
break
else:
self.indices[i] = 0
- self.offset -= self.arr.backshards[i]
+ self.offset -= self.arr.backstrides[i]
else:
self._done = True
@@ -185,20 +185,20 @@
def __init__(self, arr, res_shape):
self.indices = [0] * len(res_shape)
self.offset = arr.start
- #shards are 0 where original shape==1
- self.shards = []
- self.backshards = []
+ #strides are 0 where original shape==1
+ self.strides = []
+ self.backstrides = []
for i in range(len(arr.shape)):
if arr.shape[i]==1:
- self.shards.append(0)
- self.backshards.append(0)
+ self.strides.append(0)
+ self.backstrides.append(0)
else:
- self.shards.append(arr.shards[i])
- self.backshards.append(arr.backshards[i])
+ self.strides.append(arr.strides[i])
+ self.backstrides.append(arr.backstrides[i])
self.shape_len = len(res_shape)
self.res_shape = res_shape
- self.shards = [0] * (len(res_shape) - len(arr.shape)) + self.shards
- self.backshards = [0] * (len(res_shape) - len(arr.shape)) +
self.backshards
+ self.strides = [0] * (len(res_shape) - len(arr.shape)) + self.strides
+ self.backstrides = [0] * (len(res_shape) - len(arr.shape)) +
self.backstrides
self._done = False
self.arr = arr
@@ -208,11 +208,11 @@
for i in range(shape_len - 1, -1, -1):
if self.indices[i] < self.res_shape[i] - 1:
self.indices[i] += 1
- self.offset += self.shards[i]
+ self.offset += self.strides[i]
break
else:
self.indices[i] = 0
- self.offset -= self.backshards[i]
+ self.offset -= self.backstrides[i]
else:
self._done = True
@@ -263,35 +263,35 @@
return 0
class BaseArray(Wrappable):
- _attrs_ = ["invalidates", "signature", "shape", "shards", "backshards",
+ _attrs_ = ["invalidates", "signature", "shape", "strides", "backstrides",
"start", 'order']
- _immutable_fields_ = ['shape[*]', "shards[*]", "backshards[*]", 'start',
+ _immutable_fields_ = ['shape[*]', "strides[*]", "backstrides[*]", 'start',
"order"]
- shards = None
+ strides = None
start = 0
def __init__(self, shape, order):
self.invalidates = []
self.shape = shape
self.order = order
- if self.shards is None:
- shards = []
- backshards = []
+ if self.strides is None:
+ strides = []
+ backstrides = []
s = 1
shape_rev = shape[:]
if order == 'C':
shape_rev.reverse()
for sh in shape_rev:
- shards.append(s)
- backshards.append(s * (sh - 1))
+ strides.append(s)
+ backstrides.append(s * (sh - 1))
s *= sh
if order == 'C':
- shards.reverse()
- backshards.reverse()
- self.shards = shards[:]
- self.backshards = backshards[:]
+ strides.reverse()
+ backstrides.reverse()
+ self.strides = strides[:]
+ self.backstrides = backstrides[:]
def invalidated(self):
if self.invalidates:
@@ -525,11 +525,11 @@
else:
builder.append(spacer)
builder.append(dtype.str_format(self.getitem(item)))
- item += self.shards[0]
+ item += self.strides[0]
#Add a comma only if comma is False - this prevents adding two
commas
builder.append(spacer + '...' + ',' * (1 - comma))
#Ugly, but can this be done with an iterator?
- item = self.start + self.backshards[0] - 2 * self.shards[0]
+ item = self.start + self.backstrides[0] - 2 * self.strides[0]
i = self.shape[0] - 3
while i < self.shape[0]:
if start:
@@ -537,7 +537,7 @@
else:
builder.append(spacer)
builder.append(dtype.str_format(self.getitem(item)))
- item += self.shards[0]
+ item += self.strides[0]
i += 1
else:
builder.append('[')
@@ -562,7 +562,7 @@
if idx < 0 or idx >= self.shape[0]:
raise OperationError(space.w_IndexError,
space.wrap("index out of range"))
- return self.start + idx * self.shards[0]
+ return self.start + idx * self.strides[0]
index = [space.int_w(w_item)
for w_item in space.fixedview(w_idx)]
item = self.start
@@ -573,7 +573,7 @@
if v < 0 or v >= self.shape[i]:
raise OperationError(space.w_IndexError,
space.wrap("index (%d) out of range
(0<=index<%d" % (i, self.shape[i])))
- item += v * self.shards[i]
+ item += v * self.strides[i]
return item
def get_root_shape(self):
@@ -651,33 +651,33 @@
start, stop, step, lgt = chunks[0]
if step == 0:
shape = self.shape[1:]
- shards = self.shards[1:]
- backshards = self.backshards[1:]
+ strides = self.strides[1:]
+ backstrides = self.backstrides[1:]
else:
shape = [lgt] + self.shape[1:]
- shards = [self.shards[0] * step] + self.shards[1:]
- backshards = [(lgt - 1) * self.shards[0] * step] +
self.backshards[1:]
- start *= self.shards[0]
+ strides = [self.strides[0] * step] + self.strides[1:]
+ backstrides = [(lgt - 1) * self.strides[0] * step] +
self.backstrides[1:]
+ start *= self.strides[0]
start += self.start
else:
shape = []
- shards = []
- backshards = []
+ strides = []
+ backstrides = []
start = self.start
i = -1
for i, (start_, stop, step, lgt) in enumerate(chunks):
if step != 0:
shape.append(lgt)
- shards.append(self.shards[i] * step)
- backshards.append(self.shards[i] * (lgt - 1) * step)
- start += self.shards[i] * start_
+ strides.append(self.strides[i] * step)
+ backstrides.append(self.strides[i] * (lgt - 1) * step)
+ start += self.strides[i] * start_
# add a reminder
s = i + 1
assert s >= 0
shape += self.shape[s:]
- shards += self.shards[s:]
- backshards += self.backshards[s:]
- return NDimSlice(self, new_sig, start, shards[:], backshards[:],
+ strides += self.strides[s:]
+ backstrides += self.backstrides[s:]
+ return NDimSlice(self, new_sig, start, strides[:], backstrides[:],
shape[:])
def descr_mean(self, space):
@@ -702,9 +702,9 @@
def compute_index(self, space, offset):
offset -= self.start
if len(self.shape) == 1:
- return space.wrap(offset // self.shards[0])
+ return space.wrap(offset // self.strides[0])
indices_w = []
- for shard in self.shards:
+ for shard in self.strides:
r = offset // shard
indices_w.append(space.wrap(r))
offset -= shard * r
@@ -894,9 +894,9 @@
Class for representing views of arrays, they will reflect changes of parent
arrays. Example: slices
"""
- def __init__(self, parent, signature, shards, backshards, shape):
- self.shards = shards
- self.backshards = backshards
+ def __init__(self, parent, signature, strides, backstrides, shape):
+ self.strides = strides
+ self.backstrides = backstrides
BaseArray.__init__(self, shape, parent.order)
self.signature = signature
self.parent = parent
@@ -934,11 +934,11 @@
class NDimSlice(ViewArray):
signature = signature.BaseSignature()
- def __init__(self, parent, signature, start, shards, backshards,
+ def __init__(self, parent, signature, start, strides, backstrides,
shape):
if isinstance(parent, NDimSlice):
parent = parent.parent
- ViewArray.__init__(self, parent, signature, shards, backshards, shape)
+ ViewArray.__init__(self, parent, signature, strides, backstrides,
shape)
self.start = start
self.size = 1
for sh in shape:
diff --git a/pypy/module/micronumpy/test/test_numarray.py
b/pypy/module/micronumpy/test/test_numarray.py
--- a/pypy/module/micronumpy/test/test_numarray.py
+++ b/pypy/module/micronumpy/test/test_numarray.py
@@ -24,31 +24,31 @@
args_w.append(arg)
return self.space.newtuple(args_w)
- def test_shards_f(self):
+ def test_strides_f(self):
a = NDimArray(100, [10, 5, 3], MockDtype(), 'F')
- assert a.shards == [1, 10, 50]
- assert a.backshards == [9, 40, 100]
+ assert a.strides == [1, 10, 50]
+ assert a.backstrides == [9, 40, 100]
- def test_shards_c(self):
+ def test_strides_c(self):
a = NDimArray(100, [10, 5, 3], MockDtype(), 'C')
- assert a.shards == [15, 3, 1]
- assert a.backshards == [135, 12, 2]
+ assert a.strides == [15, 3, 1]
+ assert a.backstrides == [135, 12, 2]
def test_create_slice_f(self):
space = self.space
a = NDimArray(10 * 5 * 3, [10, 5, 3], MockDtype(), 'F')
s = a.create_slice(space, [(3, 0, 0, 1)])
assert s.start == 3
- assert s.shards == [10, 50]
- assert s.backshards == [40, 100]
+ assert s.strides == [10, 50]
+ assert s.backstrides == [40, 100]
s = a.create_slice(space, [(1, 9, 2, 4)])
assert s.start == 1
- assert s.shards == [2, 10, 50]
- assert s.backshards == [6, 40, 100]
+ assert s.strides == [2, 10, 50]
+ assert s.backstrides == [6, 40, 100]
s = a.create_slice(space, [(1, 5, 3, 2), (1, 2, 1, 1), (1, 0, 0, 1)])
assert s.shape == [2, 1]
- assert s.shards == [3, 10]
- assert s.backshards == [3, 0]
+ assert s.strides == [3, 10]
+ assert s.backstrides == [3, 0]
s = a.create_slice(space, [(0, 10, 1, 10), (2, 0, 0, 1)])
assert s.start == 20
assert s.shape == [10, 3]
@@ -58,17 +58,17 @@
a = NDimArray(10 * 5 * 3, [10, 5, 3], MockDtype(), 'C')
s = a.create_slice(space, [(3, 0, 0, 1)])
assert s.start == 45
- assert s.shards == [3, 1]
- assert s.backshards == [12, 2]
+ assert s.strides == [3, 1]
+ assert s.backstrides == [12, 2]
s = a.create_slice(space, [(1, 9, 2, 4)])
assert s.start == 15
- assert s.shards == [30, 3, 1]
- assert s.backshards == [90, 12, 2]
+ assert s.strides == [30, 3, 1]
+ assert s.backstrides == [90, 12, 2]
s = a.create_slice(space, [(1, 5, 3, 2), (1, 2, 1, 1), (1, 0, 0, 1)])
assert s.start == 19
assert s.shape == [2, 1]
- assert s.shards == [45, 3]
- assert s.backshards == [45, 0]
+ assert s.strides == [45, 3]
+ assert s.backstrides == [45, 0]
s = a.create_slice(space, [(0, 10, 1, 10), (2, 0, 0, 1)])
assert s.start == 6
assert s.shape == [10, 3]
@@ -80,15 +80,15 @@
assert s.start == 5
s2 = s.create_slice(space, [(3, 0, 0, 1)])
assert s2.shape == [3]
- assert s2.shards == [50]
+ assert s2.strides == [50]
assert s2.parent is a
- assert s2.backshards == [100]
+ assert s2.backstrides == [100]
assert s2.start == 35
s = a.create_slice(space, [(1, 5, 3, 2)])
s2 = s.create_slice(space, [(0, 2, 1, 2), (2, 0, 0, 1)])
assert s2.shape == [2, 3]
- assert s2.shards == [3, 50]
- assert s2.backshards == [3, 100]
+ assert s2.strides == [3, 50]
+ assert s2.backstrides == [3, 100]
assert s2.start == 1 * 15 + 2 * 3
def test_slice_of_slice_c(self):
@@ -98,15 +98,15 @@
assert s.start == 15 * 5
s2 = s.create_slice(space, [(3, 0, 0, 1)])
assert s2.shape == [3]
- assert s2.shards == [1]
+ assert s2.strides == [1]
assert s2.parent is a
- assert s2.backshards == [2]
+ assert s2.backstrides == [2]
assert s2.start == 5 * 15 + 3 * 3
s = a.create_slice(space, [(1, 5, 3, 2)])
s2 = s.create_slice(space, [(0, 2, 1, 2), (2, 0, 0, 1)])
assert s2.shape == [2, 3]
- assert s2.shards == [45, 1]
- assert s2.backshards == [45, 2]
+ assert s2.strides == [45, 1]
+ assert s2.backstrides == [45, 2]
assert s2.start == 1 * 15 + 2 * 3
def test_negative_step_f(self):
@@ -114,16 +114,16 @@
a = NDimArray(10 * 5 * 3, [10, 5, 3], MockDtype(), 'F')
s = a.create_slice(space, [(9, -1, -2, 5)])
assert s.start == 9
- assert s.shards == [-2, 10, 50]
- assert s.backshards == [-8, 40, 100]
+ assert s.strides == [-2, 10, 50]
+ assert s.backstrides == [-8, 40, 100]
def test_negative_step_c(self):
space = self.space
a = NDimArray(10 * 5 * 3, [10, 5, 3], MockDtype(), order='C')
s = a.create_slice(space, [(9, -1, -2, 5)])
assert s.start == 135
- assert s.shards == [-30, 3, 1]
- assert s.backshards == [-120, 12, 2]
+ assert s.strides == [-30, 3, 1]
+ assert s.backstrides == [-120, 12, 2]
def test_index_of_single_item_f(self):
a = NDimArray(10 * 5 * 3, [10, 5, 3], MockDtype(), 'F')
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit