From 9b8750b507ab104526dbf6fc241c57c47e5dcb0d Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Sun, 16 May 2021 13:34:29 -0500 Subject: [PATCH] Array._new_with_changes: Use array constructor fast path if possible --- pyopencl/array.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/pyopencl/array.py b/pyopencl/array.py index 7f6f1cb5..40187cb8 100644 --- a/pyopencl/array.py +++ b/pyopencl/array.py @@ -585,8 +585,14 @@ class Array: """ :arg data: *None* means allocate a new array. """ + fast = True + size = self.size if shape is None: shape = self.shape + else: + fast = False + size = None + if dtype is None: dtype = self.dtype if strides is None: @@ -605,14 +611,10 @@ class Array: else: events = self.events - if queue is not None: - return Array(queue, shape, dtype, allocator=allocator, - strides=strides, data=data, offset=offset, - events=events) - else: - return Array(self.context, shape, dtype, - strides=strides, data=data, offset=offset, - events=events, allocator=allocator) + return Array(None, shape, dtype, allocator=allocator, + strides=strides, data=data, offset=offset, + events=events, + _fast=fast, _context=self.context, _queue=queue, _size=size) def with_queue(self, queue): """Return a copy of *self* with the default queue set to *queue*. -- GitLab