From fdca50559a2b557d4ca04f33268e7e6fa339f0b8 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Wed, 7 May 2014 13:44:19 -0500 Subject: [PATCH 01/73] Add basic slice support to positivify. --- distarray/metadata_utils.py | 19 ++++++++++++++----- distarray/tests/test_metadata_utils.py | 11 +++++++++++ 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/distarray/metadata_utils.py b/distarray/metadata_utils.py index 3544f747..43bc04ff 100644 --- a/distarray/metadata_utils.py +++ b/distarray/metadata_utils.py @@ -207,9 +207,18 @@ def normalize_dim_dict(dd): def positivify(index, size): - if 0 <= index < size: - return index - elif -size <= index < 0: - return size + index + if isinstance(index, int): + if 0 <= index < size: + return index + elif -size <= index < 0: + return size + index + else: + raise IndexError("Index %r out of bounds" % index) + elif isinstance(index, slice): + if index.step is not None: + raise NotImplemented("Not yet implemented for slices with a step.") + start = positivify(index.start, size) + stop = positivify(index.stop, size) + return slice(start, stop) else: - raise IndexError("Index %s out of bounds" % index) + raise TypeError("`index` must be an int or slice.") diff --git a/distarray/tests/test_metadata_utils.py b/distarray/tests/test_metadata_utils.py index bab24861..06d4e78a 100644 --- a/distarray/tests/test_metadata_utils.py +++ b/distarray/tests/test_metadata_utils.py @@ -25,6 +25,17 @@ def test_negative_index(self): result = metadata_utils.positivify(-2, 10) self.assertEqual(result, 8) + def test_positive_slice(self): + s = slice(5, 7) + result = metadata_utils.positivify(s, 10) + self.assertEqual(result, s) + + def test_negative_slice_end(self): + s = slice(5, -2) + result = metadata_utils.positivify(s, 10) + expected = slice(5, 8) + self.assertEqual(result, expected) + if __name__ == '__main__': unittest.main(verbosity=2) From 47e89ba23fd64f973700412afef26263536918a6 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Wed, 7 May 2014 13:45:45 -0500 Subject: [PATCH 02/73] Add a docstring to positivify. --- distarray/metadata_utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/distarray/metadata_utils.py b/distarray/metadata_utils.py index 43bc04ff..dc361da9 100644 --- a/distarray/metadata_utils.py +++ b/distarray/metadata_utils.py @@ -207,6 +207,7 @@ def normalize_dim_dict(dd): def positivify(index, size): + """Given a negative index, return its positive equivalent.""" if isinstance(index, int): if 0 <= index < size: return index From 8b4d6d32398eeaf0b1f999223419afa9bb07d68d Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Wed, 7 May 2014 14:36:31 -0500 Subject: [PATCH 03/73] Add better support for slices to positivify. --- distarray/metadata_utils.py | 10 ++++++---- distarray/tests/test_metadata_utils.py | 26 +++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/distarray/metadata_utils.py b/distarray/metadata_utils.py index dc361da9..58309783 100644 --- a/distarray/metadata_utils.py +++ b/distarray/metadata_utils.py @@ -208,7 +208,9 @@ def normalize_dim_dict(dd): def positivify(index, size): """Given a negative index, return its positive equivalent.""" - if isinstance(index, int): + if index is None: + return index + elif isinstance(index, int): if 0 <= index < size: return index elif -size <= index < 0: @@ -216,10 +218,10 @@ def positivify(index, size): else: raise IndexError("Index %r out of bounds" % index) elif isinstance(index, slice): - if index.step is not None: - raise NotImplemented("Not yet implemented for slices with a step.") + if (index.step is not None) and (index.step < 0): + raise NotImplemented("Negative steps not implemented.") start = positivify(index.start, size) stop = positivify(index.stop, size) - return slice(start, stop) + return slice(start, stop, index.step) else: raise TypeError("`index` must be an int or slice.") diff --git a/distarray/tests/test_metadata_utils.py b/distarray/tests/test_metadata_utils.py index 06d4e78a..0821919a 100644 --- a/distarray/tests/test_metadata_utils.py +++ b/distarray/tests/test_metadata_utils.py @@ -30,12 +30,36 @@ def test_positive_slice(self): result = metadata_utils.positivify(s, 10) self.assertEqual(result, s) - def test_negative_slice_end(self): + def test_negative_slice_stop(self): s = slice(5, -2) result = metadata_utils.positivify(s, 10) expected = slice(5, 8) self.assertEqual(result, expected) + def test_no_slice_start(self): + s = slice(5) + result = metadata_utils.positivify(s, 10) + expected = s + self.assertEqual(result, expected) + + def test_no_slice_stop(self): + s = slice(5, None) + result = metadata_utils.positivify(s, 10) + expected = s + self.assertEqual(result, expected) + + def test_positive_slice_with_step(self): + s = slice(5, 7, 2) + result = metadata_utils.positivify(s, 10) + expected = s + self.assertEqual(result, expected) + + def test_negative_slice_with_step(self): + s = slice(-7, -1, 2) + result = metadata_utils.positivify(s, 10) + expected = slice(3, 9, 2) + self.assertEqual(result, expected) + if __name__ == '__main__': unittest.main(verbosity=2) From 3732ceddcdfc9480369138c484e56e91d70370da Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 20 May 2014 15:18:52 -0500 Subject: [PATCH 04/73] Fix indexing errors by using Integral instead of int. --- distarray/metadata_utils.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/distarray/metadata_utils.py b/distarray/metadata_utils.py index 58309783..306bd382 100644 --- a/distarray/metadata_utils.py +++ b/distarray/metadata_utils.py @@ -7,6 +7,7 @@ import operator from itertools import product from functools import reduce +from numbers import Integral from collections import Sequence, Mapping import numpy @@ -16,6 +17,11 @@ from distarray.externals.six.moves import map +# Register numpy integer types with numbers.Integral ABC. +Integral.register(numpy.signedinteger) +Integral.register(numpy.unsignedinteger) + + class InvalidGridShapeError(Exception): pass @@ -210,7 +216,7 @@ def positivify(index, size): """Given a negative index, return its positive equivalent.""" if index is None: return index - elif isinstance(index, int): + elif isinstance(index, Integral): if 0 <= index < size: return index elif -size <= index < 0: From 72b5ab867d0b7843dcf681c83db92c0856f82099 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 20 May 2014 15:50:22 -0500 Subject: [PATCH 05/73] WIP: Add failing slice test. --- distarray/dist/tests/test_distarray.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index 8dd27904..54ef7317 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -47,6 +47,12 @@ def test_set_and_getitem_block_dist(self): dap[-i] = i self.assertEqual(dap[-i], i) + def test_getitem_slice_block_dist(self): + size = 10 + expected = numpy.random.randint(10, size=size) + arr = self.dac.fromarray(expected) + assert_array_equal(arr[:], expected) + def test_set_and_getitem_nd_block_dist(self): size = 5 distribution = Distribution.from_shape(self.dac, (size, size), From 4c66e915ed1273b03c3d46141535275c68dc6fe1 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 20 May 2014 18:17:12 -0500 Subject: [PATCH 06/73] Add a tuple_intersection function to metadata_utils. --- distarray/metadata_utils.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/distarray/metadata_utils.py b/distarray/metadata_utils.py index 306bd382..c19e42bd 100644 --- a/distarray/metadata_utils.py +++ b/distarray/metadata_utils.py @@ -231,3 +231,19 @@ def positivify(index, size): return slice(start, stop, index.step) else: raise TypeError("`index` must be an int or slice.") + + +def tuple_intersection(t1, t2): + """Compute intersection of two (start, stop) tuples. + + Parameters + ---------- + t1, t2 : 2-tuples + + Returns + ------- + 2-tuple or None + """ + stop = min(t1[1], t2[1]) + start = max(t1[0], t2[0]) + return (start, stop) if stop - start > 0 else None From b6d0ae2f0b2bfa455b76c121809ea0e338d4eeb2 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 20 May 2014 18:19:52 -0500 Subject: [PATCH 07/73] Add slice support to dist/maps (for BlockMap)... and NoDistMap. --- distarray/dist/maps.py | 51 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/distarray/dist/maps.py b/distarray/dist/maps.py index 6bad2a27..b0965af1 100644 --- a/distarray/dist/maps.py +++ b/distarray/dist/maps.py @@ -26,6 +26,7 @@ import operator from itertools import product from abc import ABCMeta, abstractmethod +from numbers import Integral import numpy as np @@ -37,7 +38,13 @@ positivify, validate_grid_shape, _start_stop_block, - normalize_dim_dict) + normalize_dim_dict, + tuple_intersection) + + +# Register numpy integer types with numbers.Integral ABC. +Integral.register(np.signedinteger) +Integral.register(np.unsignedinteger) def _dedup_dim_dicts(dim_dicts): @@ -192,7 +199,12 @@ def __init__(self, size, grid_size): self.size = size def owners(self, idx): - return [0] if 0 <= idx < self.size else [] + if isinstance(idx, Integral): + return [0] if 0 <= idx < self.size else [] + elif isinstance(idx, slice): + return [0] # slicing doesn't complain about out-of-bounds indices + else: + raise TypeError("Index must be Integral or slice.") def get_dimdicts(self): return ({ @@ -253,10 +265,23 @@ def __init__(self, size, grid_size): def owners(self, idx): coords = [] - for (coord, (lower, upper)) in enumerate(self.bounds): - if lower <= idx < upper: - coords.append(coord) - return coords + if isinstance(idx, Integral): + for (coord, (lower, upper)) in enumerate(self.bounds): + if lower <= idx < upper: + coords.append(coord) + return coords + elif isinstance(idx, slice): + if idx.step not in {None, 1}: + msg = "Slicing only implemented for step=1" + raise NotImplementedError(msg) + for (coord, (lower, upper)) in enumerate(self.bounds): + slice_tuple = (idx.start if idx.start is not None else 0, + idx.stop if idx.stop is not None else self.size) + if tuple_intersection((lower, upper), slice_tuple): + coords.append(coord) + return coords if coords != [] else [0] + else: + raise TypeError("Index must be Integral or slice.") def get_dimdicts(self): grid_ranks = range(len(self.bounds)) @@ -315,8 +340,12 @@ def __init__(self, size, grid_size, block_size=1): self.block_size = block_size def owners(self, idx): - idx_block = idx // self.block_size - return [idx_block % self.grid_size] + if isinstance(idx, Integral): + idx_block = idx // self.block_size + return [idx_block % self.grid_size] + else: + msg = "Index for BlockCyclicMap must be an Integral." + raise NotImplementedError(msg) def get_dimdicts(self): return tuple(({'dist_type': 'c', @@ -370,7 +399,11 @@ def owners(self, idx): # TODO: FIXME: for now, the unstructured map just returns all # processes. Can be optimized if we know the upper and lower bounds # for each local array's global indices. - return self._owners + if isinstance(idx, Integral): + return self._owners + else: + msg = "Index for BlockCyclicMap must be an Integral." + raise NotImplementedError(msg) def get_dimdicts(self): if self.indices is None: From 9eb9a030313c855085adc439dcedd6a0fc5c6cf1 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 20 May 2014 18:24:46 -0500 Subject: [PATCH 08/73] Add slice support to local/maps (for BlockMap). --- distarray/local/maps.py | 98 +++++++++++++++++++++++++++++------------ 1 file changed, 69 insertions(+), 29 deletions(-) diff --git a/distarray/local/maps.py b/distarray/local/maps.py index 302a0be9..0bb572cd 100644 --- a/distarray/local/maps.py +++ b/distarray/local/maps.py @@ -22,6 +22,7 @@ import operator from functools import reduce +from numbers import Integral import numpy as np from distarray.externals.six.moves import range, zip @@ -32,6 +33,11 @@ distribute_indices, positivify) +# Register numpy integer types with numbers.Integral ABC. +Integral.register(np.signedinteger) +Integral.register(np.unsignedinteger) + + class Distribution(object): """Multi-dimensional Map class. @@ -202,14 +208,32 @@ def __init__(self, global_size, grid_size, grid_rank, start, stop): self.grid_rank = grid_rank def local_from_global(self, gidx): - if gidx < self.start or gidx >= self.stop: - raise IndexError("Global index %s out of bounds" % gidx) - return gidx - self.start + if isinstance(gidx, Integral): + if gidx < self.start or gidx >= self.stop: + raise IndexError("Global index %s out of bounds" % gidx) + return gidx - self.start + elif isinstance(gidx, slice): + start = gidx.start if gidx.start is not None else 0 + stop = gidx.stop if gidx.stop is not None else self.global_size + new_start = start - self.start + new_stop = stop - self.start + return slice(new_start, new_stop) + else: + raise TypeError("Index must be Integral or slice.") def global_from_local(self, lidx): - if lidx >= self.local_size: - raise IndexError("Local index %s out of bounds" % lidx) - return lidx + self.start + if isinstance(lidx, Integral): + if lidx >= self.local_size: + raise IndexError("Local index %s out of bounds" % lidx) + return lidx + self.start + elif isinstance(lidx, slice): + start = lidx.start if lidx.start is not None else 0 + stop = lidx.stop if lidx.stop is not None else self.global_size + new_start = start + self.start + new_stop = stop + self.start + return slice(new_start, new_stop) + else: + raise TypeError("Index must be Integral or slice.") @property def dim_dict(self): @@ -250,16 +274,21 @@ def __init__(self, global_size, grid_size, grid_rank, start): self.local_size = (global_size - 1 - grid_rank) // grid_size + 1 self.global_size = global_size - def local_from_global(self, gidx): - if (gidx - self.start) % self.grid_size: - raise IndexError("Global index %s out of bounds" % gidx) - return (gidx - self.start) // self.grid_size + if isinstance(gidx, Integral): + if (gidx - self.start) % self.grid_size: + raise IndexError("Global index %s out of bounds" % gidx) + return (gidx - self.start) // self.grid_size + else: + raise NotImplementedError("Index must be Integral.") def global_from_local(self, lidx): - if lidx >= self.local_size: - raise IndexError("Local index %s out of bounds" % lidx) - return (lidx * self.grid_size) + self.start + if isinstance(lidx, Integral): + if lidx >= self.local_size: + raise IndexError("Local index %s out of bounds" % lidx) + return (lidx * self.grid_size) + self.start + else: + raise NotImplementedError("Index must be Integral.") @property def dim_dict(self): @@ -301,19 +330,24 @@ def __init__(self, global_size, grid_size, grid_rank, start, block_size): self.local_size = local_nblocks * block_size + local_partial self.global_size = global_size - def local_from_global(self, gidx): - global_block, offset = divmod(gidx, self.block_size) - if (global_block - self.start_block) % self.grid_size: - raise IndexError("Global index %s out of bounds" % gidx) - return self.block_size * ((global_block - self.start_block) // self.grid_size) + offset + if isinstance(gidx, Integral): + global_block, offset = divmod(gidx, self.block_size) + if (global_block - self.start_block) % self.grid_size: + raise IndexError("Global index %s out of bounds" % gidx) + return self.block_size * ((global_block - self.start_block) // self.grid_size) + offset + else: + raise NotImplementedError("Index must be Integral.") def global_from_local(self, lidx): - if lidx >= self.local_size: - raise IndexError("Local index %s out of bounds" % lidx) - local_block, offset = divmod(lidx, self.block_size) - global_block = (local_block * self.grid_size) + self.start_block - return global_block * self.block_size + offset + if isinstance(lidx, Integral): + if lidx >= self.local_size: + raise IndexError("Local index %s out of bounds" % lidx) + local_block, offset = divmod(lidx, self.block_size) + global_block = (local_block * self.grid_size) + self.start_block + return global_block * self.block_size + offset + else: + raise NotImplementedError("Index must be Integral.") @property def dim_dict(self): @@ -354,14 +388,20 @@ def __init__(self, global_size, grid_size, grid_rank, indices): self._local_index = dict(zip(self.indices, local_indices)) def local_from_global(self, gidx): - try: - lidx = self._local_index[gidx] - except KeyError: - raise IndexError("Global index %s out of bounds" % gidx) - return lidx + if isinstance(gidx, Integral): + try: + lidx = self._local_index[gidx] + except KeyError: + raise IndexError("Global index %s out of bounds" % gidx) + return lidx + else: + raise NotImplementedError("Index must be Integral.") def global_from_local(self, lidx): - return self.indices[lidx] + if isinstance(lidx, Integral): + return self.indices[lidx] + else: + raise NotImplementedError("Index must be Integral.") @property def dim_dict(self): From 9bdae51bdd169f647aa8d2d223e99be03816757b Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 20 May 2014 18:46:19 -0500 Subject: [PATCH 09/73] Allow multiple results through. Slicing is kind of working! --- distarray/dist/distarray.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/distarray/dist/distarray.py b/distarray/dist/distarray.py index c07936b9..2f0ae9b1 100644 --- a/distarray/dist/distarray.py +++ b/distarray/dist/distarray.py @@ -144,13 +144,12 @@ def getit(arr, index): result = self.context.apply(getit, args=args, targets=targets) result = [i for i in result if i is not None] - if len(result) != 1: - raise IndexError("Getting more than one result (%s) is not " - " supported yet." % (result,)) + if len(result) == 1: + return result[0] elif result is None: raise IndexError("Index %r is out of bounds" % (index,)) else: - return result[0] + return result else: raise TypeError("Invalid index type.") From ef49a24f262b6e4aec3e05e5a085dfe6d671e9d8 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Wed, 21 May 2014 12:22:12 -0500 Subject: [PATCH 10/73] Unwrap a docstring. --- distarray/local/localarray.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/distarray/local/localarray.py b/distarray/local/localarray.py index 2394a672..b4f39f1c 100644 --- a/distarray/local/localarray.py +++ b/distarray/local/localarray.py @@ -40,9 +40,7 @@ def _sanitize_indices(indices): class GlobalIndex(object): - """Object which provides access to global indexing on - LocalArrays. - """ + """Object which provides access to global indexing on LocalArrays.""" def __init__(self, distribution, ndarray): self.distribution = distribution self.ndarray = ndarray From 176cfd9d572c0941c99940121472fabc4e40f91e Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Wed, 21 May 2014 17:50:04 -0500 Subject: [PATCH 11/73] Slicing works for __getitem__. --- distarray/dist/distarray.py | 36 ++++++++++++++++++++++++++-------- distarray/local/localarray.py | 37 +++++++++++++++++++++++++++-------- 2 files changed, 57 insertions(+), 16 deletions(-) diff --git a/distarray/dist/distarray.py b/distarray/dist/distarray.py index df7195cf..deb50bcd 100644 --- a/distarray/dist/distarray.py +++ b/distarray/dist/distarray.py @@ -17,6 +17,7 @@ import operator from itertools import product from functools import reduce +from collections import Sequence import numpy as np @@ -143,21 +144,40 @@ def raw_getitem(arr, index): elif isinstance(index, tuple): targets = self.distribution.owning_targets(index) + return_proxy = True if any(isinstance(idx, slice) + for idx in index) else False args = (self.key, index) if self.distribution.has_precise_index: result = self.context.apply(raw_getitem, args=args, - targets=targets) + targets=targets, + return_proxy=return_proxy) else: result = self.context.apply(checked_getitem, args=args, - targets=targets) - result = [i for i in result if i is not None] - if len(result) == 1: - return result[0] - elif result is None: - raise IndexError("Index %r is out of bounds" % (index,)) + targets=targets, + return_proxy=return_proxy) + + # process return value + if return_proxy: + # proxy returned as result of slice + # slicing shouldn't alter the dtype + return DistArray.from_localarrays(key=result, + context=self.context, + targets=targets, + dtype=self.dtype) + + elif isinstance(result, Sequence): + somethings = [i for i in result if i is not None] + if len(somethings) == 0: + # using checked_getitem and all return None + raise IndexError("Index %r is is not present." % (index,)) + if len(somethings) == 1: + return somethings[0] + else: + return result else: - return result + assert False # impossible is nothing + else: raise TypeError("Invalid index type.") diff --git a/distarray/local/localarray.py b/distarray/local/localarray.py index b4f39f1c..446b6d39 100644 --- a/distarray/local/localarray.py +++ b/distarray/local/localarray.py @@ -31,12 +31,18 @@ def _sanitize_indices(indices): - if isinstance(indices, Integral) or isinstance(indices, slice): - return (indices,) + """Tuple-ize and classify `indices`.""" + if isinstance(indices, Integral): + return ('value', (indices,)) + elif isinstance(indices, slice): + return ('view', (indices,)) + elif all(isinstance(i, Integral) for i in indices): + return ('value', indices) elif all(isinstance(i, Integral) or isinstance(i, slice) for i in indices): - return indices + return ('view', indices) else: - raise TypeError("Index must be a sequence of ints and slices") + raise TypeError("Index must be an int, a slice, or a sequence of " + "ints and slices") class GlobalIndex(object): @@ -65,15 +71,23 @@ def local_to_global(self, *local_ind): return self.distribution.global_from_local(*local_ind) def __getitem__(self, global_inds): - global_inds = _sanitize_indices(global_inds) + return_type, global_inds = _sanitize_indices(global_inds) try: local_inds = self.global_to_local(*global_inds) - return self.ndarray[local_inds] except KeyError as err: raise IndexError(err) + ndarray_view = self.ndarray[local_inds] + + if return_type == 'value': + return ndarray_view + elif return_type == 'view': + return fromndarray_like(ndarray_view, self) + else: + assert False # impossible is nothing + def __setitem__(self, global_inds, value): - global_inds = _sanitize_indices(global_inds) + _, global_inds = _sanitize_indices(global_inds) try: local_inds = self.global_to_local(*global_inds) self.ndarray[local_inds] = value @@ -436,7 +450,14 @@ def __len__(self): def __getitem__(self, index): """Get a local item.""" - return self.ndarray[index] + return_type, index = _sanitize_indices(index) + if return_type == 'value': + return self.ndarray[index] + elif return_type == 'view': + view = self.ndarray[index] + return fromndarray_like(view, self) + else: + assert False # impossible is nothing def __setitem__(self, index, value): """Set a local item.""" From 5a9483a9375766a97a65f467aafb0782e6f66065 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Thu, 22 May 2014 12:26:21 -0500 Subject: [PATCH 12/73] Fix positivify's behavior with slices. Slices shouldn't be bounds checked. --- distarray/metadata_utils.py | 51 +++++++++++++++++++------- distarray/tests/test_metadata_utils.py | 5 +++ 2 files changed, 42 insertions(+), 14 deletions(-) diff --git a/distarray/metadata_utils.py b/distarray/metadata_utils.py index c19e42bd..7d3d0181 100644 --- a/distarray/metadata_utils.py +++ b/distarray/metadata_utils.py @@ -212,25 +212,48 @@ def normalize_dim_dict(dd): dd['proc_grid_rank'] = 0 +def _positivify(index, size): + """Return a positive index offset from a Sequence's start.""" + if index is None or index >= 0: + return index + elif index < 0: + return size + index + +def _check_bounds(index, size): + """Check if an index is in bounds. + + Assumes a positive index as returned by _positivify. + """ + if index >= size: + raise IndexError("Index %r out of bounds" % index) + + def positivify(index, size): - """Given a negative index, return its positive equivalent.""" - if index is None: + """Check an index is within bounds and return a positive version. + + Parameters + ---------- + index : Integral or slice + size : Integral + + Raises + ------ + IndexError + for out-of-bounds indices + NotImplementedError + for negative steps + """ + if isinstance(index, Integral): + index = _positivify(index, size) + _check_bounds(index, size) return index - elif isinstance(index, Integral): - if 0 <= index < size: - return index - elif -size <= index < 0: - return size + index - else: - raise IndexError("Index %r out of bounds" % index) elif isinstance(index, slice): - if (index.step is not None) and (index.step < 0): - raise NotImplemented("Negative steps not implemented.") - start = positivify(index.start, size) - stop = positivify(index.stop, size) + start = _positivify(index.start, size) + stop = _positivify(index.stop, size) + # slice indexing doesn't check bounds return slice(start, stop, index.step) else: - raise TypeError("`index` must be an int or slice.") + raise TypeError("`index` must be of type Integral or slice.") def tuple_intersection(t1, t2): diff --git a/distarray/tests/test_metadata_utils.py b/distarray/tests/test_metadata_utils.py index 0821919a..6bec1f47 100644 --- a/distarray/tests/test_metadata_utils.py +++ b/distarray/tests/test_metadata_utils.py @@ -60,6 +60,11 @@ def test_negative_slice_with_step(self): expected = slice(3, 9, 2) self.assertEqual(result, expected) + def test_out_of_bounds_slice(self): + s = slice(50, 90) + result = metadata_utils.positivify(s, 10) + self.assertEqual(result, s) + if __name__ == '__main__': unittest.main(verbosity=2) From 0fa6ac36540d0faed54535d42a0f87495af83a8b Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Thu, 22 May 2014 12:44:47 -0500 Subject: [PATCH 13/73] Don't test for int, test for Integral --- distarray/dist/distarray.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/distarray/dist/distarray.py b/distarray/dist/distarray.py index deb50bcd..4fd0f570 100644 --- a/distarray/dist/distarray.py +++ b/distarray/dist/distarray.py @@ -18,6 +18,7 @@ from itertools import product from functools import reduce from collections import Sequence +from numbers import Integral import numpy as np @@ -28,6 +29,11 @@ __all__ = ['DistArray'] +# Register numpy integer types with numbers.Integral ABC. +Integral.register(np.signedinteger) +Integral.register(np.unsignedinteger) + + # --------------------------------------------------------------------------- # Code # --------------------------------------------------------------------------- @@ -138,7 +144,7 @@ def checked_getitem(arr, index): def raw_getitem(arr, index): return arr.global_index[index] - if isinstance(index, int) or isinstance(index, slice): + if isinstance(index, Integral) or isinstance(index, slice): tuple_index = (index,) return self.__getitem__(tuple_index) From d969417fb64c766b6cba396bae748994d5c3e04e Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Thu, 22 May 2014 12:45:19 -0500 Subject: [PATCH 14/73] Add `targets` arg to context.apply calls in DistArray.from_localarrays. --- distarray/dist/distarray.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/distarray/dist/distarray.py b/distarray/dist/distarray.py index 4fd0f570..f32a7f3b 100644 --- a/distarray/dist/distarray.py +++ b/distarray/dist/distarray.py @@ -90,7 +90,8 @@ def get_dim_datas_and_dtype(arr): # has context, get dist and dtype elif (distribution is None) and (dtype is None): - res = context.apply(get_dim_datas_and_dtype, args=(key,)) + res = context.apply(get_dim_datas_and_dtype, args=(key,), + targets=targets) dim_datas = [i[0] for i in res] dtypes = [i[1] for i in res] da._dtype = dtypes[0] @@ -101,7 +102,8 @@ def get_dim_datas_and_dtype(arr): # has context and dtype, get dist elif (distribution is None) and (dtype is not None): da._dtype = dtype - dim_datas = context.apply(getattr, args=(key, 'dim_data')) + dim_datas = context.apply(getattr, args=(key, 'dim_data'), + targets=targets) da.distribution = Distribution.from_dim_data_per_rank(context, dim_datas, targets) From f0ddae11323cc8d8dc17fc26ce5c71c5fddd1aa1 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Thu, 22 May 2014 14:18:56 -0500 Subject: [PATCH 15/73] Factor sanitize_indices out into metadata_utils and reuse it on the client side. Also factor out a _process_return_value function. --- distarray/dist/distarray.py | 88 ++++++++++++++++------------------- distarray/dist/maps.py | 5 -- distarray/local/localarray.py | 28 ++--------- distarray/metadata_utils.py | 15 ++++++ 4 files changed, 58 insertions(+), 78 deletions(-) diff --git a/distarray/dist/distarray.py b/distarray/dist/distarray.py index f32a7f3b..7f06d7c3 100644 --- a/distarray/dist/distarray.py +++ b/distarray/dist/distarray.py @@ -18,27 +18,21 @@ from itertools import product from functools import reduce from collections import Sequence -from numbers import Integral import numpy as np import distarray +from distarray.metadata_utils import sanitize_indices from distarray.dist.maps import Distribution from distarray.utils import _raise_nie __all__ = ['DistArray'] -# Register numpy integer types with numbers.Integral ABC. -Integral.register(np.signedinteger) -Integral.register(np.unsignedinteger) - - # --------------------------------------------------------------------------- # Code # --------------------------------------------------------------------------- - class DistArray(object): __array_priority__ = 20.0 @@ -133,10 +127,30 @@ def __repr__(self): (self.shape, self.targets) return s + def _process_return_value(self, result, return_proxy, index, targets): + + if return_proxy: + # proxy returned as result of slice + # slicing shouldn't alter the dtype + return DistArray.from_localarrays(key=result, + context=self.context, + targets=targets, + dtype=self.dtype) + + elif isinstance(result, Sequence): + somethings = [i for i in result if i is not None] + if len(somethings) == 0: + # using checked_getitem and all return None + raise IndexError("Index %r is is not present." % (index,)) + if len(somethings) == 1: + return somethings[0] + else: + return result + else: + assert False # impossible is nothing + + def __getitem__(self, index): - #TODO: FIXME: major performance improvements possible here, - # especially for special cases like `index == slice(None)`. - # This would dramatically improve tondarray's performance. # to be run locally def checked_getitem(arr, index): @@ -146,48 +160,24 @@ def checked_getitem(arr, index): def raw_getitem(arr, index): return arr.global_index[index] - if isinstance(index, Integral) or isinstance(index, slice): - tuple_index = (index,) - return self.__getitem__(tuple_index) + return_type, index = sanitize_indices(index) + return_proxy = (return_type == 'view') - elif isinstance(index, tuple): - targets = self.distribution.owning_targets(index) - return_proxy = True if any(isinstance(idx, slice) - for idx in index) else False - - args = (self.key, index) - if self.distribution.has_precise_index: - result = self.context.apply(raw_getitem, args=args, - targets=targets, - return_proxy=return_proxy) - else: - result = self.context.apply(checked_getitem, args=args, - targets=targets, - return_proxy=return_proxy) - - # process return value - if return_proxy: - # proxy returned as result of slice - # slicing shouldn't alter the dtype - return DistArray.from_localarrays(key=result, - context=self.context, - targets=targets, - dtype=self.dtype) - - elif isinstance(result, Sequence): - somethings = [i for i in result if i is not None] - if len(somethings) == 0: - # using checked_getitem and all return None - raise IndexError("Index %r is is not present." % (index,)) - if len(somethings) == 1: - return somethings[0] - else: - return result - else: - assert False # impossible is nothing + targets = self.distribution.owning_targets(index) + args = (self.key, index) + if self.distribution.has_precise_index: + result = self.context.apply(raw_getitem, args=args, + targets=targets, + return_proxy=return_proxy) else: - raise TypeError("Invalid index type.") + result = self.context.apply(checked_getitem, args=args, + targets=targets, + return_proxy=return_proxy) + + return self._process_return_value(result, return_proxy, index, + targets) + def __setitem__(self, index, value): #TODO: FIXME: major performance improvements possible here. diff --git a/distarray/dist/maps.py b/distarray/dist/maps.py index 83216fde..86d47f7f 100644 --- a/distarray/dist/maps.py +++ b/distarray/dist/maps.py @@ -42,11 +42,6 @@ tuple_intersection) -# Register numpy integer types with numbers.Integral ABC. -Integral.register(np.signedinteger) -Integral.register(np.unsignedinteger) - - def _dedup_dim_dicts(dim_dicts): """ Internal helper function to take a list of dimension dictionaries and remove the dupes. What remains should be one dictionary per rank diff --git a/distarray/local/localarray.py b/distarray/local/localarray.py index 446b6d39..a07023ed 100644 --- a/distarray/local/localarray.py +++ b/distarray/local/localarray.py @@ -12,39 +12,19 @@ # --------------------------------------------------------------------------- import math from collections import Mapping -from numbers import Integral import numpy as np from distarray.externals import six from distarray.externals.six.moves import zip +from distarray.metadata_utils import sanitize_indices from distarray.local.mpiutils import MPI from distarray.utils import _raise_nie from distarray.local import format, maps from distarray.local.error import InvalidDimensionError, IncompatibleArrayError -# Register numpy integer types with numbers.Integral ABC. -Integral.register(np.signedinteger) -Integral.register(np.unsignedinteger) - - -def _sanitize_indices(indices): - """Tuple-ize and classify `indices`.""" - if isinstance(indices, Integral): - return ('value', (indices,)) - elif isinstance(indices, slice): - return ('view', (indices,)) - elif all(isinstance(i, Integral) for i in indices): - return ('value', indices) - elif all(isinstance(i, Integral) or isinstance(i, slice) for i in indices): - return ('view', indices) - else: - raise TypeError("Index must be an int, a slice, or a sequence of " - "ints and slices") - - class GlobalIndex(object): """Object which provides access to global indexing on LocalArrays.""" def __init__(self, distribution, ndarray): @@ -71,7 +51,7 @@ def local_to_global(self, *local_ind): return self.distribution.global_from_local(*local_ind) def __getitem__(self, global_inds): - return_type, global_inds = _sanitize_indices(global_inds) + return_type, global_inds = sanitize_indices(global_inds) try: local_inds = self.global_to_local(*global_inds) except KeyError as err: @@ -87,7 +67,7 @@ def __getitem__(self, global_inds): assert False # impossible is nothing def __setitem__(self, global_inds, value): - _, global_inds = _sanitize_indices(global_inds) + _, global_inds = sanitize_indices(global_inds) try: local_inds = self.global_to_local(*global_inds) self.ndarray[local_inds] = value @@ -450,7 +430,7 @@ def __len__(self): def __getitem__(self, index): """Get a local item.""" - return_type, index = _sanitize_indices(index) + return_type, index = sanitize_indices(index) if return_type == 'value': return self.ndarray[index] elif return_type == 'view': diff --git a/distarray/metadata_utils.py b/distarray/metadata_utils.py index 7d3d0181..648a8a94 100644 --- a/distarray/metadata_utils.py +++ b/distarray/metadata_utils.py @@ -270,3 +270,18 @@ def tuple_intersection(t1, t2): stop = min(t1[1], t2[1]) start = max(t1[0], t2[0]) return (start, stop) if stop - start > 0 else None + + +def sanitize_indices(indices): + """Tuple-ize and classify `indices`.""" + if isinstance(indices, Integral): + return ('value', (indices,)) + elif isinstance(indices, slice): + return ('view', (indices,)) + elif all(isinstance(i, Integral) for i in indices): + return ('value', indices) + elif all(isinstance(i, Integral) or isinstance(i, slice) for i in indices): + return ('view', indices) + else: + raise TypeError("Index must be an Integral, a slice, or a sequence " + "of Integrals and slices") \ No newline at end of file From 0813be286402f93758a7e990e245c3e6e38dba44 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Thu, 22 May 2014 14:29:32 -0500 Subject: [PATCH 16/73] Fix positivify and add regression tests. --- distarray/metadata_utils.py | 4 ++-- distarray/tests/test_metadata_utils.py | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/distarray/metadata_utils.py b/distarray/metadata_utils.py index 648a8a94..e7d652a9 100644 --- a/distarray/metadata_utils.py +++ b/distarray/metadata_utils.py @@ -224,12 +224,12 @@ def _check_bounds(index, size): Assumes a positive index as returned by _positivify. """ - if index >= size: + if not 0 <= index < size: raise IndexError("Index %r out of bounds" % index) def positivify(index, size): - """Check an index is within bounds and return a positive version. + """Check that an index is within bounds and return a positive version. Parameters ---------- diff --git a/distarray/tests/test_metadata_utils.py b/distarray/tests/test_metadata_utils.py index 6bec1f47..2293076f 100644 --- a/distarray/tests/test_metadata_utils.py +++ b/distarray/tests/test_metadata_utils.py @@ -25,6 +25,14 @@ def test_negative_index(self): result = metadata_utils.positivify(-2, 10) self.assertEqual(result, 8) + def test_out_of_bounds_positive(self): + with self.assertRaises(IndexError): + metadata_utils.positivify(11, 10) + + def test_out_of_bounds_negative(self): + with self.assertRaises(IndexError): + metadata_utils.positivify(-51, 10) + def test_positive_slice(self): s = slice(5, 7) result = metadata_utils.positivify(s, 10) From 945914230e96493838ee096d9ef9503615eba3f3 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Thu, 22 May 2014 14:43:21 -0500 Subject: [PATCH 17/73] Get rid of reference to old `client_map` module --- distarray/dist/tests/test_maps.py | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/distarray/dist/tests/test_maps.py b/distarray/dist/tests/test_maps.py index 107897ad..6cc202e2 100644 --- a/distarray/dist/tests/test_maps.py +++ b/distarray/dist/tests/test_maps.py @@ -10,7 +10,7 @@ from distarray.externals.six.moves import range from distarray.dist.context import Context -from distarray.dist import maps as client_map +from distarray.dist import maps class TestClientMap(unittest.TestCase): @@ -23,8 +23,8 @@ def tearDown(self): def test_2D_bn(self): nrows, ncols = 31, 53 - cm = client_map.Distribution.from_shape(self.ctx, (nrows, ncols), - {0: 'b'}, (4, 1)) + cm = maps.Distribution.from_shape(self.ctx, (nrows, ncols), + {0: 'b'}, (4, 1)) chunksize = (nrows // 4) + 1 for _ in range(100): r, c = randrange(nrows), randrange(ncols) @@ -34,9 +34,8 @@ def test_2D_bn(self): def test_2D_bb(self): nrows, ncols = 3, 5 nprocs_per_dim = 2 - cm = client_map.Distribution.from_shape( - self.ctx, (nrows, ncols), ('b', 'b'), - (nprocs_per_dim, nprocs_per_dim)) + cm = maps.Distribution.from_shape(self.ctx, (nrows, ncols), ('b', 'b'), + (nprocs_per_dim, nprocs_per_dim)) row_chunks = nrows // nprocs_per_dim + 1 col_chunks = ncols // nprocs_per_dim + 1 for r in range(nrows): @@ -48,25 +47,23 @@ def test_2D_bb(self): def test_2D_cc(self): nrows, ncols = 3, 5 nprocs_per_dim = 2 - cm = client_map.Distribution.from_shape( - self.ctx, (nrows, ncols), ('c', 'c'), - (nprocs_per_dim, nprocs_per_dim)) + cm = maps.Distribution.from_shape(self.ctx, (nrows, ncols), ('c', 'c'), + (nprocs_per_dim, nprocs_per_dim)) for r in range(nrows): for c in range(ncols): rank = (r % nprocs_per_dim) * nprocs_per_dim + (c % nprocs_per_dim) actual = cm.owning_ranks((r,c)) self.assertSequenceEqual(actual, [rank]) - def test_is_compatible(self): nr, nc, nd = 10**5, 10**6, 10**4 - cm0 = client_map.Distribution.from_shape( - self.ctx, (nr, nc, nd), ('b', 'c', 'n')) + cm0 = maps.Distribution.from_shape(self.ctx, (nr, nc, nd), + ('b', 'c', 'n')) self.assertTrue(cm0.is_compatible(cm0)) - cm1 = client_map.Distribution.from_shape( - self.ctx, (nr, nc, nd), ('b', 'c', 'n')) + cm1 = maps.Distribution.from_shape(self.ctx, (nr, nc, nd), + ('b', 'c', 'n')) self.assertTrue(cm1.is_compatible(cm1)) self.assertTrue(cm0.is_compatible(cm1)) @@ -74,8 +71,8 @@ def test_is_compatible(self): nr -= 1; nc -= 1; nd -= 1 - cm2 = client_map.Distribution.from_shape( - self.ctx, (nr, nc, nd), ('b', 'c', 'n')) + cm2 = maps.Distribution.from_shape(self.ctx, (nr, nc, nd), + ('b', 'c', 'n')) self.assertFalse(cm1.is_compatible(cm2)) self.assertFalse(cm2.is_compatible(cm1)) From 19c7d52f4f7081977ed41a0e0b1f676a10b14b6b Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Thu, 22 May 2014 17:39:07 -0500 Subject: [PATCH 18/73] Add classmethod Distribution.from_slice. This method allows making a new client-side Distribution object from a Distribution and slice. --- distarray/dist/maps.py | 43 ++++++++++++++++++++++++++- distarray/dist/tests/test_maps.py | 49 +++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 1 deletion(-) diff --git a/distarray/dist/maps.py b/distarray/dist/maps.py index 86d47f7f..837ca410 100644 --- a/distarray/dist/maps.py +++ b/distarray/dist/maps.py @@ -192,6 +192,7 @@ def __init__(self, size, grid_size): msg = "grid_size for NoDistMap must be 1 (given %s)" raise ValueError(msg % grid_size) self.size = size + self.bounds = [(0, self.size)] def owners(self, idx): if isinstance(idx, Integral): @@ -493,6 +494,46 @@ def from_shape(cls, context, shape, dist=None, grid_shape=None, targets=None): for args in zip(self.shape, self.dist, self.grid_shape)] return self + @classmethod + def from_slice(cls, distribution, index_tuple): + """Make a Distribution from another Distribution and a slice.""" + self = cls.__new__(cls) + if not all(dist_type in {'n', 'b'} for dist_type in distribution.dist): + msg = "Slicing only implemented for 'n' and 'b' dist_types." + raise NotImplementedError(msg) + + new_targets = distribution.owning_targets(index_tuple) + global_dim_data = [] + # iterate over the dimensions + for map_, idx in zip(distribution.maps, index_tuple): + new_bounds = [0] + + if isinstance(idx, Integral): + # make an equivalent slice object + idx = slice(idx, idx+1) + + if isinstance(idx, slice): + start = idx.start if idx.start is not None else 0 + stop = idx.stop if idx.stop is not None else map_.bounds[-1] + # iterate over the processes in this dimension + for proc_bounds in map_.bounds: + intersection = tuple_intersection(proc_bounds, + (start, stop)) + if intersection: + size = intersection[1] - intersection[0] + new_bounds.append(size + new_bounds[-1]) + else: + msg = "Index must be a sequence of Integrals and slices." + raise TypeError(msg) + + global_dim_data.append({'dist_type': 'b', + 'bounds': new_bounds}) + + return self.__class__(context=distribution.context, + global_dim_data=global_dim_data, + targets=new_targets) + + def __init__(self, context, global_dim_data, targets=None): """Make a Distribution from a global_dim_data structure. @@ -592,7 +633,7 @@ def __init__(self, context, global_dim_data, targets=None): self.dist = tuple(m.dist for m in self.maps) self.grid_shape = tuple(m.grid_size for m in self.maps) - validate_grid_shape(self.grid_shape, self.dist, len(context.targets)) + validate_grid_shape(self.grid_shape, self.dist, len(self.targets)) nelts = reduce(operator.mul, self.grid_shape) self.rank_from_coords = np.arange(nelts).reshape(*self.grid_shape) diff --git a/distarray/dist/tests/test_maps.py b/distarray/dist/tests/test_maps.py index 6cc202e2..76c3311d 100644 --- a/distarray/dist/tests/test_maps.py +++ b/distarray/dist/tests/test_maps.py @@ -76,3 +76,52 @@ def test_is_compatible(self): self.assertFalse(cm1.is_compatible(cm2)) self.assertFalse(cm2.is_compatible(cm1)) + + +class TestFromSlice(unittest.TestCase): + + def setUp(self): + self.ctx = Context() + + def tearDown(self): + self.ctx.close() + + def test_from_partial_slice_1d(self): + d0 = maps.Distribution.from_shape(context=self.ctx, shape=(15,)) + + s = (slice(0, 3),) + d1 = maps.Distribution.from_slice(distribution=d0, index_tuple=s) + + self.assertEqual(len(d0.maps), len(d1.maps)) + self.assertSequenceEqual(d1.targets, [0]) + self.assertSequenceEqual(d1.shape, (3,)) + + def test_from_full_slice_1d(self): + d0 = maps.Distribution.from_shape(context=self.ctx, shape=(15,)) + + s = (slice(None),) + d1 = maps.Distribution.from_slice(distribution=d0, index_tuple=s) + + self.assertEqual(len(d0.maps), len(d1.maps)) + self.assertSequenceEqual(d1.targets, d0.targets) + + def test_from_full_slice_2d(self): + d0 = maps.Distribution.from_shape(context=self.ctx, shape=(15, 20)) + + s = (slice(None), slice(None)) + d1 = maps.Distribution.from_slice(distribution=d0, index_tuple=s) + + self.assertEqual(len(d0.maps), len(d1.maps)) + for m0, m1 in zip(d0.maps, d1.maps): + self.assertSequenceEqual(m0.bounds, m1.bounds) + self.assertSequenceEqual(d1.targets, d0.targets) + + def test_from_partial_slice_2d(self): + d0 = maps.Distribution.from_shape(context=self.ctx, shape=(15, 20)) + + s = (slice(3, 7), 4) + d1 = maps.Distribution.from_slice(distribution=d0, index_tuple=s) + + self.assertEqual(len(d0.maps), len(d1.maps)) + for m, expected in zip(d1.maps, ([(0, 1), (1, 4)], [(0, 1)])): + self.assertSequenceEqual(m.bounds, expected) From 35668f3f5578190004d9721269be50c8e0c89e4c Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Thu, 22 May 2014 19:08:05 -0500 Subject: [PATCH 19/73] `__getitem__` slicing works!? --- distarray/dist/distarray.py | 21 ++++++++++++---- distarray/dist/tests/test_distarray.py | 33 +++++++++++++++++++++----- distarray/local/localarray.py | 25 ++++++++++++++++--- 3 files changed, 65 insertions(+), 14 deletions(-) diff --git a/distarray/dist/distarray.py b/distarray/dist/distarray.py index 7f06d7c3..fd8d825d 100644 --- a/distarray/dist/distarray.py +++ b/distarray/dist/distarray.py @@ -157,15 +157,27 @@ def checked_getitem(arr, index): return arr.global_index.checked_getitem(index) # to be run locally - def raw_getitem(arr, index): - return arr.global_index[index] + def raw_getitem(arr, index, ddpr=None, comm=None): + if ddpr is not None and comm is not None: + from distarray.local.maps import Distribution + local_distribution = Distribution(ddpr[comm.Get_rank()], + comm=comm) + return arr.global_index.get_item(index, local_distribution) + else: + return arr.global_index[index] return_type, index = sanitize_indices(index) return_proxy = (return_type == 'view') targets = self.distribution.owning_targets(index) - args = (self.key, index) + args = [self.key, index] + if return_proxy: # returning a new DistArray view + new_distribution = Distribution.from_slice(self.distribution, + index) + ddpr = new_distribution.get_dim_data_per_rank() + args.extend([ddpr, new_distribution.comm]) + if self.distribution.has_precise_index: result = self.context.apply(raw_getitem, args=args, targets=targets, @@ -175,8 +187,7 @@ def raw_getitem(arr, index): targets=targets, return_proxy=return_proxy) - return self._process_return_value(result, return_proxy, index, - targets) + return self._process_return_value(result, return_proxy, index, targets) def __setitem__(self, index, value): diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index 54ef7317..b8f8e468 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -47,12 +47,6 @@ def test_set_and_getitem_block_dist(self): dap[-i] = i self.assertEqual(dap[-i], i) - def test_getitem_slice_block_dist(self): - size = 10 - expected = numpy.random.randint(10, size=size) - arr = self.dac.fromarray(expected) - assert_array_equal(arr[:], expected) - def test_set_and_getitem_nd_block_dist(self): size = 5 distribution = Distribution.from_shape(self.dac, (size, size), @@ -126,6 +120,33 @@ def test_global_tolocal_bug(self): numpy.testing.assert_array_equal(dap.tondarray(), ndarr) +class TestSlicing(unittest.TestCase): + + def setUp(self): + self.dac = Context() + + def tearDown(self): + self.dac.close() + + def test_getitem_full_slice_block_dist(self): + size = 10 + expected = numpy.random.randint(11, size=size) + arr = self.dac.fromarray(expected) + assert_array_equal(arr[:], expected) + + def test_getitem_partial_slice_block_dist(self): + size = 10 + expected = numpy.random.randint(10, size=size) + arr = self.dac.fromarray(expected) + assert_array_equal(arr[0:2], expected[0:2]) + + def test_getitem_slice_block_dist_2d(self): + shape = (10, 20) + expected = numpy.random.randint(10, size=shape) + arr = self.dac.fromarray(expected) + assert_array_equal(arr[2:6, 3:10], expected[2:6, 3:10]) + + class TestDistArrayCreationFromGlobalDimData(unittest.TestCase): def setUp(self): diff --git a/distarray/local/localarray.py b/distarray/local/localarray.py index a07023ed..a281a24f 100644 --- a/distarray/local/localarray.py +++ b/distarray/local/localarray.py @@ -50,6 +50,24 @@ def global_to_local(self, *global_ind): def local_to_global(self, *local_ind): return self.distribution.global_from_local(*local_ind) + def get_item(self, global_inds, new_distribution=None): + return_type, global_inds = sanitize_indices(global_inds) + try: + local_inds = self.global_to_local(*global_inds) + except KeyError as err: + raise IndexError(err) + + ndarray_view = self.ndarray[local_inds] + + if return_type == 'value': + return ndarray_view + elif return_type == 'view': + return LocalArray(distribution=new_distribution, + dtype=self.ndarray.dtype, + buf=ndarray_view) + else: + assert False # impossible is nothing + def __getitem__(self, global_inds): return_type, global_inds = sanitize_indices(global_inds) try: @@ -62,7 +80,8 @@ def __getitem__(self, global_inds): if return_type == 'value': return ndarray_view elif return_type == 'view': - return fromndarray_like(ndarray_view, self) + msg = "__getitem__ does not support slices. See `get_item`." + raise TypeError(msg) else: assert False # impossible is nothing @@ -434,8 +453,8 @@ def __getitem__(self, index): if return_type == 'value': return self.ndarray[index] elif return_type == 'view': - view = self.ndarray[index] - return fromndarray_like(view, self) + msg = "__getitem__ does not support slices. See `global_index.get_item`." + raise TypeError(msg) else: assert False # impossible is nothing From 96367c9ae4e974385f78175755155f095f94daa1 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Fri, 23 May 2014 12:42:42 -0500 Subject: [PATCH 20/73] Fix bug. --- distarray/dist/maps.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/distarray/dist/maps.py b/distarray/dist/maps.py index 837ca410..47562eff 100644 --- a/distarray/dist/maps.py +++ b/distarray/dist/maps.py @@ -514,9 +514,9 @@ def from_slice(cls, distribution, index_tuple): if isinstance(idx, slice): start = idx.start if idx.start is not None else 0 - stop = idx.stop if idx.stop is not None else map_.bounds[-1] # iterate over the processes in this dimension for proc_bounds in map_.bounds: + stop = idx.stop if idx.stop is not None else proc_bounds[-1] intersection = tuple_intersection(proc_bounds, (start, stop)) if intersection: From f5b0149d581622232877f1139ee2b6246b2b1810 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Fri, 23 May 2014 12:51:52 -0500 Subject: [PATCH 21/73] Make Distribution.from_slice into slice instancemethod --- distarray/dist/distarray.py | 3 +-- distarray/dist/maps.py | 14 ++++++-------- distarray/dist/tests/test_maps.py | 10 +++++----- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/distarray/dist/distarray.py b/distarray/dist/distarray.py index fd8d825d..aeb54212 100644 --- a/distarray/dist/distarray.py +++ b/distarray/dist/distarray.py @@ -173,8 +173,7 @@ def raw_getitem(arr, index, ddpr=None, comm=None): args = [self.key, index] if return_proxy: # returning a new DistArray view - new_distribution = Distribution.from_slice(self.distribution, - index) + new_distribution = self.distribution.slice(index) ddpr = new_distribution.get_dim_data_per_rank() args.extend([ddpr, new_distribution.comm]) diff --git a/distarray/dist/maps.py b/distarray/dist/maps.py index 47562eff..0bd9977e 100644 --- a/distarray/dist/maps.py +++ b/distarray/dist/maps.py @@ -494,18 +494,16 @@ def from_shape(cls, context, shape, dist=None, grid_shape=None, targets=None): for args in zip(self.shape, self.dist, self.grid_shape)] return self - @classmethod - def from_slice(cls, distribution, index_tuple): - """Make a Distribution from another Distribution and a slice.""" - self = cls.__new__(cls) - if not all(dist_type in {'n', 'b'} for dist_type in distribution.dist): + def slice(self, index_tuple): + """Make a new Distribution from a slice.""" + if not all(dist_type in {'n', 'b'} for dist_type in self.dist): msg = "Slicing only implemented for 'n' and 'b' dist_types." raise NotImplementedError(msg) - new_targets = distribution.owning_targets(index_tuple) + new_targets = self.owning_targets(index_tuple) global_dim_data = [] # iterate over the dimensions - for map_, idx in zip(distribution.maps, index_tuple): + for map_, idx in zip(self.maps, index_tuple): new_bounds = [0] if isinstance(idx, Integral): @@ -529,7 +527,7 @@ def from_slice(cls, distribution, index_tuple): global_dim_data.append({'dist_type': 'b', 'bounds': new_bounds}) - return self.__class__(context=distribution.context, + return self.__class__(context=self.context, global_dim_data=global_dim_data, targets=new_targets) diff --git a/distarray/dist/tests/test_maps.py b/distarray/dist/tests/test_maps.py index 76c3311d..00f73ac2 100644 --- a/distarray/dist/tests/test_maps.py +++ b/distarray/dist/tests/test_maps.py @@ -78,7 +78,7 @@ def test_is_compatible(self): self.assertFalse(cm2.is_compatible(cm1)) -class TestFromSlice(unittest.TestCase): +class TestSlice(unittest.TestCase): def setUp(self): self.ctx = Context() @@ -90,7 +90,7 @@ def test_from_partial_slice_1d(self): d0 = maps.Distribution.from_shape(context=self.ctx, shape=(15,)) s = (slice(0, 3),) - d1 = maps.Distribution.from_slice(distribution=d0, index_tuple=s) + d1 = d0.slice(index_tuple=s) self.assertEqual(len(d0.maps), len(d1.maps)) self.assertSequenceEqual(d1.targets, [0]) @@ -100,7 +100,7 @@ def test_from_full_slice_1d(self): d0 = maps.Distribution.from_shape(context=self.ctx, shape=(15,)) s = (slice(None),) - d1 = maps.Distribution.from_slice(distribution=d0, index_tuple=s) + d1 = d0.slice(index_tuple=s) self.assertEqual(len(d0.maps), len(d1.maps)) self.assertSequenceEqual(d1.targets, d0.targets) @@ -109,7 +109,7 @@ def test_from_full_slice_2d(self): d0 = maps.Distribution.from_shape(context=self.ctx, shape=(15, 20)) s = (slice(None), slice(None)) - d1 = maps.Distribution.from_slice(distribution=d0, index_tuple=s) + d1 =d0.slice(index_tuple=s) self.assertEqual(len(d0.maps), len(d1.maps)) for m0, m1 in zip(d0.maps, d1.maps): @@ -120,7 +120,7 @@ def test_from_partial_slice_2d(self): d0 = maps.Distribution.from_shape(context=self.ctx, shape=(15, 20)) s = (slice(3, 7), 4) - d1 = maps.Distribution.from_slice(distribution=d0, index_tuple=s) + d1 = d0.slice(index_tuple=s) self.assertEqual(len(d0.maps), len(d1.maps)) for m, expected in zip(d1.maps, ([(0, 1), (1, 4)], [(0, 1)])): From 4b829ad7d7295665bbf0ffca436065134b63b8c8 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Fri, 23 May 2014 12:54:21 -0500 Subject: [PATCH 22/73] Move new method below constructors. --- distarray/dist/maps.py | 76 +++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/distarray/dist/maps.py b/distarray/dist/maps.py index 0bd9977e..5f61a47e 100644 --- a/distarray/dist/maps.py +++ b/distarray/dist/maps.py @@ -494,44 +494,6 @@ def from_shape(cls, context, shape, dist=None, grid_shape=None, targets=None): for args in zip(self.shape, self.dist, self.grid_shape)] return self - def slice(self, index_tuple): - """Make a new Distribution from a slice.""" - if not all(dist_type in {'n', 'b'} for dist_type in self.dist): - msg = "Slicing only implemented for 'n' and 'b' dist_types." - raise NotImplementedError(msg) - - new_targets = self.owning_targets(index_tuple) - global_dim_data = [] - # iterate over the dimensions - for map_, idx in zip(self.maps, index_tuple): - new_bounds = [0] - - if isinstance(idx, Integral): - # make an equivalent slice object - idx = slice(idx, idx+1) - - if isinstance(idx, slice): - start = idx.start if idx.start is not None else 0 - # iterate over the processes in this dimension - for proc_bounds in map_.bounds: - stop = idx.stop if idx.stop is not None else proc_bounds[-1] - intersection = tuple_intersection(proc_bounds, - (start, stop)) - if intersection: - size = intersection[1] - intersection[0] - new_bounds.append(size + new_bounds[-1]) - else: - msg = "Index must be a sequence of Integrals and slices." - raise TypeError(msg) - - global_dim_data.append({'dist_type': 'b', - 'bounds': new_bounds}) - - return self.__class__(context=self.context, - global_dim_data=global_dim_data, - targets=new_targets) - - def __init__(self, context, global_dim_data, targets=None): """Make a Distribution from a global_dim_data structure. @@ -646,6 +608,44 @@ def has_precise_index(self): """ return not any(isinstance(m, UnstructuredMap) for m in self.maps) + def slice(self, index_tuple): + """Make a new Distribution from a slice.""" + if not all(dist_type in {'n', 'b'} for dist_type in self.dist): + msg = "Slicing only implemented for 'n' and 'b' dist_types." + raise NotImplementedError(msg) + + new_targets = self.owning_targets(index_tuple) + global_dim_data = [] + # iterate over the dimensions + for map_, idx in zip(self.maps, index_tuple): + new_bounds = [0] + + if isinstance(idx, Integral): + # make an equivalent slice object + idx = slice(idx, idx+1) + + if isinstance(idx, slice): + start = idx.start if idx.start is not None else 0 + # iterate over the processes in this dimension + for proc_bounds in map_.bounds: + stop = idx.stop if idx.stop is not None else proc_bounds[-1] + intersection = tuple_intersection(proc_bounds, + (start, stop)) + if intersection: + size = intersection[1] - intersection[0] + new_bounds.append(size + new_bounds[-1]) + else: + msg = "Index must be a sequence of Integrals and slices." + raise TypeError(msg) + + global_dim_data.append({'dist_type': 'b', + 'bounds': new_bounds}) + + return self.__class__(context=self.context, + global_dim_data=global_dim_data, + targets=new_targets) + + def owning_ranks(self, idxs): """ Returns a list of ranks that may *possibly* own the location in the `idxs` tuple. From e37f4729aaa12aec24d88e959e9f861df6537098 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Fri, 23 May 2014 15:39:40 -0500 Subject: [PATCH 23/73] Clean up Distribution slice tests. --- distarray/dist/tests/test_maps.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/distarray/dist/tests/test_maps.py b/distarray/dist/tests/test_maps.py index 00f73ac2..2cca78c4 100644 --- a/distarray/dist/tests/test_maps.py +++ b/distarray/dist/tests/test_maps.py @@ -90,7 +90,7 @@ def test_from_partial_slice_1d(self): d0 = maps.Distribution.from_shape(context=self.ctx, shape=(15,)) s = (slice(0, 3),) - d1 = d0.slice(index_tuple=s) + d1 = d0.slice(s) self.assertEqual(len(d0.maps), len(d1.maps)) self.assertSequenceEqual(d1.targets, [0]) @@ -100,7 +100,7 @@ def test_from_full_slice_1d(self): d0 = maps.Distribution.from_shape(context=self.ctx, shape=(15,)) s = (slice(None),) - d1 = d0.slice(index_tuple=s) + d1 = d0.slice(s) self.assertEqual(len(d0.maps), len(d1.maps)) self.assertSequenceEqual(d1.targets, d0.targets) @@ -109,7 +109,7 @@ def test_from_full_slice_2d(self): d0 = maps.Distribution.from_shape(context=self.ctx, shape=(15, 20)) s = (slice(None), slice(None)) - d1 =d0.slice(index_tuple=s) + d1 =d0.slice(s) self.assertEqual(len(d0.maps), len(d1.maps)) for m0, m1 in zip(d0.maps, d1.maps): @@ -120,7 +120,7 @@ def test_from_partial_slice_2d(self): d0 = maps.Distribution.from_shape(context=self.ctx, shape=(15, 20)) s = (slice(3, 7), 4) - d1 = d0.slice(index_tuple=s) + d1 = d0.slice(s) self.assertEqual(len(d0.maps), len(d1.maps)) for m, expected in zip(d1.maps, ([(0, 1), (1, 4)], [(0, 1)])): From 42e64ccf8e2c424d29817229546d225a00736286 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Fri, 23 May 2014 15:42:38 -0500 Subject: [PATCH 24/73] Slightly expand a Distribution.slice test. --- distarray/dist/tests/test_maps.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/distarray/dist/tests/test_maps.py b/distarray/dist/tests/test_maps.py index 2cca78c4..052ed612 100644 --- a/distarray/dist/tests/test_maps.py +++ b/distarray/dist/tests/test_maps.py @@ -104,12 +104,13 @@ def test_from_full_slice_1d(self): self.assertEqual(len(d0.maps), len(d1.maps)) self.assertSequenceEqual(d1.targets, d0.targets) + self.assertSequenceEqual(d1.maps[0].bounds, d0.maps[0].bounds) def test_from_full_slice_2d(self): d0 = maps.Distribution.from_shape(context=self.ctx, shape=(15, 20)) s = (slice(None), slice(None)) - d1 =d0.slice(s) + d1 = d0.slice(s) self.assertEqual(len(d0.maps), len(d1.maps)) for m0, m1 in zip(d0.maps, d1.maps): From 909a64f37865b19d93b1dfe95c429f41865847dc Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Fri, 23 May 2014 15:48:32 -0500 Subject: [PATCH 25/73] Add a Distribution.slice test. --- distarray/dist/tests/test_maps.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/distarray/dist/tests/test_maps.py b/distarray/dist/tests/test_maps.py index 052ed612..aeb22002 100644 --- a/distarray/dist/tests/test_maps.py +++ b/distarray/dist/tests/test_maps.py @@ -126,3 +126,12 @@ def test_from_partial_slice_2d(self): self.assertEqual(len(d0.maps), len(d1.maps)) for m, expected in zip(d1.maps, ([(0, 1), (1, 4)], [(0, 1)])): self.assertSequenceEqual(m.bounds, expected) + + def test_full_slice_with_int_2d(self): + d0 = maps.Distribution.from_shape(context=self.ctx, shape=(15, 20)) + + s = (slice(None), 4) + d1 = d0.slice(s) + + self.assertEqual(len(d0.maps), len(d1.maps)) + self.assertEqual(d1.shape, (15, 1)) From cb43abfbf1b3e69cde2aac579a985fee19d8a878 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Fri, 23 May 2014 16:04:56 -0500 Subject: [PATCH 26/73] Generalize sanitize_indices for incomplete indexing. and test. --- distarray/metadata_utils.py | 26 +++++++++++---- distarray/tests/test_metadata_utils.py | 46 ++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 7 deletions(-) diff --git a/distarray/metadata_utils.py b/distarray/metadata_utils.py index e7d652a9..3054c7e3 100644 --- a/distarray/metadata_utils.py +++ b/distarray/metadata_utils.py @@ -272,16 +272,28 @@ def tuple_intersection(t1, t2): return (start, stop) if stop - start > 0 else None -def sanitize_indices(indices): +def sanitize_indices(indices, ndim=None): """Tuple-ize and classify `indices`.""" if isinstance(indices, Integral): - return ('value', (indices,)) + rtype, sanitized = 'value', (indices,) elif isinstance(indices, slice): - return ('view', (indices,)) + rtype, sanitized = 'view', (indices,) elif all(isinstance(i, Integral) for i in indices): - return ('value', indices) + rtype, sanitized = 'value', indices elif all(isinstance(i, Integral) or isinstance(i, slice) for i in indices): - return ('view', indices) + rtype, sanitized = 'view', indices else: - raise TypeError("Index must be an Integral, a slice, or a sequence " - "of Integrals and slices") \ No newline at end of file + msg = ("Index must be an Integral, a slice, or a sequence of " + "Integrals and slices.") + raise TypeError(msg) + + if ndim is not None: + diff = ndim - len(sanitized) + if diff < 0: + raise IndexError("Too many indices.") + if diff > 0: + # allow incomplete indexing + rtype = 'view' + sanitized = sanitized + (slice(None),) * diff + + return (rtype, sanitized) \ No newline at end of file diff --git a/distarray/tests/test_metadata_utils.py b/distarray/tests/test_metadata_utils.py index 2293076f..4feb0508 100644 --- a/distarray/tests/test_metadata_utils.py +++ b/distarray/tests/test_metadata_utils.py @@ -74,5 +74,51 @@ def test_out_of_bounds_slice(self): self.assertEqual(result, s) +class TestSanitizeIndices(unittest.TestCase): + + def test_value_index(self): + tag, sanitized = metadata_utils.sanitize_indices(10) + self.assertSequenceEqual(sanitized, (10,)) + self.assertEqual(tag, 'value') + + def test_slice_index(self): + tag, sanitized = metadata_utils.sanitize_indices(slice(10, 20)) + self.assertSequenceEqual(sanitized, (slice(10, 20),)) + self.assertEqual(tag, 'view') + + def test_tuple_of_values(self): + tag, sanitized = metadata_utils.sanitize_indices((5, 10)) + self.assertSequenceEqual(sanitized, (5, 10)) + self.assertEqual(tag, 'value') + + def test_tuple_of_slices(self): + slices = slice(10, 20), slice(20, 30), slice(40, 50) + tag, sanitized = metadata_utils.sanitize_indices(slices) + self.assertSequenceEqual(sanitized, slices) + self.assertEqual(tag, 'view') + + def test_tuple_of_mixed(self): + slices = slice(10, 20), 25, slice(40, 50) + tag, sanitized = metadata_utils.sanitize_indices(slices) + self.assertSequenceEqual(sanitized, slices) + self.assertEqual(tag, 'view') + + def test_incomplete_indexing_values(self): + slices = 10, 20, 25, 40, 50 + tag, sanitized = metadata_utils.sanitize_indices(slices, ndim=10) + self.assertSequenceEqual(sanitized, slices + (slice(None),) * 5) + self.assertEqual(tag, 'view') + + def test_incomplete_indexing_mixed(self): + slices = slice(10, 20), 25, slice(40, 50) + tag, sanitized = metadata_utils.sanitize_indices(slices, ndim=10) + self.assertSequenceEqual(sanitized, slices + (slice(None),) * 7) + self.assertEqual(tag, 'view') + + def test_too_many_indices(self): + with self.assertRaises(IndexError): + metadata_utils.sanitize_indices((2, 3, 4), ndim=2) + + if __name__ == '__main__': unittest.main(verbosity=2) From 61788f070a4e1d4b429b769116c2163deb4fd914 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Fri, 23 May 2014 16:59:35 -0500 Subject: [PATCH 27/73] Fill out sanitize_indices docstring. --- distarray/metadata_utils.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/distarray/metadata_utils.py b/distarray/metadata_utils.py index 3054c7e3..7d9783a0 100644 --- a/distarray/metadata_utils.py +++ b/distarray/metadata_utils.py @@ -273,7 +273,24 @@ def tuple_intersection(t1, t2): def sanitize_indices(indices, ndim=None): - """Tuple-ize and classify `indices`.""" + """Classify and sanitize `indices`. + + * Wrap Integral or slice indices into tuples + * Classify as 'value' or 'view' + * If the length of the tuple-ized `indices` is < ndim (and it's + provided), add slice(None)'s to indices until `indices` is ndim long + + Raises + ------ + TypeError + If `indices` is other than Integral, slice or a Sequence of these + IndexError + If len(indices) > ndim + + Returns + ------- + 2-tuple of (str, ndim-tuple of slices and Integral values) + """ if isinstance(indices, Integral): rtype, sanitized = 'value', (indices,) elif isinstance(indices, slice): From 70195c069dd299b3ebba3e97a3af36f44a0a22b6 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Fri, 23 May 2014 16:59:52 -0500 Subject: [PATCH 28/73] Remove a competing sanitize_indices. --- distarray/tests/test_utils.py | 18 ------------------ distarray/utils.py | 31 ------------------------------- 2 files changed, 49 deletions(-) diff --git a/distarray/tests/test_utils.py b/distarray/tests/test_utils.py index c6308699..50202b7c 100644 --- a/distarray/tests/test_utils.py +++ b/distarray/tests/test_utils.py @@ -31,24 +31,6 @@ def test_mult_partitions(self): self.assertEqual(utils.mult_partitions(6, 3), [(1, 1, 6), (1, 2, 3)]) -class TestSanitizeIndices(unittest.TestCase): - - def test_point(self): - itype, inds = utils.sanitize_indices(1) - self.assertEqual(itype, 'point') - self.assertEqual(inds, (1,)) - - def test_slice(self): - itype, inds = utils.sanitize_indices(slice(1,10)) - self.assertEqual(itype, 'view') - self.assertEqual(inds, (slice(1,10),)) - - def test_mixed(self): - provided = (5, 3, slice(7, 10, 2), 99, slice(1,10)) - itype, inds = utils.sanitize_indices(provided) - self.assertEqual(itype, 'view') - self.assertEqual(inds, provided) - class TestSliceIntersection(unittest.TestCase): diff --git a/distarray/utils.py b/distarray/utils.py index bf1fff80..0ef854d3 100644 --- a/distarray/utils.py +++ b/distarray/utils.py @@ -94,37 +94,6 @@ def _raise_nie(): raise NotImplementedError(msg) -def sanitize_indices(indices): - """Check and possibly sanitize indices. - - Parameters - ---------- - indices : int, slice, or sequence of ints and slices - If an int or slice is passed in, it is converted to a - 1-tuple. - - Returns - ------- - 2-tuple - ('point', indices) if all `indices` are ints, or - ('view', indices) if some `indices` are slices. - - Raises - ------ - TypeError - If `indices` is not all ints or slices. - """ - - if isinstance(indices, int) or isinstance(indices, slice): - return sanitize_indices((indices,)) - elif all(isinstance(i, int) for i in indices): - return 'point', indices - elif all(isinstance(i, int) or isinstance(i, slice) for i in indices): - return 'view', indices - else: - raise TypeError("Index must be a sequence of ints and slices") - - def slice_intersection(s1, s2): """Compute a slice that represents the intersection of two slices. From c2d63e2d78acdbd12c7c4b4fcc8243a1b6d8f496 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Fri, 23 May 2014 17:00:37 -0500 Subject: [PATCH 29/73] Add more tests to test_distarray. Some fail. --- distarray/dist/tests/test_distarray.py | 56 ++++++++++++++++++++++---- 1 file changed, 49 insertions(+), 7 deletions(-) diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index b8f8e468..6ec85bb1 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -120,7 +120,7 @@ def test_global_tolocal_bug(self): numpy.testing.assert_array_equal(dap.tondarray(), ndarr) -class TestSlicing(unittest.TestCase): +class TestGetItemSlicing(unittest.TestCase): def setUp(self): self.dac = Context() @@ -128,23 +128,63 @@ def setUp(self): def tearDown(self): self.dac.close() - def test_getitem_full_slice_block_dist(self): + def test_full_slice_block_dist(self): size = 10 expected = numpy.random.randint(11, size=size) arr = self.dac.fromarray(expected) - assert_array_equal(arr[:], expected) + assert_array_equal(arr[:].toarray(), expected) - def test_getitem_partial_slice_block_dist(self): + def test_partial_slice_block_dist(self): size = 10 expected = numpy.random.randint(10, size=size) arr = self.dac.fromarray(expected) - assert_array_equal(arr[0:2], expected[0:2]) + assert_array_equal(arr[0:2].toarray(), expected[0:2]) - def test_getitem_slice_block_dist_2d(self): + def test_slice_a_slice_block_dist_0(self): + size = 10 + expected = numpy.random.randint(10, size=size) + arr = self.dac.fromarray(expected) + s0 = arr[:9] + s1 = s0[0:5] + s2 = s1[:2] + assert_array_equal(s2.toarray(), expected[:2]) + + def test_slice_a_slice_block_dist_1(self): + size = 10 + expected = numpy.random.randint(10, size=size) + arr = self.dac.fromarray(expected) + s0 = arr[:9] + s1 = s0[0:5] + s2 = s1[-2:] + assert_array_equal(s2.toarray(), expected[3:5]) + + def test_partial_slice_block_dist_2d(self): + shape = (10, 20) + expected = numpy.random.randint(10, size=shape) + arr = self.dac.fromarray(expected) + assert_array_equal(arr[2:6, 3:10].toarray(), expected[2:6, 3:10]) + + @unittest.skip('') + def test_partial_negative_slice_block_dist_2d(self): shape = (10, 20) expected = numpy.random.randint(10, size=shape) arr = self.dac.fromarray(expected) - assert_array_equal(arr[2:6, 3:10], expected[2:6, 3:10]) + assert_array_equal(arr[-6:-2, -10:-3].toarray(), + expected[-6:-2, -10:-3]) + + @unittest.skip('') + def test_incomplete_slice_block_dist_2d(self): + shape = (10, 20) + expected = numpy.random.randint(10, size=shape) + arr = self.dac.fromarray(expected) + assert_array_equal(arr[3:9].toarray(), expected[3:9]) + + @unittest.skip('') + def test_incomplete_index_block_dist_2d(self): + shape = (10, 20) + expected = numpy.random.randint(10, size=shape) + arr = self.dac.fromarray(expected) + assert_array_equal(arr[1].toarray(), expected[1]) class TestDistArrayCreationFromGlobalDimData(unittest.TestCase): @@ -395,6 +435,7 @@ def test_fromfunction(self): result = self.context.fromfunction(fn, shape, dtype=int) assert_array_equal(expected, result.tondarray()) + class TestDistArrayCreationSubSet(unittest.TestCase): def setUp(self): @@ -505,5 +546,6 @@ def with_distribution_and_context(self): context=self.context, distribution=self.distribution) + if __name__ == '__main__': unittest.main(verbosity=2) From 514857b5b2fcb4dfe0e183ecbeece1830a22fb23 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Fri, 23 May 2014 17:01:09 -0500 Subject: [PATCH 30/73] Add a call to positivify. --- distarray/dist/distarray.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/distarray/dist/distarray.py b/distarray/dist/distarray.py index aeb54212..59e8cedc 100644 --- a/distarray/dist/distarray.py +++ b/distarray/dist/distarray.py @@ -22,7 +22,7 @@ import numpy as np import distarray -from distarray.metadata_utils import sanitize_indices +from distarray.metadata_utils import sanitize_indices, positivify from distarray.dist.maps import Distribution from distarray.utils import _raise_nie @@ -166,7 +166,9 @@ def raw_getitem(arr, index, ddpr=None, comm=None): else: return arr.global_index[index] - return_type, index = sanitize_indices(index) + return_type, index = sanitize_indices(index, ndim=self.ndim) + index = tuple(positivify(i, m.size) + for (i, m) in zip(index, self.distribution.maps)) return_proxy = (return_type == 'view') targets = self.distribution.owning_targets(index) From b392a8478db26d4a924eba5ca87cf5428dd1feef Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Fri, 23 May 2014 17:50:58 -0500 Subject: [PATCH 31/73] Call positivify in sanitize_indices... and use sanitize_indices everywhere. --- distarray/dist/distarray.py | 38 +++++++++++++++-------------------- distarray/dist/maps.py | 4 ++-- distarray/local/maps.py | 4 ++-- distarray/metadata_utils.py | 40 ++++++++++++++++++++----------------- 4 files changed, 42 insertions(+), 44 deletions(-) diff --git a/distarray/dist/distarray.py b/distarray/dist/distarray.py index 59e8cedc..6b02171f 100644 --- a/distarray/dist/distarray.py +++ b/distarray/dist/distarray.py @@ -22,7 +22,7 @@ import numpy as np import distarray -from distarray.metadata_utils import sanitize_indices, positivify +from distarray.metadata_utils import sanitize_indices from distarray.dist.maps import Distribution from distarray.utils import _raise_nie @@ -166,9 +166,8 @@ def raw_getitem(arr, index, ddpr=None, comm=None): else: return arr.global_index[index] - return_type, index = sanitize_indices(index, ndim=self.ndim) - index = tuple(positivify(i, m.size) - for (i, m) in zip(index, self.distribution.maps)) + return_type, index = sanitize_indices(index, ndim=self.ndim, + shape=self.shape) return_proxy = (return_type == 'view') targets = self.distribution.owning_targets(index) @@ -206,26 +205,21 @@ def checked_setitem(arr, index, value): def raw_setitem(arr, index, value): arr.global_index[index] = value - if isinstance(index, int) or isinstance(index, slice): - tuple_index = (index,) - return self.__setitem__(tuple_index, value) + _, index = sanitize_indices(index, ndim=self.ndim, shape=self.shape) - elif isinstance(index, tuple): - targets = self.distribution.owning_targets(index) - args = (self.key, index, value) - if self.distribution.has_precise_index: - self.context.apply(raw_setitem, args=args, targets=targets) - else: - result = self.context.apply(checked_setitem, args=args, - targets=targets) - result = [i for i in result if i is not None] - if len(result) > 1: - raise IndexError("Setting more than one result (%s) is " - "not supported yet." % (result,)) - elif result == []: - raise IndexError("Index %s is out of bounds" % (index,)) + targets = self.distribution.owning_targets(index) + args = (self.key, index, value) + if self.distribution.has_precise_index: + self.context.apply(raw_setitem, args=args, targets=targets) else: - raise TypeError("Invalid index type.") + result = self.context.apply(checked_setitem, args=args, + targets=targets) + result = [i for i in result if i is not None] + if len(result) > 1: + raise IndexError("Setting more than one result (%s) is " + "not supported yet." % (result,)) + elif result == []: + raise IndexError("Index %s is out of bounds" % (index,)) @property def context(self): diff --git a/distarray/dist/maps.py b/distarray/dist/maps.py index 5f61a47e..e768cfb8 100644 --- a/distarray/dist/maps.py +++ b/distarray/dist/maps.py @@ -35,7 +35,7 @@ from distarray.metadata_utils import (normalize_dist, normalize_grid_shape, make_grid_shape, - positivify, + sanitize_indices, validate_grid_shape, _start_stop_block, normalize_dim_dict, @@ -658,7 +658,7 @@ def owning_ranks(self, idxs): If the `idxs` tuple is out of bounds, raises `IndexError`. """ - idxs = map(positivify, idxs, self.shape) # positivify and check + _, idxs = sanitize_indices(idxs, ndim=self.ndim, shape=self.shape) dim_coord_hits = [m.owners(idx) for (m, idx) in zip(self.maps, idxs)] all_coords = product(*dim_coord_hits) ranks = [self.rank_from_coords[c] for c in all_coords] diff --git a/distarray/local/maps.py b/distarray/local/maps.py index 0bb572cd..23c08175 100644 --- a/distarray/local/maps.py +++ b/distarray/local/maps.py @@ -30,7 +30,7 @@ from distarray.local import construct from distarray.metadata_utils import (validate_grid_shape, make_grid_shape, normalize_grid_shape, normalize_dist, - distribute_indices, positivify) + distribute_indices, sanitize_indices) # Register numpy integer types with numbers.Integral ABC. @@ -142,7 +142,7 @@ def rank_from_coords(self, coords): def local_from_global(self, *global_ind): """ Given `global_ind` indices, translate into local indices.""" - global_ind = tuple(map(positivify, global_ind, self.global_shape)) + _, idxs = sanitize_indices(global_ind, self.ndim, self.global_shape) return tuple(self._maps[dim].local_from_global(global_ind[dim]) for dim in range(self.ndim)) diff --git a/distarray/metadata_utils.py b/distarray/metadata_utils.py index 7d9783a0..d855b498 100644 --- a/distarray/metadata_utils.py +++ b/distarray/metadata_utils.py @@ -14,7 +14,7 @@ from distarray import utils from distarray.externals.six import next -from distarray.externals.six.moves import map +from distarray.externals.six.moves import map, zip # Register numpy integer types with numbers.Integral ABC. @@ -228,6 +228,22 @@ def _check_bounds(index, size): raise IndexError("Index %r out of bounds" % index) +def tuple_intersection(t1, t2): + """Compute intersection of two (start, stop) tuples. + + Parameters + ---------- + t1, t2 : 2-tuples + + Returns + ------- + 2-tuple or None + """ + stop = min(t1[1], t2[1]) + start = max(t1[0], t2[0]) + return (start, stop) if stop - start > 0 else None + + def positivify(index, size): """Check that an index is within bounds and return a positive version. @@ -256,29 +272,14 @@ def positivify(index, size): raise TypeError("`index` must be of type Integral or slice.") -def tuple_intersection(t1, t2): - """Compute intersection of two (start, stop) tuples. - - Parameters - ---------- - t1, t2 : 2-tuples - - Returns - ------- - 2-tuple or None - """ - stop = min(t1[1], t2[1]) - start = max(t1[0], t2[0]) - return (start, stop) if stop - start > 0 else None - - -def sanitize_indices(indices, ndim=None): +def sanitize_indices(indices, ndim=None, shape=None): """Classify and sanitize `indices`. * Wrap Integral or slice indices into tuples * Classify as 'value' or 'view' * If the length of the tuple-ized `indices` is < ndim (and it's provided), add slice(None)'s to indices until `indices` is ndim long + * If `shape` is provided, call `positivify` on the indices Raises ------ @@ -313,4 +314,7 @@ def sanitize_indices(indices, ndim=None): rtype = 'view' sanitized = sanitized + (slice(None),) * diff + if shape is not None: + sanitized = tuple(positivify(i, size) for (i, size) in zip(sanitized, + shape)) return (rtype, sanitized) \ No newline at end of file From a9f161ca971896ba79e8a9ff93a257892e2ce57a Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Fri, 23 May 2014 17:52:14 -0500 Subject: [PATCH 32/73] Whitespace. --- distarray/tests/test_utils.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/distarray/tests/test_utils.py b/distarray/tests/test_utils.py index 50202b7c..7dd37b1b 100644 --- a/distarray/tests/test_utils.py +++ b/distarray/tests/test_utils.py @@ -87,5 +87,7 @@ def test_count_round_trips(self): view.execute('42') self.assertEqual(r.count, len(view)) + + if __name__ == '__main__': unittest.main(verbosity=2) From 6f284a0d55976c3678e51651740fb99f6bb408ad Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Fri, 23 May 2014 18:46:27 -0500 Subject: [PATCH 33/73] Call `sanitize_indices` with full args. --- distarray/local/localarray.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/distarray/local/localarray.py b/distarray/local/localarray.py index a281a24f..4abf88dc 100644 --- a/distarray/local/localarray.py +++ b/distarray/local/localarray.py @@ -51,7 +51,9 @@ def local_to_global(self, *local_ind): return self.distribution.global_from_local(*local_ind) def get_item(self, global_inds, new_distribution=None): - return_type, global_inds = sanitize_indices(global_inds) + return_type, global_inds = sanitize_indices(global_inds, + ndim=self.distribution.ndim, + shape=self.distribution.global_shape) try: local_inds = self.global_to_local(*global_inds) except KeyError as err: From 3287d2da0589792ba419b3bc5977acf93a245ec5 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Fri, 23 May 2014 18:46:53 -0500 Subject: [PATCH 34/73] Rename a value more descriptively. --- distarray/local/localarray.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/distarray/local/localarray.py b/distarray/local/localarray.py index 4abf88dc..1a27d43b 100644 --- a/distarray/local/localarray.py +++ b/distarray/local/localarray.py @@ -59,14 +59,14 @@ def get_item(self, global_inds, new_distribution=None): except KeyError as err: raise IndexError(err) - ndarray_view = self.ndarray[local_inds] + value_or_view = self.ndarray[local_inds] if return_type == 'value': - return ndarray_view + return value_or_view elif return_type == 'view': return LocalArray(distribution=new_distribution, dtype=self.ndarray.dtype, - buf=ndarray_view) + buf=value_or_view) else: assert False # impossible is nothing From af94432101c8083c65520caa53a20d447c0a716c Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Mon, 26 May 2014 15:48:00 -0500 Subject: [PATCH 35/73] Add a local slicing test. --- .../local/tests/paralleltest_localarray.py | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/distarray/local/tests/paralleltest_localarray.py b/distarray/local/tests/paralleltest_localarray.py index d160c699..52de3add 100644 --- a/distarray/local/tests/paralleltest_localarray.py +++ b/distarray/local/tests/paralleltest_localarray.py @@ -7,11 +7,12 @@ import unittest import numpy as np +from numpy.testing import assert_array_equal from distarray import utils from distarray.testing import (MpiTestCase, assert_localarrays_allclose, assert_localarrays_equal) -from distarray.local.localarray import LocalArray, ndenumerate +from distarray.local.localarray import LocalArray, ndenumerate, ones from distarray.local.maps import Distribution from distarray.local.error import InvalidDimensionError, IncompatibleArrayError @@ -339,6 +340,43 @@ def test_pack_unpack_index(self): self.assertEqual(global_inds, a.unpack_index(packed_ind)) +class TestSlicing(MpiTestCase): + + comm_size = 2 + + def test_slicing(self): + distribution = Distribution.from_shape((16, 16), dist=('b', 'n'), + comm=self.comm) + a = ones(distribution) + if self.comm.Get_rank() == 0: + dd00 = {"dist_type": 'b', + "size": 5, + "start": 0, + "stop": 3, + "proc_grid_size": 2, + "proc_grid_rank": 0} + dd01 = {"dist_type": 'n', + "size": 16} + + new_distribution = Distribution([dd00, dd01], comm=self.comm) + rvals = a.global_index.get_item((slice(5, None), slice(None)), + new_distribution=new_distribution) + assert_array_equal(rvals, np.ones((3, 16))) + + elif self.comm.Get_rank() == 1: + dd10 = {"dist_type": 'b', + "size": 5, + "start": 3, + "stop": 5, + "proc_grid_size": 2, + "proc_grid_rank": 1} + dd11 = {"dist_type": 'n', + "size": 16} + new_distribution = Distribution([dd10, dd11], comm=self.comm) + rvals = a.global_index.get_item((slice(None, 10), slice(None)), + new_distribution=new_distribution) + assert_array_equal(rvals, np.ones((2, 16))) + class TestLocalArrayMethods(MpiTestCase): ddpr = [ From 1a86d819f46342d08d61a6e2339bd86967ad8be0 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Mon, 26 May 2014 15:48:59 -0500 Subject: [PATCH 36/73] Fix the slicing bug. Prevent `local_from_global` induced negative indices in local maps. And refactor a bit. --- distarray/dist/distarray.py | 44 +++++++++++++------------- distarray/dist/tests/test_distarray.py | 1 - distarray/local/localarray.py | 23 ++++---------- distarray/local/maps.py | 2 +- 4 files changed, 30 insertions(+), 40 deletions(-) diff --git a/distarray/dist/distarray.py b/distarray/dist/distarray.py index 6b02171f..391b46f9 100644 --- a/distarray/dist/distarray.py +++ b/distarray/dist/distarray.py @@ -157,36 +157,36 @@ def checked_getitem(arr, index): return arr.global_index.checked_getitem(index) # to be run locally - def raw_getitem(arr, index, ddpr=None, comm=None): - if ddpr is not None and comm is not None: - from distarray.local.maps import Distribution - local_distribution = Distribution(ddpr[comm.Get_rank()], - comm=comm) - return arr.global_index.get_item(index, local_distribution) - else: - return arr.global_index[index] + def raw_getitem(arr, index): + return arr.global_index[index] + + # to be run locally + def get_slice(arr, index, ddpr, comm): + from distarray.local.maps import Distribution + local_distribution = Distribution(ddpr[comm.Get_rank()], + comm=comm) + return arr.global_index.get_slice(index, local_distribution) return_type, index = sanitize_indices(index, ndim=self.ndim, shape=self.shape) return_proxy = (return_type == 'view') - targets = self.distribution.owning_targets(index) args = [self.key, index] - if return_proxy: # returning a new DistArray view - new_distribution = self.distribution.slice(index) - ddpr = new_distribution.get_dim_data_per_rank() - args.extend([ddpr, new_distribution.comm]) - if self.distribution.has_precise_index: - result = self.context.apply(raw_getitem, args=args, - targets=targets, - return_proxy=return_proxy) - else: - result = self.context.apply(checked_getitem, args=args, - targets=targets, - return_proxy=return_proxy) - + if return_proxy: # returning a new DistArray view + new_distribution = self.distribution.slice(index) + ddpr = new_distribution.get_dim_data_per_rank() + args.extend([ddpr, new_distribution.comm]) + local_fn = get_slice + else: # returning a value + local_fn = raw_getitem + else: # returning a value from unstructured + local_fn = checked_getitem + + result = self.context.apply(local_fn, args=args, + targets=targets, + return_proxy=return_proxy) return self._process_return_value(result, return_proxy, index, targets) diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index 6ec85bb1..cd00a4bd 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -172,7 +172,6 @@ def test_partial_negative_slice_block_dist_2d(self): assert_array_equal(arr[-6:-2, -10:-3].toarray(), expected[-6:-2, -10:-3]) - @unittest.skip('') def test_incomplete_slice_block_dist_2d(self): shape = (10, 20) expected = numpy.random.randint(10, size=shape) diff --git a/distarray/local/localarray.py b/distarray/local/localarray.py index 1a27d43b..bb472a47 100644 --- a/distarray/local/localarray.py +++ b/distarray/local/localarray.py @@ -50,25 +50,16 @@ def global_to_local(self, *global_ind): def local_to_global(self, *local_ind): return self.distribution.global_from_local(*local_ind) - def get_item(self, global_inds, new_distribution=None): - return_type, global_inds = sanitize_indices(global_inds, - ndim=self.distribution.ndim, - shape=self.distribution.global_shape) + def get_slice(self, global_inds, new_distribution): try: local_inds = self.global_to_local(*global_inds) except KeyError as err: raise IndexError(err) - - value_or_view = self.ndarray[local_inds] - - if return_type == 'value': - return value_or_view - elif return_type == 'view': - return LocalArray(distribution=new_distribution, - dtype=self.ndarray.dtype, - buf=value_or_view) - else: - assert False # impossible is nothing + print("local: ", local_inds) + view = self.ndarray[local_inds] + return LocalArray(distribution=new_distribution, + dtype=self.ndarray.dtype, + buf=view) def __getitem__(self, global_inds): return_type, global_inds = sanitize_indices(global_inds) @@ -82,7 +73,7 @@ def __getitem__(self, global_inds): if return_type == 'value': return ndarray_view elif return_type == 'view': - msg = "__getitem__ does not support slices. See `get_item`." + msg = "__getitem__ does not support slices. See `get_slice`." raise TypeError(msg) else: assert False # impossible is nothing diff --git a/distarray/local/maps.py b/distarray/local/maps.py index 23c08175..39697c3f 100644 --- a/distarray/local/maps.py +++ b/distarray/local/maps.py @@ -215,7 +215,7 @@ def local_from_global(self, gidx): elif isinstance(gidx, slice): start = gidx.start if gidx.start is not None else 0 stop = gidx.stop if gidx.stop is not None else self.global_size - new_start = start - self.start + new_start = max(start - self.start, 0) # prevent negative inds new_stop = stop - self.start return slice(new_start, new_stop) else: From f779fcdf332ee61004f7037760dd33a3bd80da14 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Mon, 26 May 2014 15:51:38 -0500 Subject: [PATCH 37/73] Remove another skiptest. --- distarray/dist/tests/test_distarray.py | 1 - 1 file changed, 1 deletion(-) diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index cd00a4bd..02b7d9cf 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -164,7 +164,6 @@ def test_partial_slice_block_dist_2d(self): arr = self.dac.fromarray(expected) assert_array_equal(arr[2:6, 3:10].toarray(), expected[2:6, 3:10]) - @unittest.skip('') def test_partial_negative_slice_block_dist_2d(self): shape = (10, 20) expected = numpy.random.randint(10, size=shape) From f94b9e3f59300e5a3bf0fdd25c8d0f14db2879e2 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Mon, 26 May 2014 15:51:54 -0500 Subject: [PATCH 38/73] Fix the local slicing test after API change. --- distarray/local/tests/paralleltest_localarray.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/distarray/local/tests/paralleltest_localarray.py b/distarray/local/tests/paralleltest_localarray.py index 52de3add..306d985f 100644 --- a/distarray/local/tests/paralleltest_localarray.py +++ b/distarray/local/tests/paralleltest_localarray.py @@ -359,8 +359,8 @@ def test_slicing(self): "size": 16} new_distribution = Distribution([dd00, dd01], comm=self.comm) - rvals = a.global_index.get_item((slice(5, None), slice(None)), - new_distribution=new_distribution) + rvals = a.global_index.get_slice((slice(5, None), slice(None)), + new_distribution=new_distribution) assert_array_equal(rvals, np.ones((3, 16))) elif self.comm.Get_rank() == 1: @@ -373,8 +373,8 @@ def test_slicing(self): dd11 = {"dist_type": 'n', "size": 16} new_distribution = Distribution([dd10, dd11], comm=self.comm) - rvals = a.global_index.get_item((slice(None, 10), slice(None)), - new_distribution=new_distribution) + rvals = a.global_index.get_slice((slice(None, 10), slice(None)), + new_distribution=new_distribution) assert_array_equal(rvals, np.ones((2, 16))) class TestLocalArrayMethods(MpiTestCase): From 64845dd32d4af33bab1741b880e974db10757484 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Mon, 26 May 2014 16:47:40 -0500 Subject: [PATCH 39/73] Fix output dimensionality. Integral indexing reduces dimensionality. --- distarray/dist/maps.py | 3 +-- distarray/dist/tests/test_maps.py | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/distarray/dist/maps.py b/distarray/dist/maps.py index e768cfb8..1c645048 100644 --- a/distarray/dist/maps.py +++ b/distarray/dist/maps.py @@ -621,8 +621,7 @@ def slice(self, index_tuple): new_bounds = [0] if isinstance(idx, Integral): - # make an equivalent slice object - idx = slice(idx, idx+1) + continue # integral indexing returns reduced dimensionality if isinstance(idx, slice): start = idx.start if idx.start is not None else 0 diff --git a/distarray/dist/tests/test_maps.py b/distarray/dist/tests/test_maps.py index aeb22002..942ecd74 100644 --- a/distarray/dist/tests/test_maps.py +++ b/distarray/dist/tests/test_maps.py @@ -123,7 +123,7 @@ def test_from_partial_slice_2d(self): s = (slice(3, 7), 4) d1 = d0.slice(s) - self.assertEqual(len(d0.maps), len(d1.maps)) + self.assertEqual(len(d0.maps)-1, len(d1.maps)) for m, expected in zip(d1.maps, ([(0, 1), (1, 4)], [(0, 1)])): self.assertSequenceEqual(m.bounds, expected) @@ -133,5 +133,5 @@ def test_full_slice_with_int_2d(self): s = (slice(None), 4) d1 = d0.slice(s) - self.assertEqual(len(d0.maps), len(d1.maps)) - self.assertEqual(d1.shape, (15, 1)) + self.assertEqual(len(d0.maps)-1, len(d1.maps)) + self.assertEqual(d1.shape, (15,)) From 03eef23affa7c7bc2f625ef88857e7584e676348 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Mon, 26 May 2014 16:47:50 -0500 Subject: [PATCH 40/73] Unskip the last test. --- distarray/dist/tests/test_distarray.py | 1 - 1 file changed, 1 deletion(-) diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index 02b7d9cf..e83407c4 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -177,7 +177,6 @@ def test_incomplete_slice_block_dist_2d(self): arr = self.dac.fromarray(expected) assert_array_equal(arr[3:9].toarray(), expected[3:9]) - @unittest.skip('') def test_incomplete_index_block_dist_2d(self): shape = (10, 20) expected = numpy.random.randint(10, size=shape) From daa6d7bd1d39c46750cffbf52a0d018670161fe4 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Mon, 26 May 2014 16:47:56 -0500 Subject: [PATCH 41/73] Line wrap. --- distarray/dist/distarray.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/distarray/dist/distarray.py b/distarray/dist/distarray.py index 391b46f9..72def05d 100644 --- a/distarray/dist/distarray.py +++ b/distarray/dist/distarray.py @@ -265,7 +265,8 @@ def tondarray(self): """Returns the distributed array as an ndarray.""" arr = np.empty(self.shape, dtype=self.dtype) local_name = self.context._generate_key() - self.context._execute('%s = %s.copy()' % (local_name, self.key), targets=self.targets) + self.context._execute('%s = %s.copy()' % (local_name, self.key), + targets=self.targets) local_arrays = self.context._pull(local_name, targets=self.targets) for local_array in local_arrays: maps = (list(ax_map.global_iter) for ax_map in From a3c6efcf2cd8ba15675bf926a54ac16ee6e11be7 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Mon, 26 May 2014 16:51:13 -0500 Subject: [PATCH 42/73] Remove a debugging statement. --- distarray/local/localarray.py | 1 - 1 file changed, 1 deletion(-) diff --git a/distarray/local/localarray.py b/distarray/local/localarray.py index bb472a47..451f4550 100644 --- a/distarray/local/localarray.py +++ b/distarray/local/localarray.py @@ -55,7 +55,6 @@ def get_slice(self, global_inds, new_distribution): local_inds = self.global_to_local(*global_inds) except KeyError as err: raise IndexError(err) - print("local: ", local_inds) view = self.ndarray[local_inds] return LocalArray(distribution=new_distribution, dtype=self.ndarray.dtype, From 78277dd610a68228d2581814121555d838c4ff4d Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Mon, 26 May 2014 17:07:45 -0500 Subject: [PATCH 43/73] Preserve no-dist maps. --- distarray/dist/maps.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/distarray/dist/maps.py b/distarray/dist/maps.py index 1c645048..7833e4de 100644 --- a/distarray/dist/maps.py +++ b/distarray/dist/maps.py @@ -192,6 +192,7 @@ def __init__(self, size, grid_size): msg = "grid_size for NoDistMap must be 1 (given %s)" raise ValueError(msg % grid_size) self.size = size + self.grid_size = grid_size self.bounds = [(0, self.size)] def owners(self, idx): @@ -617,13 +618,13 @@ def slice(self, index_tuple): new_targets = self.owning_targets(index_tuple) global_dim_data = [] # iterate over the dimensions - for map_, idx in zip(self.maps, index_tuple): + for dist, map_, idx in zip(self.dist, self.maps, index_tuple): new_bounds = [0] if isinstance(idx, Integral): continue # integral indexing returns reduced dimensionality - if isinstance(idx, slice): + elif isinstance(idx, slice): start = idx.start if idx.start is not None else 0 # iterate over the processes in this dimension for proc_bounds in map_.bounds: @@ -637,8 +638,12 @@ def slice(self, index_tuple): msg = "Index must be a sequence of Integrals and slices." raise TypeError(msg) - global_dim_data.append({'dist_type': 'b', - 'bounds': new_bounds}) + if dist == 'n': + global_dim_data.append({'dist_type': dist, + 'size': new_bounds[-1]}) + elif dist == 'b': + global_dim_data.append({'dist_type': dist, + 'bounds': new_bounds}) return self.__class__(context=self.context, global_dim_data=global_dim_data, From 608d0ba14051a39f84875db0fe057838c36dc3e8 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Mon, 26 May 2014 17:17:51 -0500 Subject: [PATCH 44/73] Test dist_type preservation. --- distarray/dist/tests/test_maps.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/distarray/dist/tests/test_maps.py b/distarray/dist/tests/test_maps.py index 942ecd74..b1e63580 100644 --- a/distarray/dist/tests/test_maps.py +++ b/distarray/dist/tests/test_maps.py @@ -93,6 +93,7 @@ def test_from_partial_slice_1d(self): d1 = d0.slice(s) self.assertEqual(len(d0.maps), len(d1.maps)) + self.assertSequenceEqual(d1.dist, d0.dist) self.assertSequenceEqual(d1.targets, [0]) self.assertSequenceEqual(d1.shape, (3,)) @@ -103,6 +104,7 @@ def test_from_full_slice_1d(self): d1 = d0.slice(s) self.assertEqual(len(d0.maps), len(d1.maps)) + self.assertSequenceEqual(d1.dist, d0.dist) self.assertSequenceEqual(d1.targets, d0.targets) self.assertSequenceEqual(d1.maps[0].bounds, d0.maps[0].bounds) @@ -113,6 +115,7 @@ def test_from_full_slice_2d(self): d1 = d0.slice(s) self.assertEqual(len(d0.maps), len(d1.maps)) + self.assertSequenceEqual(d1.dist, d0.dist) for m0, m1 in zip(d0.maps, d1.maps): self.assertSequenceEqual(m0.bounds, m1.bounds) self.assertSequenceEqual(d1.targets, d0.targets) @@ -124,6 +127,7 @@ def test_from_partial_slice_2d(self): d1 = d0.slice(s) self.assertEqual(len(d0.maps)-1, len(d1.maps)) + self.assertSequenceEqual(d1.dist, d0.dist[:-1]) for m, expected in zip(d1.maps, ([(0, 1), (1, 4)], [(0, 1)])): self.assertSequenceEqual(m.bounds, expected) @@ -134,4 +138,5 @@ def test_full_slice_with_int_2d(self): d1 = d0.slice(s) self.assertEqual(len(d0.maps)-1, len(d1.maps)) + self.assertSequenceEqual(d1.dist, d0.dist[:-1]) self.assertEqual(d1.shape, (15,)) From c17f4561f826a1934910d0370b1076f53dbe17ca Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Mon, 26 May 2014 18:59:22 -0500 Subject: [PATCH 45/73] Add ellipsis support to sanitize_indices. --- distarray/metadata_utils.py | 32 ++++++++++++++++++++++---- distarray/tests/test_metadata_utils.py | 19 +++++++++++++++ 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/distarray/metadata_utils.py b/distarray/metadata_utils.py index d855b498..1c02ffcf 100644 --- a/distarray/metadata_utils.py +++ b/distarray/metadata_utils.py @@ -275,8 +275,9 @@ def positivify(index, size): def sanitize_indices(indices, ndim=None, shape=None): """Classify and sanitize `indices`. - * Wrap Integral or slice indices into tuples - * Classify as 'value' or 'view' + * Wrap naked Integral, slice, or Ellipsis indices into tuples + * Classify result as 'value' or 'view' + * Expand `Ellipsis` objects to slices * If the length of the tuple-ized `indices` is < ndim (and it's provided), add slice(None)'s to indices until `indices` is ndim long * If `shape` is provided, call `positivify` on the indices @@ -290,21 +291,42 @@ def sanitize_indices(indices, ndim=None, shape=None): Returns ------- - 2-tuple of (str, ndim-tuple of slices and Integral values) + 2-tuple of (str, n-tuple of slices and Integral values) """ if isinstance(indices, Integral): rtype, sanitized = 'value', (indices,) - elif isinstance(indices, slice): + elif isinstance(indices, slice) or indices is Ellipsis: rtype, sanitized = 'view', (indices,) elif all(isinstance(i, Integral) for i in indices): rtype, sanitized = 'value', indices - elif all(isinstance(i, Integral) or isinstance(i, slice) for i in indices): + elif all(isinstance(i, Integral) + or isinstance(i, slice) + or i is Ellipsis for i in indices): rtype, sanitized = 'view', indices else: msg = ("Index must be an Integral, a slice, or a sequence of " "Integrals and slices.") raise TypeError(msg) + if Ellipsis in sanitized: + if ndim is None: + raise RuntimeError("Can't call `sanitize_indices` on Ellipsis " + "without providing `ndim`.") + # expand first Ellipsis + diff = ndim - (len(sanitized) - 1) + filler = (slice(None),) * diff + epos = sanitized.index(Ellipsis) + sanitized = sanitized[:epos] + filler + sanitized[epos+1:] + + # remaining Ellipsis objects are just converted to slices + def replace_ellipsis(idx): + if idx is Ellipsis: + return slice(None) + else: + return idx + sanitized = tuple(replace_ellipsis(i) for i in sanitized) + + if ndim is not None: diff = ndim - len(sanitized) if diff < 0: diff --git a/distarray/tests/test_metadata_utils.py b/distarray/tests/test_metadata_utils.py index 4feb0508..be5ea0d3 100644 --- a/distarray/tests/test_metadata_utils.py +++ b/distarray/tests/test_metadata_utils.py @@ -119,6 +119,25 @@ def test_too_many_indices(self): with self.assertRaises(IndexError): metadata_utils.sanitize_indices((2, 3, 4), ndim=2) + def test_trailing_ellipsis(self): + ndim = 5 + tag, sanitized = metadata_utils.sanitize_indices((10, Ellipsis), + ndim=ndim) + self.assertEqual(sanitized, (10,) + (slice(None),) * (ndim-1)) + + def test_leading_ellipsis(self): + ndim = 5 + tag, sanitized = metadata_utils.sanitize_indices((Ellipsis, 10), + ndim=ndim) + self.assertEqual(sanitized, (slice(None),) * (ndim-1) + (10,)) + + def test_multiple_ellipsis(self): + ndim = 6 + tag, sanitized = metadata_utils.sanitize_indices((Ellipsis, 10, + Ellipsis), + ndim=ndim) + self.assertEqual(sanitized, (slice(None),) * 4 + (10, slice(None))) + if __name__ == '__main__': unittest.main(verbosity=2) From 178356f054f8786fcaf54b9383b43fc1a6376d7c Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Mon, 26 May 2014 19:05:15 -0500 Subject: [PATCH 46/73] Add getitem ellipsis tests. --- distarray/dist/tests/test_distarray.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index e83407c4..d28a5143 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -183,6 +183,32 @@ def test_incomplete_index_block_dist_2d(self): arr = self.dac.fromarray(expected) assert_array_equal(arr[1].toarray(), expected[1]) + def test_trailing_ellipsis(self): + shape = (2, 3, 7, 6) + expected = numpy.random.randint(10, size=shape) + arr = self.dac.fromarray(expected) + assert_array_equal(arr[1, ...].toarray(), expected[1, ...]) + + def test_leading_ellipsis(self): + shape = (2, 3, 7, 6) + expected = numpy.random.randint(10, size=shape) + arr = self.dac.fromarray(expected) + assert_array_equal(arr[..., 3].toarray(), expected[..., 3]) + + def test_multiple_ellipsis(self): + shape = (2, 4, 2, 4, 1, 5) + expected = numpy.random.randint(10, size=shape) + arr = self.dac.fromarray(expected) + assert_array_equal(arr[..., 3, ..., 4].toarray(), + expected[..., 3, ..., 4]) + + def test_vestigial_ellipsis(self): + shape = (1, 2, 3) + expected = numpy.random.randint(10, size=shape) + arr = self.dac.fromarray(expected) + assert_array_equal(arr[0, :, 0, ...].toarray(), + expected[0, :, 0, ...]) + class TestDistArrayCreationFromGlobalDimData(unittest.TestCase): From 68e6e31681cc5589397e6dff5d859b66be071834 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 27 May 2014 12:28:05 -0500 Subject: [PATCH 47/73] WIP: Add failing test. --- distarray/dist/tests/test_distarray.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index d28a5143..491f2c40 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -210,6 +210,24 @@ def test_vestigial_ellipsis(self): expected[0, :, 0, ...]) +class TestSetItemSlicing(unittest.TestCase): + + def setUp(self): + self.dac = Context() + + def tearDown(self): + self.dac.close() + + def test_1d_slice(self): + source = numpy.random.randint(10, size=20) + new_data = numpy.random.randint(10, size=5) + slc = slice(12, 12+len(new_data)) + arr = self.dac.fromarray(source) + source[slc] = new_data + arr[slc] = new_data + assert_array_equal(arr.toarray(), source) + + class TestDistArrayCreationFromGlobalDimData(unittest.TestCase): def setUp(self): From ac301b9a18fac3f3f876a5e60ee35936f6b99568 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 27 May 2014 12:35:42 -0500 Subject: [PATCH 48/73] Add a comment. --- distarray/dist/distarray.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/distarray/dist/distarray.py b/distarray/dist/distarray.py index 72def05d..774ae850 100644 --- a/distarray/dist/distarray.py +++ b/distarray/dist/distarray.py @@ -211,7 +211,7 @@ def raw_setitem(arr, index, value): args = (self.key, index, value) if self.distribution.has_precise_index: self.context.apply(raw_setitem, args=args, targets=targets) - else: + else: # setting unstructured elements result = self.context.apply(checked_setitem, args=args, targets=targets) result = [i for i in result if i is not None] From 992fad5993dc692e735cf606402f5f4fe30f8a47 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 27 May 2014 12:36:14 -0500 Subject: [PATCH 49/73] Already works for a setitem that doesn't span procs. --- distarray/dist/tests/test_distarray.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index 491f2c40..8e5a2a34 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -220,8 +220,8 @@ def tearDown(self): def test_1d_slice(self): source = numpy.random.randint(10, size=20) - new_data = numpy.random.randint(10, size=5) - slc = slice(12, 12+len(new_data)) + new_data = numpy.random.randint(10, size=3) + slc = slice(1, 4) arr = self.dac.fromarray(source) source[slc] = new_data arr[slc] = new_data From c03b560607eb49696df4546281447034a7f69adf Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 27 May 2014 12:37:29 -0500 Subject: [PATCH 50/73] Add a new failing test. --- distarray/dist/tests/test_distarray.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index 8e5a2a34..06b9f89b 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -218,7 +218,7 @@ def setUp(self): def tearDown(self): self.dac.close() - def test_1d_slice(self): + def test_small_1d_slice(self): source = numpy.random.randint(10, size=20) new_data = numpy.random.randint(10, size=3) slc = slice(1, 4) @@ -227,6 +227,15 @@ def test_1d_slice(self): arr[slc] = new_data assert_array_equal(arr.toarray(), source) + def test_large_1d_slice(self): + source = numpy.random.randint(10, size=20) + new_data = numpy.random.randint(10, size=10) + slc = slice(5, 15) + arr = self.dac.fromarray(source) + source[slc] = new_data + arr[slc] = new_data + assert_array_equal(arr.toarray(), source) + class TestDistArrayCreationFromGlobalDimData(unittest.TestCase): From b38afa354c4bf69e1ae016252744c911a4dfb288 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 27 May 2014 13:57:05 -0500 Subject: [PATCH 51/73] Add `__setitem__` slicing. --- distarray/dist/distarray.py | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/distarray/dist/distarray.py b/distarray/dist/distarray.py index 774ae850..11488ef2 100644 --- a/distarray/dist/distarray.py +++ b/distarray/dist/distarray.py @@ -189,7 +189,6 @@ def get_slice(arr, index, ddpr, comm): return_proxy=return_proxy) return self._process_return_value(result, return_proxy, index, targets) - def __setitem__(self, index, value): #TODO: FIXME: major performance improvements possible here. # Especially when `index == slice(None)` and value is an @@ -205,15 +204,40 @@ def checked_setitem(arr, index, value): def raw_setitem(arr, index, value): arr.global_index[index] = value - _, index = sanitize_indices(index, ndim=self.ndim, shape=self.shape) + # to be run locally + def set_slice(arr, index, value, value_slices): + local_slice = value_slices[arr.comm_rank] + arr.global_index[index] = value[local_slice] + + set_type, index = sanitize_indices(index, ndim=self.ndim, + shape=self.shape) targets = self.distribution.owning_targets(index) - args = (self.key, index, value) + args = [self.key, index, value] if self.distribution.has_precise_index: - self.context.apply(raw_setitem, args=args, targets=targets) + if set_type == 'value': + local_fn = raw_setitem + elif set_type == 'view': + # this could be made more efficient + # we only need the bounds computed by distribution.slice + new_distribution = self.distribution.slice(index) + ddpr = new_distribution.get_dim_data_per_rank() + value_slices = [tuple(slice(dd['start'], dd['stop']) + for dd in dim_data) + for dim_data in ddpr] + # but we need a data structure indexable by a target's rank + # assume contigious range of targets here + value_slices_per_target = [None] * len(self.targets) + value_slices_per_target[targets[0]:targets[-1]] = value_slices + args.append(value_slices_per_target) + local_fn = set_slice + else: + assert False + self.context.apply(local_fn, args=args, targets=targets) + else: # setting unstructured elements - result = self.context.apply(checked_setitem, args=args, - targets=targets) + local_fn = checked_setitem + result = self.context.apply(local_fn, args=args, targets=targets) result = [i for i in result if i is not None] if len(result) > 1: raise IndexError("Setting more than one result (%s) is " From d59e31e228f30090d01020fc19bdc4ecf40ddd4c Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 27 May 2014 14:06:09 -0500 Subject: [PATCH 52/73] Make work for 2d slices. --- distarray/dist/distarray.py | 11 +++++++++-- distarray/dist/tests/test_distarray.py | 9 +++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/distarray/dist/distarray.py b/distarray/dist/distarray.py index 11488ef2..7fd8fa0d 100644 --- a/distarray/dist/distarray.py +++ b/distarray/dist/distarray.py @@ -222,8 +222,15 @@ def set_slice(arr, index, value, value_slices): # we only need the bounds computed by distribution.slice new_distribution = self.distribution.slice(index) ddpr = new_distribution.get_dim_data_per_rank() - value_slices = [tuple(slice(dd['start'], dd['stop']) - for dd in dim_data) + def bounds_slice(dd): + if dd['dist_type'] == 'b': + return slice(dd['start'], dd['stop']) + elif dd['dist_type'] == 'n': + return slice(0, dd['size']) + else: + msg = "Function only works for 'n' and 'b' 'dist_type's" + raise TypeError(msg) + value_slices = [tuple(bounds_slice(dd) for dd in dim_data) for dim_data in ddpr] # but we need a data structure indexable by a target's rank # assume contigious range of targets here diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index 06b9f89b..8df25a16 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -236,6 +236,15 @@ def test_large_1d_slice(self): arr[slc] = new_data assert_array_equal(arr.toarray(), source) + def test_2d_slice(self): + source = numpy.random.randint(10, size=(10, 20)) + new_data = numpy.random.randint(10, size=(5, 10)) + slc = (slice(5, 10), slice(5, 15)) + arr = self.dac.fromarray(source) + source[slc] = new_data + arr[slc] = new_data + assert_array_equal(arr.toarray(), source) + class TestDistArrayCreationFromGlobalDimData(unittest.TestCase): From 23afae0da176c98c4974bfe971611c5f3ba58805 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 27 May 2014 14:23:39 -0500 Subject: [PATCH 53/73] Add more setitem slice tests. --- distarray/dist/tests/test_distarray.py | 31 +++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index 8df25a16..d9aae6bf 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -236,7 +236,8 @@ def test_large_1d_slice(self): arr[slc] = new_data assert_array_equal(arr.toarray(), source) - def test_2d_slice(self): + def test_2d_slice_0(self): + # on process boundaries source = numpy.random.randint(10, size=(10, 20)) new_data = numpy.random.randint(10, size=(5, 10)) slc = (slice(5, 10), slice(5, 15)) @@ -245,6 +246,34 @@ def test_2d_slice(self): arr[slc] = new_data assert_array_equal(arr.toarray(), source) + def test_2d_slice_1(self): + # off process boundaries + source = numpy.random.randint(10, size=(10, 20)) + new_data = numpy.random.randint(10, size=(5, 10)) + slc = (slice(3, 8), slice(9, 19)) + arr = self.dac.fromarray(source) + source[slc] = new_data + arr[slc] = new_data + assert_array_equal(arr.toarray(), source) + + def test_full_3d_slice(self): + source = numpy.random.randint(10, size=(3, 4, 5)) + new_data = numpy.random.randint(10, size=(3, 4, 5)) + slc = (slice(None), slice(None), slice(None)) + arr = self.dac.fromarray(source) + source[slc] = new_data + arr[slc] = new_data + assert_array_equal(arr.toarray(), source) + + def test_full_3d_slice_ellipsis(self): + source = numpy.random.randint(10, size=(3, 4, 5)) + new_data = numpy.random.randint(10, size=(3, 4, 5)) + slc = Ellipsis + arr = self.dac.fromarray(source) + source[slc] = new_data + arr[slc] = new_data + assert_array_equal(arr.toarray(), source) + class TestDistArrayCreationFromGlobalDimData(unittest.TestCase): From ec659addc02c1337f7b09bb6b46ee40a8f72f0f8 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 27 May 2014 14:26:50 -0500 Subject: [PATCH 54/73] Add more tests. --- distarray/dist/tests/test_distarray.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index d9aae6bf..2106b935 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -274,6 +274,24 @@ def test_full_3d_slice_ellipsis(self): arr[slc] = new_data assert_array_equal(arr.toarray(), source) + def test_partial_indexing_0(self): + source = numpy.random.randint(10, size=(3, 4, 5)) + new_data = numpy.random.randint(10, size=(4, 5)) + slc = (1,) + arr = self.dac.fromarray(source) + source[slc] = new_data + arr[slc] = new_data + assert_array_equal(arr.toarray(), source) + + def test_partial_indexing_1(self): + source = numpy.random.randint(10, size=(3, 4, 5)) + new_data = numpy.random.randint(10, size=(3, 5)) + slc = (slice(None), 2) + arr = self.dac.fromarray(source) + source[slc] = new_data + arr[slc] = new_data + assert_array_equal(arr.toarray(), source) + class TestDistArrayCreationFromGlobalDimData(unittest.TestCase): From 5ddd354d1c4fcee0785940f3fb0631161589ea52 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 27 May 2014 14:28:09 -0500 Subject: [PATCH 55/73] Make setUp and tearDown classmethods. --- distarray/dist/tests/test_distarray.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index 2106b935..3da35b9d 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -212,11 +212,13 @@ def test_vestigial_ellipsis(self): class TestSetItemSlicing(unittest.TestCase): - def setUp(self): - self.dac = Context() + @classmethod + def setUpClass(cls): + cls.dac = Context() - def tearDown(self): - self.dac.close() + @classmethod + def tearDownClass(cls): + cls.dac.close() def test_small_1d_slice(self): source = numpy.random.randint(10, size=20) From 858ac2159ed595919220ba26317484a04fd931a5 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 27 May 2014 14:30:30 -0500 Subject: [PATCH 56/73] Remove completed TODO comment. --- distarray/dist/distarray.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/distarray/dist/distarray.py b/distarray/dist/distarray.py index 7fd8fa0d..35af82e9 100644 --- a/distarray/dist/distarray.py +++ b/distarray/dist/distarray.py @@ -190,12 +190,6 @@ def get_slice(arr, index, ddpr, comm): return self._process_return_value(result, return_proxy, index, targets) def __setitem__(self, index, value): - #TODO: FIXME: major performance improvements possible here. - # Especially when `index == slice(None)` and value is an - # ndarray, since for block and cyclic, we can generate slices of - # `value` and assign to local arrays. This would dramatically - # improve the fromndarray method's performance. - # to be run locally def checked_setitem(arr, index, value): return arr.global_index.checked_setitem(index, value) From 342f19fc16a0db4c0aa14626da38e2e64be2f476 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 27 May 2014 14:42:01 -0500 Subject: [PATCH 57/73] Convert a non-array rvalue to array. --- distarray/dist/distarray.py | 2 +- distarray/dist/tests/test_distarray.py | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/distarray/dist/distarray.py b/distarray/dist/distarray.py index 35af82e9..9dcc1f79 100644 --- a/distarray/dist/distarray.py +++ b/distarray/dist/distarray.py @@ -207,7 +207,7 @@ def set_slice(arr, index, value, value_slices): shape=self.shape) targets = self.distribution.owning_targets(index) - args = [self.key, index, value] + args = [self.key, index, np.asarray(value)] if self.distribution.has_precise_index: if set_type == 'value': local_fn = raw_setitem diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index 3da35b9d..cc756cfc 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -294,6 +294,15 @@ def test_partial_indexing_1(self): arr[slc] = new_data assert_array_equal(arr.toarray(), source) + def test_non_array_data(self): + source = numpy.random.randint(10, size=(3, 4)) + new_data = [42, 42, 42, 42] + slc = (2,) + arr = self.dac.fromarray(source) + source[slc] = new_data + arr[slc] = new_data + assert_array_equal(arr.toarray(), source) + class TestDistArrayCreationFromGlobalDimData(unittest.TestCase): From 6c7e84af3d0cbac5a3b9a793f72f50f970d73d0f Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 27 May 2014 15:57:34 -0500 Subject: [PATCH 58/73] Add failing ValueError test. --- distarray/dist/tests/test_distarray.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index cc756cfc..0cc7c261 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -303,6 +303,14 @@ def test_non_array_data(self): arr[slc] = new_data assert_array_equal(arr.toarray(), source) + def test_valueerror(self): + source = numpy.random.randint(10, size=21) + new_data = numpy.random.randint(10, size=10) + slc = slice(15, None) + arr = self.dac.fromarray(source) + with self.assertRaises(ValueError): + arr[slc] = new_data + class TestDistArrayCreationFromGlobalDimData(unittest.TestCase): From df4f6997c747a5be8c355f027e1b52a26019d562 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 27 May 2014 16:11:24 -0500 Subject: [PATCH 59/73] Remove an obsolete comment. --- distarray/metadata_utils.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/distarray/metadata_utils.py b/distarray/metadata_utils.py index 1c02ffcf..c3921144 100644 --- a/distarray/metadata_utils.py +++ b/distarray/metadata_utils.py @@ -256,8 +256,6 @@ def positivify(index, size): ------ IndexError for out-of-bounds indices - NotImplementedError - for negative steps """ if isinstance(index, Integral): index = _positivify(index, size) From 29a33a769061066371fe920d32cfc103b1167877 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 27 May 2014 16:11:47 -0500 Subject: [PATCH 60/73] Raise an IndexError instead of a TypeError... to match NumPy. --- distarray/metadata_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/distarray/metadata_utils.py b/distarray/metadata_utils.py index c3921144..713ea0e9 100644 --- a/distarray/metadata_utils.py +++ b/distarray/metadata_utils.py @@ -304,7 +304,7 @@ def sanitize_indices(indices, ndim=None, shape=None): else: msg = ("Index must be an Integral, a slice, or a sequence of " "Integrals and slices.") - raise TypeError(msg) + raise IndexError(msg) if Ellipsis in sanitized: if ndim is None: From c78e8d2d7154cc356170613c197b3b5671fde6ed Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Tue, 27 May 2014 16:39:09 -0500 Subject: [PATCH 61/73] Raise a ValueError if rvalue shape is incorrect... like NumPy does. --- distarray/dist/distarray.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/distarray/dist/distarray.py b/distarray/dist/distarray.py index 9dcc1f79..5e0882a0 100644 --- a/distarray/dist/distarray.py +++ b/distarray/dist/distarray.py @@ -207,14 +207,18 @@ def set_slice(arr, index, value, value_slices): shape=self.shape) targets = self.distribution.owning_targets(index) - args = [self.key, index, np.asarray(value)] + args = [self.key, index, value] if self.distribution.has_precise_index: if set_type == 'value': local_fn = raw_setitem elif set_type == 'view': + args[-1] = np.asarray(args[-1]) # convert to array # this could be made more efficient # we only need the bounds computed by distribution.slice new_distribution = self.distribution.slice(index) + if args[-1].shape != new_distribution.shape: + msg = "Slice shape does not equal rvalue shape." + raise ValueError(msg) ddpr = new_distribution.get_dim_data_per_rank() def bounds_slice(dd): if dd['dist_type'] == 'b': From 9f98b808e8139b8241e65c3fd41f466be137cdfd Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Wed, 28 May 2014 12:43:05 -0500 Subject: [PATCH 62/73] Add failing test. --- distarray/dist/tests/test_distarray.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index 0cc7c261..e9ae282c 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -158,6 +158,13 @@ def test_slice_a_slice_block_dist_1(self): s2 = s1[-2:] assert_array_equal(s2.toarray(), expected[3:5]) + def test_slice_block_dist_1d_with_step(self): + size = 10 + step = 2 + expected = numpy.random.randint(10, size=size) + darr = self.dac.fromarray(expected) + assert_array_equal(darr[::2], expected[::2]) + def test_partial_slice_block_dist_2d(self): shape = (10, 20) expected = numpy.random.randint(10, size=shape) From 678d76dea804f7ee6c6cf81542125085d0b68232 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Wed, 28 May 2014 16:10:49 -0500 Subject: [PATCH 63/73] Generalize tuple_intersection. --- distarray/metadata_utils.py | 36 ++++++++++++++---- distarray/tests/test_metadata_utils.py | 52 ++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 8 deletions(-) diff --git a/distarray/metadata_utils.py b/distarray/metadata_utils.py index 713ea0e9..7a6c3ff4 100644 --- a/distarray/metadata_utils.py +++ b/distarray/metadata_utils.py @@ -4,6 +4,8 @@ # Distributed under the terms of the BSD License. See COPYING.rst. # --------------------------------------------------------------------------- +from __future__ import division + import operator from itertools import product from functools import reduce @@ -228,20 +230,39 @@ def _check_bounds(index, size): raise IndexError("Index %r out of bounds" % index) -def tuple_intersection(t1, t2): - """Compute intersection of two (start, stop) tuples. +def tuple_intersection(t0, t1): + """Compute intersection of a (start, stop, step) and a (start, stop) tuple. + + Assumes all values are positive. Parameters ---------- - t1, t2 : 2-tuples + t0: 2-tuple or 3-tuple + Tuple of (start, stop, [step]) representing an index range + t1: 2-tuple + Tuple of (start, stop) representing an index range Returns ------- - 2-tuple or None + 3-tuple or None + A tightly bounded interval. """ - stop = min(t1[1], t2[1]) - start = max(t1[0], t2[0]) - return (start, stop) if stop - start > 0 else None + if len(t0) == 2: + # default step is 1 + t0 = t0 + (1,) + + start0, stop0, step0 = t0 + start1, stop1 = t1 + n = int(numpy.ceil((start1 - start0) / step0)) + start2 = start0 + n*step0 + + max_stop = min(t0[1], t1[1]) + if (max_stop - start2) % step0 == 0: + n = ((max_stop - start2) // step0) - 1 + else: + n = (max_stop - start2) // step0 + stop2 = (start2 + n*step0) + 1 + return (start2, stop2, step0) if stop2 > start2 else None def positivify(index, size): @@ -324,7 +345,6 @@ def replace_ellipsis(idx): return idx sanitized = tuple(replace_ellipsis(i) for i in sanitized) - if ndim is not None: diff = ndim - len(sanitized) if diff < 0: diff --git a/distarray/tests/test_metadata_utils.py b/distarray/tests/test_metadata_utils.py index be5ea0d3..6cb4b67c 100644 --- a/distarray/tests/test_metadata_utils.py +++ b/distarray/tests/test_metadata_utils.py @@ -138,6 +138,58 @@ def test_multiple_ellipsis(self): ndim=ndim) self.assertEqual(sanitized, (slice(None),) * 4 + (10, slice(None))) + def test_step(self): + # currently doesn't touch step + indices = (slice(None, None, 2), slice(None, 8, 4)) + tag, sanitized = metadata_utils.sanitize_indices(indices) + self.assertEqual(tag, 'view') + self.assertEqual(sanitized, indices) + + +class TestTupleIntersection(unittest.TestCase): + + def test_no_step_full_enclosure(self): + t0 = (0, 60) + t1 = (15, 30) + result = metadata_utils.tuple_intersection(t0, t1) + self.assertEqual(result, (15, 30, 1)) + + def test_no_step_partial_overlap(self): + t0 = (0, 60) + t1 = (15, 90) + result = metadata_utils.tuple_intersection(t0, t1) + self.assertEqual(result, (15, 60, 1)) + + def test_no_step_no_overlap(self): + t0 = (0, 60) + t1 = (80, 130) + result = metadata_utils.tuple_intersection(t0, t1) + self.assertEqual(result, None) + + def test_with_step_1(self): + t0 = (0, 60, 1) + t1 = (15, 30) + result = metadata_utils.tuple_intersection(t0, t1) + self.assertEqual(result, (15, 30, 1)) + + def test_with_step_2(self): + t0 = (0, 60, 2) + t1 = (15, 30) + result = metadata_utils.tuple_intersection(t0, t1) + self.assertEqual(result, (16, 29, 2)) + + def test_with_step_3(self): + t0 = (0, 59, 2) + t1 = (15, 90) + result = metadata_utils.tuple_intersection(t0, t1) + self.assertEqual(result, (16, 59, 2)) + + def test_big_step(self): + t0 = (0, 59, 1000) + t1 = (15, 90) + result = metadata_utils.tuple_intersection(t0, t1) + self.assertEqual(result, None) + if __name__ == '__main__': unittest.main(verbosity=2) From af1e91667efc7136c0dc5b47e6f4a6cf6c147a40 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Thu, 29 May 2014 16:19:59 -0500 Subject: [PATCH 64/73] Add a slice method to individual client Map types. Polymorphism! --- distarray/dist/maps.py | 57 +++++++++++++++++-------------- distarray/dist/tests/test_maps.py | 3 +- 2 files changed, 33 insertions(+), 27 deletions(-) diff --git a/distarray/dist/maps.py b/distarray/dist/maps.py index eb638782..eb9e5b48 100644 --- a/distarray/dist/maps.py +++ b/distarray/dist/maps.py @@ -195,7 +195,6 @@ def __init__(self, size, grid_size): raise ValueError(msg % grid_size) self.size = size self.grid_size = grid_size - self.bounds = [(0, self.size)] def owners(self, idx): if isinstance(idx, Integral): @@ -213,6 +212,19 @@ def get_dimdicts(self): 'proc_grid_rank': 0, },) + def slice(self, idx): + """Make a new Map from a slice.""" + start = idx.start if idx.start is not None else 0 + stop = idx.stop if idx.stop is not None else self.size + intersection = tuple_intersection((0, self.size), (start, stop)) + if intersection: + intersection_size = intersection[1] - intersection[0] + else: + intersection_size = 0 + + return {'dist_type': self.dist, + 'size': intersection_size} + class BlockMap(MapBase): @@ -303,6 +315,22 @@ def get_dimdicts(self): }) return tuple(out) + def slice(self, idx): + """Make a new Map from a slice.""" + new_bounds = [0] + start = idx.start if idx.start is not None else 0 + # iterate over the processes in this dimension + for proc_start, proc_stop in self.bounds: + stop = idx.stop if idx.stop is not None else proc_stop + intersection = tuple_intersection((proc_start, proc_stop), + (start, stop)) + if intersection: + size = intersection[1] - intersection[0] + new_bounds.append(size + new_bounds[-1]) + + return {'dist_type': self.dist, + 'bounds': new_bounds} + class BlockCyclicMap(MapBase): @@ -615,45 +643,22 @@ def has_precise_index(self): def slice(self, index_tuple): """Make a new Distribution from a slice.""" - if not all(dist_type in {'n', 'b'} for dist_type in self.dist): - msg = "Slicing only implemented for 'n' and 'b' dist_types." - raise NotImplementedError(msg) - new_targets = self.owning_targets(index_tuple) global_dim_data = [] # iterate over the dimensions - for dist, map_, idx in zip(self.dist, self.maps, index_tuple): - new_bounds = [0] - + for map_, idx in zip(self.maps, index_tuple): if isinstance(idx, Integral): continue # integral indexing returns reduced dimensionality - elif isinstance(idx, slice): - start = idx.start if idx.start is not None else 0 - # iterate over the processes in this dimension - for proc_bounds in map_.bounds: - stop = idx.stop if idx.stop is not None else proc_bounds[-1] - intersection = tuple_intersection(proc_bounds, - (start, stop)) - if intersection: - size = intersection[1] - intersection[0] - new_bounds.append(size + new_bounds[-1]) + global_dim_data.append(map_.slice(idx)) else: msg = "Index must be a sequence of Integrals and slices." raise TypeError(msg) - if dist == 'n': - global_dim_data.append({'dist_type': dist, - 'size': new_bounds[-1]}) - elif dist == 'b': - global_dim_data.append({'dist_type': dist, - 'bounds': new_bounds}) - return self.__class__(context=self.context, global_dim_data=global_dim_data, targets=new_targets) - def owning_ranks(self, idxs): """ Returns a list of ranks that may *possibly* own the location in the `idxs` tuple. diff --git a/distarray/dist/tests/test_maps.py b/distarray/dist/tests/test_maps.py index 0ea02470..bab31f4d 100644 --- a/distarray/dist/tests/test_maps.py +++ b/distarray/dist/tests/test_maps.py @@ -150,7 +150,8 @@ def test_from_full_slice_2d(self): self.assertEqual(len(d0.maps), len(d1.maps)) self.assertSequenceEqual(d1.dist, d0.dist) for m0, m1 in zip(d0.maps, d1.maps): - self.assertSequenceEqual(m0.bounds, m1.bounds) + if m0.dist == 'b': + self.assertSequenceEqual(m0.bounds, m1.bounds) self.assertSequenceEqual(d1.targets, d0.targets) def test_from_partial_slice_2d(self): From 53ca6122ed7cc3670166633589f312ce960c7841 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Thu, 29 May 2014 18:26:43 -0500 Subject: [PATCH 65/73] Fix tuple_intersection for start0 >= start1. Also, allow passing in a 2-tuple for t0. --- distarray/metadata_utils.py | 11 ++++--- distarray/tests/test_metadata_utils.py | 43 ++++++++++++++++++++------ 2 files changed, 40 insertions(+), 14 deletions(-) diff --git a/distarray/metadata_utils.py b/distarray/metadata_utils.py index df096a37..a7f59190 100644 --- a/distarray/metadata_utils.py +++ b/distarray/metadata_utils.py @@ -247,14 +247,17 @@ def tuple_intersection(t0, t1): 3-tuple or None A tightly bounded interval. """ - if len(t0) == 2: + if len(t0) == 2 or t0[2] is None: # default step is 1 - t0 = t0 + (1,) + t0 = (t0[0], t0[1], 1) start0, stop0, step0 = t0 start1, stop1 = t1 - n = int(numpy.ceil((start1 - start0) / step0)) - start2 = start0 + n*step0 + if start0 < start1: + n = int(numpy.ceil((start1 - start0) / step0)) + start2 = start0 + n*step0 + else: + start2 = start0 max_stop = min(t0[1], t1[1]) if (max_stop - start2) % step0 == 0: diff --git a/distarray/tests/test_metadata_utils.py b/distarray/tests/test_metadata_utils.py index 6cb4b67c..577a1c30 100644 --- a/distarray/tests/test_metadata_utils.py +++ b/distarray/tests/test_metadata_utils.py @@ -148,47 +148,70 @@ def test_step(self): class TestTupleIntersection(unittest.TestCase): + def check_intersection_and_reverse(self, t0, t1, expected): + result = metadata_utils.tuple_intersection(t0, t1) + self.assertEqual(result, expected) + result = metadata_utils.tuple_intersection(t1, t0) + self.assertEqual(result, expected) + def test_no_step_full_enclosure(self): t0 = (0, 60) t1 = (15, 30) - result = metadata_utils.tuple_intersection(t0, t1) - self.assertEqual(result, (15, 30, 1)) + expected = (15, 30, 1) + self.check_intersection_and_reverse(t0, t1, expected) def test_no_step_partial_overlap(self): t0 = (0, 60) t1 = (15, 90) - result = metadata_utils.tuple_intersection(t0, t1) - self.assertEqual(result, (15, 60, 1)) + expected = (15, 60, 1) + self.check_intersection_and_reverse(t0, t1, expected) def test_no_step_no_overlap(self): t0 = (0, 60) t1 = (80, 130) - result = metadata_utils.tuple_intersection(t0, t1) - self.assertEqual(result, None) + expected = None + self.check_intersection_and_reverse(t0, t1, expected) + + def test_no_step_partial_overlap_0(self): + t0 = (0, 60) + t1 = (15, 90) + expected = (15, 60, 1) + self.check_intersection_and_reverse(t0, t1, expected) + + def test_no_step_partial_overlap_1(self): + # regression test + t0 = (0, 4) + t1 = (3, 7) + expected = (3, 4, 1) + self.check_intersection_and_reverse(t0, t1, expected) def test_with_step_1(self): t0 = (0, 60, 1) t1 = (15, 30) + expected = (15, 30, 1) result = metadata_utils.tuple_intersection(t0, t1) - self.assertEqual(result, (15, 30, 1)) + self.assertSequenceEqual(result, expected) def test_with_step_2(self): t0 = (0, 60, 2) t1 = (15, 30) + expected = (16, 29, 2) result = metadata_utils.tuple_intersection(t0, t1) - self.assertEqual(result, (16, 29, 2)) + self.assertSequenceEqual(result, expected) def test_with_step_3(self): t0 = (0, 59, 2) t1 = (15, 90) + expected = (16, 59, 2) result = metadata_utils.tuple_intersection(t0, t1) - self.assertEqual(result, (16, 59, 2)) + self.assertSequenceEqual(result, expected) def test_big_step(self): t0 = (0, 59, 1000) t1 = (15, 90) + expected = None result = metadata_utils.tuple_intersection(t0, t1) - self.assertEqual(result, None) + self.assertEqual(result, expected) if __name__ == '__main__': From 913f4a06891a113a7012f320b0022ae8736eab63 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Thu, 29 May 2014 18:54:09 -0500 Subject: [PATCH 66/73] Slicing with steps. --- distarray/dist/maps.py | 49 +++++++++++++++----------- distarray/dist/tests/test_distarray.py | 2 +- distarray/dist/tests/test_maps.py | 26 ++++++++++++++ distarray/local/maps.py | 12 +++++-- 4 files changed, 66 insertions(+), 23 deletions(-) diff --git a/distarray/dist/maps.py b/distarray/dist/maps.py index eb9e5b48..c83a1fad 100644 --- a/distarray/dist/maps.py +++ b/distarray/dist/maps.py @@ -21,7 +21,7 @@ `UnstructuredMap`. """ -from __future__ import absolute_import +from __future__ import division, absolute_import import operator from itertools import product @@ -200,7 +200,13 @@ def owners(self, idx): if isinstance(idx, Integral): return [0] if 0 <= idx < self.size else [] elif isinstance(idx, slice): - return [0] # slicing doesn't complain about out-of-bounds indices + start = idx.start if idx.start is not None else 0 + stop = idx.stop if idx.stop is not None else self.size + step = idx.step if idx.step is not None else 1 + if tuple_intersection((start, stop, step), (0, self.size)): + return [0] + else: + return [] else: raise TypeError("Index must be Integral or slice.") @@ -216,14 +222,16 @@ def slice(self, idx): """Make a new Map from a slice.""" start = idx.start if idx.start is not None else 0 stop = idx.stop if idx.stop is not None else self.size - intersection = tuple_intersection((0, self.size), (start, stop)) - if intersection: - intersection_size = intersection[1] - intersection[0] + step = idx.step if idx.step is not None else 1 + isection = tuple_intersection((start, stop, step), (0, self.size)) + if isection: + step = idx.step if idx.step is not None else 1 + isection_size = int(np.ceil((isection[1] - isection[0]) // step)) else: - intersection_size = 0 + isection_size = 0 return {'dist_type': self.dist, - 'size': intersection_size} + 'size': isection_size} class BlockMap(MapBase): @@ -282,15 +290,13 @@ def owners(self, idx): coords.append(coord) return coords elif isinstance(idx, slice): - if idx.step not in {None, 1}: - msg = "Slicing only implemented for step=1" - raise NotImplementedError(msg) + start = idx.start if idx.start is not None else 0 + stop = idx.stop if idx.stop is not None else self.size + step = idx.step if idx.step is not None else 1 for (coord, (lower, upper)) in enumerate(self.bounds): - slice_tuple = (idx.start if idx.start is not None else 0, - idx.stop if idx.stop is not None else self.size) - if tuple_intersection((lower, upper), slice_tuple): + if tuple_intersection((start, stop, step), (lower, upper)): coords.append(coord) - return coords if coords != [] else [0] + return coords else: raise TypeError("Index must be Integral or slice.") @@ -319,14 +325,17 @@ def slice(self, idx): """Make a new Map from a slice.""" new_bounds = [0] start = idx.start if idx.start is not None else 0 + step = idx.step if idx.step is not None else 1 # iterate over the processes in this dimension for proc_start, proc_stop in self.bounds: stop = idx.stop if idx.stop is not None else proc_stop - intersection = tuple_intersection((proc_start, proc_stop), - (start, stop)) - if intersection: - size = intersection[1] - intersection[0] - new_bounds.append(size + new_bounds[-1]) + isection = tuple_intersection((start, stop, step), + (proc_start, proc_stop)) + if isection: + isection_size = int(np.ceil((isection[1] - (isection[0])) / step)) + new_bounds.append(isection_size + new_bounds[-1]) + if len(new_bounds) == [0]: + new_bounds = [] return {'dist_type': self.dist, 'bounds': new_bounds} @@ -429,7 +438,7 @@ def owners(self, idx): if isinstance(idx, Integral): return self._owners else: - msg = "Index for BlockCyclicMap must be an Integral." + msg = "Index for UnstructuredMap must be an Integral." raise NotImplementedError(msg) def get_dimdicts(self): diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index b3d0d7a6..0892a42b 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -163,7 +163,7 @@ def test_slice_block_dist_1d_with_step(self): step = 2 expected = numpy.random.randint(10, size=size) darr = self.dac.fromarray(expected) - assert_array_equal(darr[::2], expected[::2]) + assert_array_equal(darr[::step].toarray(), expected[::step]) def test_partial_slice_block_dist_2d(self): shape = (10, 20) diff --git a/distarray/dist/tests/test_maps.py b/distarray/dist/tests/test_maps.py index bab31f4d..e187ddc6 100644 --- a/distarray/dist/tests/test_maps.py +++ b/distarray/dist/tests/test_maps.py @@ -4,7 +4,10 @@ # Distributed under the terms of the BSD License. See COPYING.rst. # --------------------------------------------------------------------------- +from __future__ import division + import unittest +import numpy from random import randrange from distarray.externals.six.moves import range @@ -141,6 +144,29 @@ def test_from_full_slice_1d(self): self.assertSequenceEqual(d1.targets, d0.targets) self.assertSequenceEqual(d1.maps[0].bounds, d0.maps[0].bounds) + def test_from_full_slice_with_step_1d_0(self): + d0 = maps.Distribution.from_shape(context=self.ctx, shape=(15,)) + + s = (slice(None, None, 2),) + d1 = d0.slice(s) + + self.assertEqual(len(d0.maps), len(d1.maps)) + self.assertSequenceEqual(d1.dist, d0.dist) + self.assertSequenceEqual(d1.targets, d0.targets) + self.assertEqual(d1.maps[0].bounds[0][0], d0.maps[0].bounds[0][0]) + + def test_from_full_slice_with_step_1d_1(self): + d0 = maps.Distribution.from_shape(context=self.ctx, shape=(30,)) + step = 4 + + s = (slice(4, None, step),) + d1 = d0.slice(s) + + self.assertEqual(len(d0.maps), len(d1.maps)) + self.assertSequenceEqual(d1.dist, d0.dist) + self.assertSequenceEqual(d1.targets, d0.targets) + self.assertEqual(d1.maps[0].bounds[0][0], d0.maps[0].bounds[0][0]) + def test_from_full_slice_2d(self): d0 = maps.Distribution.from_shape(context=self.ctx, shape=(15, 20)) diff --git a/distarray/local/maps.py b/distarray/local/maps.py index b775d8d3..5cd66c35 100644 --- a/distarray/local/maps.py +++ b/distarray/local/maps.py @@ -213,11 +213,19 @@ def local_from_global(self, gidx): raise IndexError("Global index %s out of bounds" % gidx) return gidx - self.start elif isinstance(gidx, slice): + # we don't make the effort to compute the exact slice + # `__getitem__` doesn't care about overly-large slices, we just + # have to get the offset from the start correct based on the `step` start = gidx.start if gidx.start is not None else 0 stop = gidx.stop if gidx.stop is not None else self.global_size - new_start = max(start - self.start, 0) # prevent negative inds + step = gidx.step if gidx.step is not None else 1 + new_start = start - self.start + if new_start < 0: # don't allow negative starts + new_start += step * abs(new_start // step) + if new_start < 0: + new_start += step new_stop = stop - self.start - return slice(new_start, new_stop) + return slice(new_start, new_stop, gidx.step) else: raise TypeError("Index must be Integral or slice.") From 546acaca9dfb3222312ce43ccc3190b31d05884c Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Thu, 29 May 2014 19:54:29 -0500 Subject: [PATCH 67/73] Fix a bug. --- distarray/dist/maps.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/distarray/dist/maps.py b/distarray/dist/maps.py index c83a1fad..ae1fc0f6 100644 --- a/distarray/dist/maps.py +++ b/distarray/dist/maps.py @@ -226,7 +226,7 @@ def slice(self, idx): isection = tuple_intersection((start, stop, step), (0, self.size)) if isection: step = idx.step if idx.step is not None else 1 - isection_size = int(np.ceil((isection[1] - isection[0]) // step)) + isection_size = int(np.ceil((isection[1] - isection[0]) / step)) else: isection_size = 0 From 2b45d3fdbf0732ca4d9892fd566b2780ab978f68 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Thu, 29 May 2014 19:54:39 -0500 Subject: [PATCH 68/73] Add some setitem tests. --- distarray/dist/tests/test_distarray.py | 27 ++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index 0892a42b..e1e6531d 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -245,6 +245,15 @@ def test_large_1d_slice(self): arr[slc] = new_data assert_array_equal(arr.toarray(), source) + def test_1d_slice_with_step(self): + source = numpy.random.randint(10, size=20) + new_data = numpy.random.randint(10, size=5) + slc = slice(7, 17, 2) + arr = self.dac.fromarray(source) + source[slc] = new_data + arr[slc] = new_data + assert_array_equal(arr.toarray(), source) + def test_2d_slice_0(self): # on process boundaries source = numpy.random.randint(10, size=(10, 20)) @@ -255,6 +264,15 @@ def test_2d_slice_0(self): arr[slc] = new_data assert_array_equal(arr.toarray(), source) + def test_2d_slice_with_step(self): + source = numpy.random.randint(10, size=(10, 20)) + new_data = numpy.random.randint(10, size=(2, 5)) + slc = (slice(5, 10, 3), slice(5, 15, 2)) + arr = self.dac.fromarray(source) + source[slc] = new_data + arr[slc] = new_data + assert_array_equal(arr.toarray(), source) + def test_2d_slice_1(self): # off process boundaries source = numpy.random.randint(10, size=(10, 20)) @@ -283,6 +301,15 @@ def test_full_3d_slice_ellipsis(self): arr[slc] = new_data assert_array_equal(arr.toarray(), source) + def test_3d_slice_ellipsis_with_step(self): + source = numpy.random.randint(10, size=(5, 4, 5)) + new_data = numpy.random.randint(10, size=(5, 2, 5)) + slc = (Ellipsis, slice(None, None, 2), Ellipsis) + arr = self.dac.fromarray(source) + source[slc] = new_data + arr[slc] = new_data + assert_array_equal(arr.toarray(), source) + def test_partial_indexing_0(self): source = numpy.random.randint(10, size=(3, 4, 5)) new_data = numpy.random.randint(10, size=(4, 5)) From d34bb170eba929046696cb91096b5d59a97eaa1b Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Thu, 5 Jun 2014 12:29:51 -0500 Subject: [PATCH 69/73] Fix test in test_distarray. --- distarray/dist/tests/test_distarray.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index 6369a4f1..c8ec48c5 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -174,26 +174,26 @@ def test_incomplete_index_block_dist_2d(self): def test_trailing_ellipsis(self): shape = (2, 3, 7, 6) expected = numpy.random.randint(10, size=shape) - arr = self.dac.fromarray(expected) + arr = self.context.fromarray(expected) assert_array_equal(arr[1, ...].toarray(), expected[1, ...]) def test_leading_ellipsis(self): shape = (2, 3, 7, 6) expected = numpy.random.randint(10, size=shape) - arr = self.dac.fromarray(expected) + arr = self.context.fromarray(expected) assert_array_equal(arr[..., 3].toarray(), expected[..., 3]) def test_multiple_ellipsis(self): shape = (2, 4, 2, 4, 1, 5) expected = numpy.random.randint(10, size=shape) - arr = self.dac.fromarray(expected) + arr = self.context.fromarray(expected) assert_array_equal(arr[..., 3, ..., 4].toarray(), expected[..., 3, ..., 4]) def test_vestigial_ellipsis(self): shape = (1, 2, 3) expected = numpy.random.randint(10, size=shape) - arr = self.dac.fromarray(expected) + arr = self.context.fromarray(expected) assert_array_equal(arr[0, :, 0, ...].toarray(), expected[0, :, 0, ...]) From 5e933e477953db868d5f372e2b84ed05993649d9 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Thu, 5 Jun 2014 12:42:09 -0500 Subject: [PATCH 70/73] Fix tests. --- distarray/dist/tests/test_distarray.py | 8 ++++---- distarray/dist/tests/test_maps.py | 5 ++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/distarray/dist/tests/test_distarray.py b/distarray/dist/tests/test_distarray.py index 69e94040..479f8798 100644 --- a/distarray/dist/tests/test_distarray.py +++ b/distarray/dist/tests/test_distarray.py @@ -150,7 +150,7 @@ def test_slice_block_dist_1d_with_step(self): size = 10 step = 2 expected = numpy.random.randint(10, size=size) - darr = self.dac.fromarray(expected) + darr = self.context.fromarray(expected) assert_array_equal(darr[::step].toarray(), expected[::step]) def test_partial_slice_block_dist_2d(self): @@ -229,7 +229,7 @@ def test_1d_slice_with_step(self): source = numpy.random.randint(10, size=20) new_data = numpy.random.randint(10, size=5) slc = slice(7, 17, 2) - arr = self.dac.fromarray(source) + arr = self.context.fromarray(source) source[slc] = new_data arr[slc] = new_data assert_array_equal(arr.toarray(), source) @@ -248,7 +248,7 @@ def test_2d_slice_with_step(self): source = numpy.random.randint(10, size=(10, 20)) new_data = numpy.random.randint(10, size=(2, 5)) slc = (slice(5, 10, 3), slice(5, 15, 2)) - arr = self.dac.fromarray(source) + arr = self.context.fromarray(source) source[slc] = new_data arr[slc] = new_data assert_array_equal(arr.toarray(), source) @@ -285,7 +285,7 @@ def test_3d_slice_ellipsis_with_step(self): source = numpy.random.randint(10, size=(5, 4, 5)) new_data = numpy.random.randint(10, size=(5, 2, 5)) slc = (Ellipsis, slice(None, None, 2), Ellipsis) - arr = self.dac.fromarray(source) + arr = self.context.fromarray(source) source[slc] = new_data arr[slc] = new_data assert_array_equal(arr.toarray(), source) diff --git a/distarray/dist/tests/test_maps.py b/distarray/dist/tests/test_maps.py index a0d86a3e..fd963899 100644 --- a/distarray/dist/tests/test_maps.py +++ b/distarray/dist/tests/test_maps.py @@ -7,7 +7,6 @@ from __future__ import division import unittest -import numpy from random import randrange from distarray.externals.six.moves import range @@ -146,7 +145,7 @@ def test_from_full_slice_1d(self): self.assertSequenceEqual(d1.maps[0].bounds, d0.maps[0].bounds) def test_from_full_slice_with_step_1d_0(self): - d0 = maps.Distribution.from_shape(context=self.ctx, shape=(15,)) + d0 = maps.Distribution.from_shape(context=self.context, shape=(15,)) s = (slice(None, None, 2),) d1 = d0.slice(s) @@ -157,7 +156,7 @@ def test_from_full_slice_with_step_1d_0(self): self.assertEqual(d1.maps[0].bounds[0][0], d0.maps[0].bounds[0][0]) def test_from_full_slice_with_step_1d_1(self): - d0 = maps.Distribution.from_shape(context=self.ctx, shape=(30,)) + d0 = maps.Distribution.from_shape(context=self.context, shape=(30,)) step = 4 s = (slice(4, None, step),) From 13c7a439269d4cdb24015b18aa99b497da5cf598 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Thu, 12 Jun 2014 11:00:10 -0500 Subject: [PATCH 71/73] Add APUG slides. --- docs/2014-06-apug/2014-06-apug.pdf | Bin 0 -> 1171085 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/2014-06-apug/2014-06-apug.pdf diff --git a/docs/2014-06-apug/2014-06-apug.pdf b/docs/2014-06-apug/2014-06-apug.pdf new file mode 100644 index 0000000000000000000000000000000000000000..be6a3b5474c61fcc85756c44bc455b1f55be6e2b GIT binary patch literal 1171085 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�FZSrPfGt~C!^?m(B9BTbS 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Ý%BL$3Q?Db6Ng)UM@4_JZfS7xl3I1+$dk#u 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 XhOFkyD#HZO@(v8ZflfP+~{Sy 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�^6YKlDDWxb0kob*iOi*E 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ԦJl4JY$_U2(;FGmh-!e|D_+O>+ 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 literal 0 HcmV?d00001 From fac83d95687092b45a7d874b0684671cb65dd815 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Thu, 12 Jun 2014 11:00:52 -0500 Subject: [PATCH 72/73] Add accompanying IPython notebook. --- docs/2014-06-apug/2014-06-apug.ipynb | 1198 ++++++++++++++++++++++++++ 1 file changed, 1198 insertions(+) create mode 100644 docs/2014-06-apug/2014-06-apug.ipynb diff --git a/docs/2014-06-apug/2014-06-apug.ipynb b/docs/2014-06-apug/2014-06-apug.ipynb new file mode 100644 index 00000000..e13c36c8 --- /dev/null +++ b/docs/2014-06-apug/2014-06-apug.ipynb @@ -0,0 +1,1198 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:0d2bad73107e13fa2f3e4ed1371a8c695080cd10f273423eba9655a52e0e63f1" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "DistArray: Distributed Arrays for Python\n", + "========================================\n", + "\n", + "Robert Grant, Enthought\n", + "\n", + "11 June 2014\n", + "\n", + "[github.com/enthought/distarray](https://github.com/enthought/distarray)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "Start a cluster\n", + "---------------\n", + "These examples require an `IPython.parallel` cluster to be running.\n", + "Outside the notebook, run\n", + "```\n", + "dacluster start -n4\n", + "```" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# some utility imports\n", + "from pprint import pprint\n", + "from matplotlib import pyplot as plt\n", + "\n", + "# main imports\n", + "import numpy\n", + "import distarray\n", + "\n", + "numpy.set_printoptions(precision=2) # display formatting" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "prompt_number": 1 + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "NumPy Arrays\n", + "------------" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "nparr = numpy.random.random((4, 5))\n", + "nparr" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 2, + "text": [ + "array([[ 0.67, 0.27, 0.91, 0.05, 0.78],\n", + " [ 0.38, 0.07, 0.15, 0.7 , 0.64],\n", + " [ 0.82, 0.18, 0.58, 0.14, 0.97],\n", + " [ 0.76, 0.88, 0.5 , 0.34, 0.89]])" + ] + } + ], + "prompt_number": 2 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# NumPy array attributes\n", + "print \"type:\", type(nparr)\n", + "print \"dtype:\", nparr.dtype\n", + "print \"ndim:\", nparr.ndim\n", + "print \"shape:\", nparr.shape\n", + "print \"itemsize:\", nparr.itemsize\n", + "print \"nbytes:\", nparr.nbytes" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "type: \n", + "dtype: float64\n", + "ndim: 2\n", + "shape: (4, 5)\n", + "itemsize: 8\n", + "nbytes: 160\n" + ] + } + ], + "prompt_number": 3 + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "DistArrays\n", + "----------" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from distarray.dist import Context\n", + "context = Context()\n", + "darr = context.fromarray(nparr)\n", + "darr" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 4, + "text": [ + "" + ] + } + ], + "prompt_number": 4 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# parts of the array are stored on each engine\n", + "for i, a in enumerate(darr.get_localarrays()):\n", + " print i, a" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "0 [[ 0.67 0.27 0.91 0.05 0.78]]\n", + "1 [[ 0.38 0.07 0.15 0.7 0.64]]\n", + "2 [[ 0.82 0.18 0.58 0.14 0.97]]\n", + "3 [[ 0.76 0.88 0.5 0.34 0.89]]\n" + ] + } + ], + "prompt_number": 5 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# DistArray attributes\n", + "print \"type:\", type(darr)\n", + "print \"dtype:\", darr.dtype\n", + "print \"ndim:\", darr.ndim\n", + "print \"shape:\", darr.shape\n", + "print \"itemsize:\", darr.itemsize\n", + "print \"nbytes:\", darr.nbytes" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "type: \n", + "dtype: float64\n", + "ndim: 2\n", + "shape: (4, 5)\n", + "itemsize: 8\n", + "nbytes: 160\n" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# with some extra...\n", + "print \"targets:\", darr.targets\n", + "print \"context:\", darr.context \n", + "print \"distribution:\", darr.distribution" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "targets: [0, 1, 2, 3]\n", + "context: \n", + "distribution: \n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Universal Functions (ufuncs)\n", + "----------------------------" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "## NumPy ##\n", + "numpy.sin(nparr)" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 8, + "text": [ + "array([[ 0.62, 0.27, 0.79, 0.05, 0.71],\n", + " [ 0.37, 0.07, 0.15, 0.65, 0.59],\n", + " [ 0.73, 0.18, 0.55, 0.14, 0.82],\n", + " [ 0.69, 0.77, 0.48, 0.34, 0.77]])" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "## DistArray ##\n", + "import distarray.dist as da\n", + "da.sin(darr)" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 9, + "text": [ + "" + ] + } + ], + "prompt_number": 9 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "da.sin(darr).toarray()" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 10, + "text": [ + "array([[ 0.62, 0.27, 0.79, 0.05, 0.71],\n", + " [ 0.37, 0.07, 0.15, 0.65, 0.59],\n", + " [ 0.73, 0.18, 0.55, 0.14, 0.82],\n", + " [ 0.69, 0.77, 0.48, 0.34, 0.77]])" + ] + } + ], + "prompt_number": 10 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "## NumPy ##\n", + "nparr + nparr" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 11, + "text": [ + "array([[ 1.33, 0.55, 1.82, 0.1 , 1.57],\n", + " [ 0.77, 0.14, 0.3 , 1.41, 1.27],\n", + " [ 1.64, 0.36, 1.16, 0.28, 1.94],\n", + " [ 1.52, 1.76, 1.01, 0.69, 1.77]])" + ] + } + ], + "prompt_number": 11 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "## DistArray ##\n", + "darr + darr" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 12, + "text": [ + "" + ] + } + ], + "prompt_number": 12 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "(darr + darr).toarray()" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 13, + "text": [ + "array([[ 1.33, 0.55, 1.82, 0.1 , 1.57],\n", + " [ 0.77, 0.14, 0.3 , 1.41, 1.27],\n", + " [ 1.64, 0.36, 1.16, 0.28, 1.94],\n", + " [ 1.52, 1.76, 1.01, 0.69, 1.77]])" + ] + } + ], + "prompt_number": 13 + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Distributions\n", + "-------------" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Distributions control which processes own which (global) indices\n", + "distribution = darr.distribution" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "prompt_number": 14 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# this is a 2D distribution\n", + "pprint(distribution.maps)" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "[,\n", + " ]\n" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# setup\n", + "from distarray.plotting import plot_array_distribution\n", + "process_coords = [(0, 0), (1, 0), (2, 0), (3, 0)]" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "prompt_number": 16 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "plot_array_distribution(darr, process_coords, cell_label=False, legend=True)" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 17, + "text": [ + "" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "iVBORw0KGgoAAAANSUhEUgAAAbUAAAEzCAYAAAC2Q50YAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAD69JREFUeJzt3X2MZXV9x/H3Z3eh0hLTWkwU2Dq2FV1AolYJirG7TWw2\nptGmqdKNtMY/+iiBmqbSB5vCX/7TB/6gJiYuSDUFW4ymSFbS4I7F0Cxi2JZ9wGLiNDxEbCrSIjHZ\nlW//mDs6PLj37s6dOYfvvF/Jzd57Z37nfDMh8+acc+feVBWSJHWwZegBJEmaF6MmSWrDqEmS2jBq\nkqQ2jJokqQ2jJklqo03UkuxO8kCSB5NcPfQ8Y5DkhiSPJbl/6FnGIsn2JPuTHE5yKMmVQ880Bkle\nlORAkoNJjiT5yNAzjUWSrUnuS3Lb0LNouhZRS7IVuB7YDZwP7EmyY9ipRuFGln8m+qFjwAer6gLg\nEuAD/rcCVfU9YFdVvQ64CNiV5K0DjzUWVwFHAP+o9wWgRdSAi4GvV9VSVR0DbgHeNfBMg6uqu4DH\nh55jTKrqm1V1cHL/SeAocPawU41DVT01uXs6sBX49oDjjEKSc4F3AB8HMvA4mkGXqJ0DPLTq8cOT\n56QfKckC8HrgwLCTjEOSLUkOAo8B+6vqyNAzjcDfAn8MPD30IJpNl6h5WkAnJcmZwK3AVZMjtk2v\nqp6enH48F3hbkp0DjzSoJL8CfKuq7sOjtBeMLlF7BNi+6vF2lo/WpOdIchrwGeBTVfW5oecZm6p6\nArgdeOPQswzsLcA7k3wDuBn4pSR/P/BMmqJL1O4FXpVkIcnpwGXAPw88k0YoSYC9wJGqum7oecYi\nyVlJfnJy/wzg7cB9w041rKr6s6raXlWvBH4D+GJV/dbQc+nEWkStqo4DVwB3sPwqpU9X1dFhpxpe\nkpuBu4HzkjyU5P1DzzQClwKXs/zqvvsmN18hCi8Hvji5pnYAuK2q7hx4prHxMscLQPzoGUlSFy2O\n1CRJAqMmSWrEqEmS2jBqkqQ2jJokqY1ta91AEl8+KUkbqKo27B1O1vI7fiPnXLHmqC37y/lsZs0W\ngZ0DzzBGi/hzeT6L+HN5tkX8mTyfRcbzc7l2w/d4zQatmQdPP0qS2jBqkqQ2mkVtYegBRmph6AFG\namHoAUZoYegBRmph6AE0I6O2KSwMPcBILQw9wAgtDD3ASC0MPYBm1CxqkqTNzKhJktowapKkNoya\nJKkNoyZJasOoSZLaMGqSpDaMmiSpDaMmSWrDqEmS2jBqkqQ2jJokqQ2jJklqw6hJktowapKkNoya\nJKkNoyZJasOoSZLaMGqSpDaMmiSpDaMmSWrDqEmS2jBqkqQ2jJokqY2pUUuyO8kDSR5McvVGDCVJ\n6iXJi5IcSHIwyZEkH1mP/Zwwakm2AtcDu4HzgT1JdqzHIJKkvqrqe8CuqnodcBGwK8lb572faUdq\nFwNfr6qlqjoG3AK8a95DSJL6q6qnJndPB7YC3573PqZF7RzgoVWPH548J0nSSUmyJclB4DFgf1Ud\nmfc+pkWt5r1DSdLmVFVPT04/ngu8LcnOee9j25SvPwJsX/V4O8tHa8+yuOr+wuQmSVq7pclt3L7B\n7FNW1RNJbgfeyDMDsmbTonYv8KokC8CjwGXAnud+2855ziRJ+oEFnnmg8KVhxpjilZPbimdPmeQs\n4HhVfSfJGcDbgWvnPccJo1ZVx5NcAdzB8kW9vVV1dN5DSJLaezlwU5ItLF/6+mRV3TnvnUw7UqOq\n9gH75r1jSdLmUVX3A29Y7/34jiKSpDaMmiSpDaMmSWrDqEmS2jBqkqQ2jJokqQ2jJklqw6hJktow\napKkNoyaJKkNoyZJasOoSZLaMGqSpDaMmiSpDaMmSWrDqEmS2jBqkqQ2jJokqQ2jJklqw6hJktow\napKkNoyaJKkNoyZJasOoSZLaMGqSpDaMmiSpDaMmSWrDqEmS2jBqkqQ2jJokqY1tc9nKoWvmshlJ\n0hQXXjv0BKOWqlrbBpLi0Nq2IUma0YWhqrJRu0tS9egprDubDZ1zhacfJUltGDVJUhtGTZLUhlGT\nJLVh1CRJbRg1SVIbRk2S1IZRkyS1YdQkSW0YNUlSG0ZNktSGUZMktWHUJEltGDVJUhtGTZLUhlGT\nJLVh1CRJbRg1SVIbRk2S1IZRkyS1YdQkSW0YNUlSG0ZNktSGUZMktWHUJEltGDVJUhtGTZLUhlGT\nJLVh1CRJbUyNWpIbkjyW5P6NGEiS1E+S7Un2Jzmc5FCSK9djP7Mcqd0I7F6PnUuSNo1jwAer6gLg\nEuADSXbMeydTo1ZVdwGPz3vHkqTNo6q+WVUHJ/efBI4CZ897P15TkyRtqCQLwOuBA/Pe9ra5bOXv\nrvnh/TfthIt3zmWzkrTp3bMIX1kceoqpFu9evk2T5EzgVuCqyRHbXKWqZhliAbitql77PF8rDk3f\nhiRpDi4MVZWN2l2SqkdPYd3ZPGfOJKcBnwf2VdV185nwmTz9KElad0kC7AWOrFfQYLaX9N8M3A2c\nl+ShJO9fr2EkSW1dClwO7Epy3+Q291fWT72mVlV75r1TSdLmUlVfZgPODnr6UZLUhlGTJLVh1CRJ\nbRg1SVIbRk2S1IZRkyS1YdQkSW0YNUlSG0ZNkjQaSbYl+dqprjdqkqTRqKrjwANJXnEq6+fz0TOS\nJM3PS4DDSe4Bvjt5rqrqndMWGjVJ0tj8xeTflc81y6r7J2TUJEmjUlWLSV4GvInlmN1TVd+aZa3X\n1CRJo5LkPcAB4N3Ae4B7krx7lrUeqUmSxubDwJtWjs6SvBS4E/inaQs9UpMkjU2A/171+H8mz03l\nkZokaWy+ANyR5B9YjtllwL5ZFho1SdLYfAj4NeDSyeOPVdVnZ1lo1CRJY/PjwOeq6jNJXg28Jslp\nVXVs2kKvqUmSxuYu4MeSnAPcAVwOfGKWhUZNkjQ2qaqnWD4F+dGqejdw4SwLjZokaXSSvBl4L3D7\n5KmZemXUJElj84fAnwKfrarDSX4O2D/LwlTN9HZaP3oDSXFobduQJM3owlBVM/3N1jwkqXr0FNad\nzVzmTLIFOLOq/neW7/dITZI0KkluTvLiJD8BHAKOJvnQLGuNmiRpbM6fHJn9Kst/dL0A/OYsC42a\nJGlstiU5jeWo3Tb5+7SZrnMZNUnS2HwMWALOBP41yQLwxCwLfaGIJL2QbLIXikxmCLC1qo5P+16P\n1CRJo5LkZUn2JvnC5KkdwPtmWTuX936sn9qw/2mQpE1tk/y2/QRwI/Dnk8cPAv8I7J220Dc0liSd\nUB4/lUtMa8rvWVX16SR/AlBVx5JMPfUInn6UJI3Pk0l+euVBkkuY8YUiHqlJksbmj4DbgJ9Ncjfw\nUuDXZ1lo1CRJo1JVX03yi8CrWT6P+cAsn6UGnn6UJI1MkitYfr/HQ1V1P3Bmkj+YZa1RkySNzW9X\n1eMrDyb3f2eWhUZNkjQ2Wybvzg9Akq3AabMs9JqaJGls7gBuSfIxlq+p/S7whRMvWWbUJEljczXL\npxt/f/L4X4CPz7LQqEmSRqWqvp/kBuDLk6ceqKrvz7LWqEmSRiXJTuAm4L8mT/1MkvdV1ZemrTVq\nkqSx+Rvgl6vqawBJzgNuAd4wbaGvfpQkjc22laABVNV/MuNBmEdqkqSx+WqSjwOfYvnVj+8F7p1l\noVGTJI3N7wFXAFdOHt8FfHSWhUZNkjQaSbYB/15VrwH++mTXe01NkjQaVXUc+FqSV5zKeo/UJElj\n8xLgcJJ7gO9Onquqeue0hUZNkjQ2H578u/rjs2f6+G2jJkkahSRnsPwikZ8H/gO4YdbPUVvhNTVJ\n0ljcBPwCy0F7B/BXJ7sBj9QkSWOxo6peC5BkL/CVk92AR2qSpLE4vnJn8irIk+aRmiRpLC5K8n+r\nHp+x6nFV1YunbcCoSZJGoaq2rnUbnn6UJLVh1CRJbRg1SVIbRk2S1IZRkyS1MTVqSbYn2Z/kcJJD\nSa6ctkaSpNWS3JDksST3r+d+ZjlSOwZ8sKouAC4BPpBkx3oOJUlq50Zg93rvZGrUquqbVXVwcv9J\n4Chw9noPJknqo6ruAh5f7/2c1DW1JAvA64ED6zGMJElrMfM7iiQ5E7gVuGpyxPYD16z6wO2db4ad\nb5nXeJK0uS3eDYv/NvQUM7hnEb6yOPQUpGr6564lOQ34PLCvqq571teqHlmn6SRJz5BzoKoy/Tvn\ntL+kODzT53M+0wV5zpyTs323rbwT/3qY5dWPAfYCR54dNEmSxmSWa2qXApcDu5LcN7mt+ytYJEl9\nJLkZuBs4L8lDSd6/HvuZek2tqr6Mf6QtSVqDqtqzEfsxVpKkNoyaJKkNoyZJasOoSZLaMGqSpDaM\nmiSpDaMmSWrDqEmS2jBqkqQ2jJokqQ2jJklqw6hJktowapKkNoyaJKkNoyZJasOoSZLaMGqSpDaM\nmiSpDaMmSWrDqEmS2jBqkqQ2jJokqQ2jJklqw6hJktowapKkNoyaJKkNoyZJasOoSZLaMGqSpDaM\nmiSpjW3z2Mg158xjK5Ikrc1coiZJauyCa4eeYGaefpQktWHUJEltGDVJUhtGTZLUhlGTJLVh1CRJ\nbRg1SVIbRk2S1IZRkyS1YdQkSW0YNUlSG0ZNktSGUZMktWHUJEltGDVJUhtGTZLUhlGTJLVh1CRJ\nbRg1SVIbRk2S1IZRkyS1YdQkSW0YNUlSG0ZNktSGUZMktWHUJEltGDVJUhtGTZLUxgmjluRFSQ4k\nOZjkSJKPbNRgkqRekuxO8kCSB5NcvR77OGHUqup7wK6qeh1wEbAryVvXYxBJUl9JtgLXA7uB84E9\nSXbMez9TTz9W1VOTu6cDW4Fvz3sISVJ7FwNfr6qlqjoG3AK8a947mRq1JFuSHAQeA/ZX1ZF5DyFJ\nau8c4KFVjx+ePDdXsxypPT05/Xgu8LYkO+c9hCSpvdqInWyb9Rur6okktwNvBBZXf231g4XJTZK0\ndkuT2/h9gymTPgJsX/V4O8tHa3N1wqglOQs4XlXfSXIG8Hbg2md/3855TyVJAp57oPClYcaYwSsn\ntxXPmfRe4FVJFoBHgcuAPfOeYtqR2suBm5JsYflU5Ser6s55DyFJ6q2qjie5AriD5Rcd7q2qo/Pe\nzwmjVlX3A2+Y904lSZtPVe0D9q3nPnxHEUlSG0ZNktSGUZMktWHUJEltGDVJUhtGTZLUhlGTJLVh\n1CRJbRg1SVIbRk2S1IZRkyS1YdQkSW0YNUlSG0ZNktSGUZMktWHUJEltGDVJUhtGTZLUhlGTJLVh\n1CRJbRg1SVIbRk2S1IZRkyS1YdQkSW0YNUlSG0ZNktSGUZMktdEqaktDDzBSS0MPMFJLQw8wQktD\nDzBSS0MPoJkZtU1gaegBRmpp6AFGaGnoAUZqaegBNLNWUZMkbW5GTZLURqpqbRtI1rYBSdJJqaps\n1L7W8jt+I+dcseaoSZI0Fp5+lCS1YdQkSW0YNUlSG0ZNktSGUZMktfH/OydIpv9Xa0UAAAAASUVO\nRK5CYII=\n", + "text": [ + "" + ] + } + ], + "prompt_number": 17 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "distribution.maps[0].bounds" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 18, + "text": [ + "[(0, 1), (1, 2), (2, 3), (3, 4)]" + ] + } + ], + "prompt_number": 18 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# the above is the default, you can make more complex distributions\n", + "from distarray.dist import Distribution\n", + "distribution = Distribution.from_shape(context, (64, 64), dist=('b', 'c'))\n", + "a = context.zeros(distribution, dtype='int32')\n", + "plot_array_distribution(a, process_coords, cell_label=False, legend=True)" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 19, + "text": [ + "" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Contexts\n", + "--------" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# Context objects manage the setup and communication of the worker processes\n", + "# for DistArray objects. \n", + "print \"targets:\", context.targets\n", + "print \"comm:\", context.comm" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "targets: [0, 1, 2, 3]\n", + "comm: __distarray__e60fe9953c015b300\n" + ] + } + ], + "prompt_number": 20 + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "IO Support (v0.2)\n", + "-----------------" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# load .npy files in parallel\n", + "numpy.save(\"/tmp/outfile.npy\", nparr)\n", + "distribution = Distribution.from_shape(context, nparr.shape) \n", + "new_darr = context.load_npy(\"/tmp/outfile.npy\", distribution)\n", + "new_darr" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 21, + "text": [ + "" + ] + } + ], + "prompt_number": 21 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# save DistArrays to .hdf5 files in parallel\n", + "context.save_hdf5(\"/tmp/outfile.hdf5\", darr, mode='w')" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "prompt_number": 22 + }, + { + "cell_type": "code", + "collapsed": true, + "input": [ + "# load DistArrays from .hdf5 files in parallel (using h5py)\n", + "context.load_hdf5(\"/tmp/outfile.hdf5\", distribution)" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 23, + "text": [ + "" + ] + } + ], + "prompt_number": 23 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# save to .dnpy (a built-in flat-file format based on .npy)\n", + "context.save_dnpy(\"/tmp/outfile\", darr)" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [], + "prompt_number": 24 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# load from .dnpy\n", + "context.load_dnpy(\"/tmp/outfile\")" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 25, + "text": [ + "" + ] + } + ], + "prompt_number": 25 + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Reductions (v0.3)\n", + "-----------------" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "## NumPy ##\n", + "print \"sum:\", nparr.sum()\n", + "print \"sum over an axis:\", nparr.sum(axis=1)" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "sum: 10.6867002882\n", + "sum over an axis: [ 2.68 1.94 2.69 3.37]\n" + ] + } + ], + "prompt_number": 26 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "## DistArray ##\n", + "print \"sum:\", darr.sum(), darr.sum().toarray()\n", + "print \"sum over an axis:\", darr.sum(axis=1), darr.sum(axis=1).toarray()" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "sum: " + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "10.6867002882\n", + "sum over an axis: " + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "[ 2.68 1.94 2.69 3.37]\n" + ] + } + ], + "prompt_number": 27 + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Context.apply (v0.3)\n", + "--------------------\n", + "Global view, local control" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def get_local_random():\n", + " import numpy\n", + " return numpy.random.randint(10)\n", + "\n", + "context.apply(get_local_random)" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 28, + "text": [ + "[2, 4, 6, 5]" + ] + } + ], + "prompt_number": 28 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def get_local_var(darr):\n", + " return darr.ndarray.var()\n", + "\n", + "context.apply(get_local_var, args=(darr.key,))" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 29, + "text": [ + "[0.1043967698165971,\n", + " 0.064006352164566974,\n", + " 0.11124749755337127,\n", + " 0.046561405334938577]" + ] + } + ], + "prompt_number": 29 + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Distributed Slicing (v0.4)\n", + "--------------------------\n", + "(coming soon)" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# as a reminder\n", + "darr.toarray()" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 30, + "text": [ + "array([[ 0.67, 0.27, 0.91, 0.05, 0.78],\n", + " [ 0.38, 0.07, 0.15, 0.7 , 0.64],\n", + " [ 0.82, 0.18, 0.58, 0.14, 0.97],\n", + " [ 0.76, 0.88, 0.5 , 0.34, 0.89]])" + ] + } + ], + "prompt_number": 30 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "darr.get_localshapes()" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 31, + "text": [ + "[(1, 5), (1, 5), (1, 5), (1, 5)]" + ] + } + ], + "prompt_number": 31 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# take a column slice\n", + "darr_view = darr[:, 3]\n", + "print darr_view\n", + "print darr_view.toarray()" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "[ 0.05 0.7 0.14 0.34]\n" + ] + } + ], + "prompt_number": 32 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# changes in the view change the original\n", + "darr_view[3] = -0.99\n", + "print \"view:\"\n", + "print darr_view.toarray()\n", + "\n", + "print \"original:\"\n", + "print darr.toarray()" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "view:\n", + "[ 0.05 0.7 0.14 -0.99]\n", + "original:\n", + "[[ 0.67 0.27 0.91 0.05 0.78]\n", + " [ 0.38 0.07 0.15 0.7 0.64]\n", + " [ 0.82 0.18 0.58 0.14 0.97]\n", + " [ 0.76 0.88 0.5 -0.99 0.89]]\n" + ] + } + ], + "prompt_number": 33 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# a more complex slice\n", + "print darr[:, 2::2]\n", + "print darr[:-1, 2::2].toarray()" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "[[ 0.91 0.78]\n", + " [ 0.15 0.64]\n", + " [ 0.58 0.97]]" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n" + ] + } + ], + "prompt_number": 34 + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Distributed Array Protocol (v0.2)\n", + "---------------------------------\n", + "(exporting and importing distributed arrays)" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def return_protocol_structure(darr):\n", + " return darr.__distarray__()\n", + "\n", + "context.apply(return_protocol_structure, args=(darr.key,))" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 35, + "text": [ + "[{'__version__': '0.10.0',\n", + " 'buffer': array([[ 0.67, 0.27, 0.91, 0.05, 0.78]]),\n", + " 'dim_data': ({'dist_type': 'b',\n", + " 'proc_grid_rank': 0,\n", + " 'proc_grid_size': 4,\n", + " 'size': 4,\n", + " 'start': 0,\n", + " 'stop': 1},\n", + " {'dist_type': 'b',\n", + " 'proc_grid_rank': 0,\n", + " 'proc_grid_size': 1,\n", + " 'size': 5,\n", + " 'start': 0,\n", + " 'stop': 5})},\n", + " {'__version__': '0.10.0',\n", + " 'buffer': array([[ 0.38, 0.07, 0.15, 0.7 , 0.64]]),\n", + " 'dim_data': ({'dist_type': 'b',\n", + " 'proc_grid_rank': 1,\n", + " 'proc_grid_size': 4,\n", + " 'size': 4,\n", + " 'start': 1,\n", + " 'stop': 2},\n", + " {'dist_type': 'b',\n", + " 'proc_grid_rank': 0,\n", + " 'proc_grid_size': 1,\n", + " 'size': 5,\n", + " 'start': 0,\n", + " 'stop': 5})},\n", + " {'__version__': '0.10.0',\n", + " 'buffer': array([[ 0.82, 0.18, 0.58, 0.14, 0.97]]),\n", + " 'dim_data': ({'dist_type': 'b',\n", + " 'proc_grid_rank': 2,\n", + " 'proc_grid_size': 4,\n", + " 'size': 4,\n", + " 'start': 2,\n", + " 'stop': 3},\n", + " {'dist_type': 'b',\n", + " 'proc_grid_rank': 0,\n", + " 'proc_grid_size': 1,\n", + " 'size': 5,\n", + " 'start': 0,\n", + " 'stop': 5})},\n", + " {'__version__': '0.10.0',\n", + " 'buffer': array([[ 0.76, 0.88, 0.5 , -0.99, 0.89]]),\n", + " 'dim_data': ({'dist_type': 'b',\n", + " 'proc_grid_rank': 3,\n", + " 'proc_grid_size': 4,\n", + " 'size': 4,\n", + " 'start': 3,\n", + " 'stop': 4},\n", + " {'dist_type': 'b',\n", + " 'proc_grid_rank': 0,\n", + " 'proc_grid_size': 1,\n", + " 'size': 5,\n", + " 'start': 0,\n", + " 'stop': 5})}]" + ] + } + ], + "prompt_number": 35 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Acknowledgement and Disclaimer\n", + "------------------------------\n", + "\n", + "This material is based upon work supported by the Department of Energy under Award Number DE-SC0007699.\n", + "\n", + "This report was prepared as an account of work sponsored by an agency of the United States Government. Neither the United States Government nor any agency thereof, nor any of their employees, makes any warranty, express or implied, or assumes any legal liability or responsibility for the accuracy, completeness, or usefulness of any information, apparatus, product, or process disclosed, or represents that its use would not infringe privately owned rights. Reference herein to any specific commercial product, process, or service by trade name, trademark, manufacturer, or otherwise does not necessarily constitute or imply its endorsement, recommendation, or favoring by the United States Government or any agency thereof. The views and opinions of authors expressed herein do not necessarily state or reflect those of the United States Government or any agency thereof. " + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file From 91c408d8b816ed3641a88bf45a115ca1021a5125 Mon Sep 17 00:00:00 2001 From: Robert David Grant Date: Thu, 12 Jun 2014 11:01:10 -0500 Subject: [PATCH 73/73] Add CSS to use with Notebook slideshow view. --- docs/2014-06-apug/custom.css | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 docs/2014-06-apug/custom.css diff --git a/docs/2014-06-apug/custom.css b/docs/2014-06-apug/custom.css new file mode 100644 index 00000000..ecd6c375 --- /dev/null +++ b/docs/2014-06-apug/custom.css @@ -0,0 +1,5 @@ +/* make the default font-size bigger in slides mode */ + +.reveal { + font-size: 250%; +}