diff --git a/pyopencl/array.py b/pyopencl/array.py index a4a5f4cffa57a314192878aec926f99285954b78..429affba0d5283cf815f662366548ffdadc45c7b 100644 --- a/pyopencl/array.py +++ b/pyopencl/array.py @@ -425,13 +425,13 @@ class Array(object): # invariant here: allocator, queue set - # {{{ determine shape and strides + # {{{ determine shape, size, and strides dtype = np.dtype(dtype) try: - s = 1 + size = 1 for dim in shape: - s *= dim + size *= dim except TypeError: import sys if sys.version_info >= (3,): @@ -442,12 +442,11 @@ class Array(object): if not isinstance(shape, admissible_types): raise TypeError("shape must either be iterable or " "castable to an integer") - s = shape + size = shape shape = (shape,) - if isinstance(s, np.integer): - # bombs if s is a Python integer - s = np.asscalar(s) + if isinstance(size, np.integer): + size = size.item() if strides is None: strides = _make_strides(dtype.itemsize, shape, order) @@ -475,7 +474,7 @@ class Array(object): else: self.events = events - self.size = s + self.size = size alloc_nbytes = self.nbytes = self.dtype.itemsize * self.size self.allocator = allocator