diff --git a/pyopencl/array.py b/pyopencl/array.py index 0bede1e689ece1f1208d8aedf4639f3193a59cf6..d777eda042543f3d3e140d11d1fe032460247566 100644 --- a/pyopencl/array.py +++ b/pyopencl/array.py @@ -235,6 +235,10 @@ class ArrayHasOffsetError(ValueError): ValueError.__init__(self, val) +class _copy_queue: + pass + + class Array(object): """A :class:`numpy.ndarray` work-alike that stores its data and performs its computations on the compute device. *shape* and *dtype* work exactly @@ -525,7 +529,7 @@ class Array(object): return _ArrayFlags(self) def _new_with_changes(self, data, offset, shape=None, dtype=None, - strides=None, queue=None): + strides=None, queue=_copy_queue): """ :arg data: *None* means alocate a new array. """ @@ -535,7 +539,7 @@ class Array(object): dtype = self.dtype if strides is None: strides = self.strides - if queue is None: + if queue is _copy_queue: queue = self.queue if queue is not None: @@ -561,6 +565,7 @@ class Array(object): if queue is not None: assert queue.context == self.context + return self._new_with_changes(self.base_data, self.offset, queue=queue)