From 22fef1f4cc28f7581777085d42c72e7208f21ac2 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Sun, 16 May 2021 13:33:39 -0500 Subject: [PATCH] Array._new_like_me: Use constructor fast path if possible --- pyopencl/array.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/pyopencl/array.py b/pyopencl/array.py index 15979e15..7f6f1cb5 100644 --- a/pyopencl/array.py +++ b/pyopencl/array.py @@ -983,22 +983,26 @@ class Array: dest.context, dest.dtype, src.dtype) def _new_like_me(self, dtype=None, queue=None): - strides = None - flags = None if dtype is None: dtype = self.dtype - - if dtype == self.dtype: strides = self.strides flags = self.flags + fast = True + else: + strides = None + flags = None + if dtype == self.dtype: + strides = self.strides + flags = self.flags + fast = True + else: + fast = False queue = queue or self.queue - if queue is not None: - return self.__class__(queue, self.shape, dtype, - allocator=self.allocator, strides=strides, _flags=flags) - else: - return self.__class__(self.context, self.shape, dtype, - strides=strides, allocator=self.allocator, _flags=flags) + return self.__class__(None, self.shape, dtype, + allocator=self.allocator, strides=strides, _flags=flags, + _fast=fast, + _size=self.size, _queue=queue, _context=self.context) @staticmethod @elwise_kernel_runner -- GitLab