diff --git a/dpnp/config.py b/dpnp/config.py index a9a6b6ec7c52..9298994a8421 100644 --- a/dpnp/config.py +++ b/dpnp/config.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # ***************************************************************************** -# Copyright (c) 2016-2020, Intel Corporation +# Copyright (c) 2016-2022, Intel Corporation # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -43,11 +43,6 @@ Explicitly use NumPy.ndarray as return type for creation functions ''' -__DPNP_OUTPUT_DPCTL__ = int(os.getenv('DPNP_OUTPUT_DPCTL', 1)) -''' -Explicitly use DPCtl package container as return type for creation functions -''' - __DPNP_OUTPUT_DPCTL_DEFAULT_SHARED__ = int(os.getenv('DPNP_OUTPUT_DPCTL_DEFAULT_SHARED', 0)) ''' Explicitly use SYCL shared memory parameter in DPCtl array constructor for creation functions diff --git a/dpnp/dpnp_array.py b/dpnp/dpnp_array.py index 2b779f57b142..8f5114af1a6a 100644 --- a/dpnp/dpnp_array.py +++ b/dpnp/dpnp_array.py @@ -443,7 +443,9 @@ def astype(self, dtype, order='K', casting='unsafe', subok=True, copy=True): """ - return dpnp.astype(self, dtype, order, casting, subok, copy) + new_array = self.__new__(dpnp_array) + new_array._array_obj = dpt.astype(self._array_obj, dtype, order=order, casting=casting, copy=copy) + return new_array # 'base', # 'byteswap', diff --git a/dpnp/dpnp_iface.py b/dpnp/dpnp_iface.py index 5aa69ced4aec..f1fda6168fb3 100644 --- a/dpnp/dpnp_iface.py +++ b/dpnp/dpnp_iface.py @@ -49,6 +49,7 @@ import dpctl import dpctl.tensor as dpt +from dpnp.dpnp_array import dpnp_array from dpnp.dpnp_algo import * from dpnp.dpnp_utils import * from dpnp.fft import * @@ -137,26 +138,24 @@ def asnumpy(input, order='C'): This function works exactly the same as :obj:`numpy.asarray`. """ + if isinstance(input, dpnp_array): + return dpt.asnumpy(input.get_array()) - if isinstance(input, dpctl.tensor.usm_ndarray): - return dpctl.tensor.to_numpy(input) - - if config.__DPNP_OUTPUT_DPCTL__ and hasattr(input, "__sycl_usm_array_interface__"): - return dpctl.tensor.to_numpy(input.get_array()) + if isinstance(input, dpt.usm_ndarray): + return dpt.asnumpy(input) return numpy.asarray(input, order=order) def astype(x1, dtype, order='K', casting='unsafe', subok=True, copy=True): """Copy the array with data type casting.""" - if config.__DPNP_OUTPUT_DPCTL__ and hasattr(x1, "__sycl_usm_array_interface__"): - import dpctl.tensor as dpt - # TODO: remove check dpctl.tensor has attribute "astype" - if hasattr(dpt, "astype"): - # return dpt.astype(x1, dtype, order=order, casting=casting, copy=copy) - return dpt.astype(x1.get_array(), dtype, order=order, casting=casting, copy=copy) - - x1_desc = get_dpnp_descriptor(x1) + if isinstance(x1, dpnp_array): + return x1.astype(dtype, order=order, casting=casting, copy=copy) + + if isinstance(x1, dpt.usm_ndarray): + return dpt.astype(x1, dtype, order=order, casting=casting, copy=copy) + + x1_desc = get_dpnp_descriptor(x1, copy_when_nondefault_queue=False) if not x1_desc: pass elif order != 'K': diff --git a/dpnp/dpnp_utils/dpnp_algo_utils.pyx b/dpnp/dpnp_utils/dpnp_algo_utils.pyx index aac77164b911..13b2d2e4fdb5 100644 --- a/dpnp/dpnp_utils/dpnp_algo_utils.pyx +++ b/dpnp/dpnp_utils/dpnp_algo_utils.pyx @@ -1,7 +1,7 @@ # cython: language_level=3 # -*- coding: utf-8 -*- # ***************************************************************************** -# Copyright (c) 2016-2020, Intel Corporation +# Copyright (c) 2016-2022, Intel Corporation # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -100,10 +100,10 @@ def convert_list_args(input_list): def copy_from_origin(dst, src): """Copy origin result to output result.""" - if config.__DPNP_OUTPUT_DPCTL__ and hasattr(dst, "__sycl_usm_array_interface__"): + if hasattr(dst, "__sycl_usm_array_interface__"): if src.size: - # dst.usm_data.copy_from_host(src.reshape(-1).view("|u1")) - dpctl.tensor._copy_utils._copy_from_numpy_into(unwrap_array(dst), src) + dst_dpt = unwrap_array(dst) + dst_dpt[...] = src else: for i in range(dst.size): dst.flat[i] = src.item(i)