From 23d995dcc7ae492d37be53be7b5afd4c251f4476 Mon Sep 17 00:00:00 2001 From: Diptorup Deb Date: Wed, 3 May 2023 01:00:25 -0500 Subject: [PATCH] Remove legacy dpnp array ctor stub overloads. --- .../passes/rename_numpy_functions_pass.py | 6 - .../dpnp_iface/dpnp_array_creations_impl.py | 268 ------------------ numba_dpex/dpnp_iface/dpnp_fptr_interface.pyx | 12 - numba_dpex/dpnp_iface/stubs.py | 15 - 4 files changed, 301 deletions(-) delete mode 100644 numba_dpex/dpnp_iface/dpnp_array_creations_impl.py diff --git a/numba_dpex/core/passes/rename_numpy_functions_pass.py b/numba_dpex/core/passes/rename_numpy_functions_pass.py index 3570a9283a..5b93ca27d3 100644 --- a/numba_dpex/core/passes/rename_numpy_functions_pass.py +++ b/numba_dpex/core/passes/rename_numpy_functions_pass.py @@ -76,11 +76,6 @@ "nansum": (["numpy"], "nansum"), "prod": (["numpy"], "prod"), "sum": (["numpy"], "sum"), - # array creations - "full": (["numpy"], "full"), - "ones_like": (["numpy"], "ones_like"), - "zeros_like": (["numpy"], "zeros_like"), - "full_like": (["numpy"], "full_like"), # array ops "copy": (["numpy"], "copy"), "cumsum": (["numpy"], "cumsum"), @@ -205,7 +200,6 @@ class RewriteOverloadedNumPyFunctionsPass(FunctionPass): def __init__(self): FunctionPass.__init__(self) - import numba_dpex.dpnp_iface.dpnp_array_creations_impl import numba_dpex.dpnp_iface.dpnp_array_ops_impl import numba_dpex.dpnp_iface.dpnp_indexing import numba_dpex.dpnp_iface.dpnp_linalgimpl diff --git a/numba_dpex/dpnp_iface/dpnp_array_creations_impl.py b/numba_dpex/dpnp_iface/dpnp_array_creations_impl.py deleted file mode 100644 index a1b7ac4f0b..0000000000 --- a/numba_dpex/dpnp_iface/dpnp_array_creations_impl.py +++ /dev/null @@ -1,268 +0,0 @@ -# SPDX-FileCopyrightText: 2020 - 2023 Intel Corporation -# -# SPDX-License-Identifier: Apache-2.0 - -import numpy as np -from numba import types -from numba.core.extending import overload, register_jitable -from numba.core.typing import signature - -import numba_dpex -import numba_dpex.dpctl_iface as dpctl_functions -import numba_dpex.dpnp_iface as dpnp_lowering -import numba_dpex.dpnp_iface.dpnp_stubs_impl as dpnp_ext - -from . import stubs - - -@register_jitable -def common_impl(a, b, out, dpnp_func, PRINT_DEBUG): - if a.size == 0: - raise ValueError("Passed Empty array") - - sycl_queue = dpctl_functions.get_current_queue() - - b_usm = dpctl_functions.malloc_shared(b.size * b.itemsize, sycl_queue) - event = dpctl_functions.queue_memcpy( - sycl_queue, b_usm, b.ctypes, b.size * b.itemsize - ) - dpctl_functions.event_wait(event) - dpctl_functions.event_delete(event) - - out_usm = dpctl_functions.malloc_shared(out.size * out.itemsize, sycl_queue) - - dpnp_func(out_usm, b_usm, a.size) - - event = dpctl_functions.queue_memcpy( - sycl_queue, out.ctypes, out_usm, out.size * out.itemsize - ) - dpctl_functions.event_wait(event) - dpctl_functions.event_delete(event) - - dpctl_functions.free_with_queue(b_usm, sycl_queue) - dpctl_functions.free_with_queue(out_usm, sycl_queue) - - dpnp_ext._dummy_liveness_func([a.size, out.size]) - - if PRINT_DEBUG: - print("dpnp implementation") - - -@register_jitable -def common_shape_impl(a, out, dpnp_func, PRINT_DEBUG): - if a.size == 0: - raise ValueError("Passed Empty array") - - sycl_queue = dpctl_functions.get_current_queue() - - a_usm = dpctl_functions.malloc_shared(a.size * a.itemsize, sycl_queue) - event = dpctl_functions.queue_memcpy( - sycl_queue, a_usm, a.ctypes, a.size * a.itemsize - ) - dpctl_functions.event_wait(event) - dpctl_functions.event_delete(event) - - out_usm = dpctl_functions.malloc_shared(out.size * out.itemsize, sycl_queue) - - dpnp_func(a_usm, out_usm, a.shapeptr, a.ndim) - - event = dpctl_functions.queue_memcpy( - sycl_queue, out.ctypes, out_usm, out.size * out.itemsize - ) - dpctl_functions.event_wait(event) - dpctl_functions.event_delete(event) - - dpctl_functions.free_with_queue(a_usm, sycl_queue) - dpctl_functions.free_with_queue(out_usm, sycl_queue) - - dpnp_ext._dummy_liveness_func([a.size, out.size]) - - if PRINT_DEBUG: - print("dpnp implementation") - - -@overload(stubs.dpnp.zeros_like) -def dpnp_zeros_like_impl(a, dtype=None): - name = "zeros_like" - dpnp_lowering.ensure_dpnp(name) - - ret_type = types.void - """ - dpnp source: - https://github.com/IntelPython/dpnp/blob/0.5.1/dpnp/backend/kernels/dpnp_krnl_common.cpp#L224 - - Function declaration: - void dpnp_initval_c(void* result1, void* value, size_t size) - - """ - res_dtype = dtype - if dtype == types.none or dtype is None: - res_dtype = a.dtype - name_dtype = res_dtype.name - else: - name_dtype = res_dtype.dtype.name - - sig = signature(ret_type, types.voidptr, types.voidptr, types.intp) - dpnp_func = dpnp_ext.dpnp_func("dpnp_" + name, [name_dtype, "NONE"], sig) - - PRINT_DEBUG = dpnp_lowering.DEBUG - - def dpnp_impl(a, dtype=None): - b = np.zeros(1, dtype=res_dtype) - out = np.zeros(a.shape, dtype=res_dtype) - common_impl(a, b, out, dpnp_func, PRINT_DEBUG) - return out - - return dpnp_impl - - -@overload(stubs.dpnp.ones_like) -def dpnp_ones_like_impl(a, dtype=None): - name = "ones_like" - dpnp_lowering.ensure_dpnp(name) - - ret_type = types.void - """ - dpnp source: - https://github.com/IntelPython/dpnp/blob/0.5.1/dpnp/backend/kernels/dpnp_krnl_common.cpp#L224 - - Function declaration: - void dpnp_initval_c(void* result1, void* value, size_t size) - - """ - res_dtype = dtype - if dtype == types.none or dtype is None: - res_dtype = a.dtype - name_dtype = res_dtype.name - else: - name_dtype = res_dtype.dtype.name - - sig = signature(ret_type, types.voidptr, types.voidptr, types.intp) - dpnp_func = dpnp_ext.dpnp_func("dpnp_" + name, [name_dtype, "NONE"], sig) - - PRINT_DEBUG = dpnp_lowering.DEBUG - - def dpnp_impl(a, dtype=None): - b = np.ones(1, dtype=res_dtype) - out = np.ones(a.shape, dtype=res_dtype) - common_impl(a, b, out, dpnp_func, PRINT_DEBUG) - return out - - return dpnp_impl - - -@overload(stubs.dpnp.full_like) -def dpnp_full_like_impl(a, b): - name = "full_like" - dpnp_lowering.ensure_dpnp(name) - - ret_type = types.void - """ - dpnp source: - https://github.com/IntelPython/dpnp/blob/0.5.1/dpnp/backend/kernels/dpnp_krnl_common.cpp#L224 - - Function declaration: - void dpnp_initval_c(void* result1, void* value, size_t size) - - """ - sig = signature(ret_type, types.voidptr, types.voidptr, types.intp) - dpnp_func = dpnp_ext.dpnp_func("dpnp_" + name, [b.dtype.name, "NONE"], sig) - - res_dtype = b.dtype - PRINT_DEBUG = dpnp_lowering.DEBUG - - def dpnp_impl(a, b): - out = np.ones(a.shape, dtype=res_dtype) - common_impl(a, b, out, dpnp_func, PRINT_DEBUG) - return out - - return dpnp_impl - - -# TODO: This implementation is incorrect -@overload(stubs.dpnp.full) -def dpnp_full_impl(a, b): - name = "full" - dpnp_lowering.ensure_dpnp(name) - - ret_type = types.void - """ - dpnp source: - https://github.com/IntelPython/dpnp/blob/0.5.1/dpnp/backend/kernels/dpnp_krnl_arraycreation.cpp#L70 - - Function declaration: - void dpnp_full_c(void* array_in, void* result, const size_t size) - - """ - sig = signature(ret_type, types.voidptr, types.voidptr, types.intp) - dpnp_func = dpnp_ext.dpnp_func("dpnp_" + name, [b.dtype.name, "NONE"], sig) - - res_dtype = b.dtype - PRINT_DEBUG = dpnp_lowering.DEBUG - - def dpnp_impl(a, b): - if a.size == 0: - raise ValueError("Passed Empty array") - - sycl_queue = dpctl_functions.get_current_queue() - - b_usm = dpctl_functions.malloc_shared(b.size * b.itemsize, sycl_queue) - event = dpctl_functions.queue_memcpy( - sycl_queue, b_usm, b.ctypes, b.size * b.itemsize - ) - dpctl_functions.event_wait(event) - dpctl_functions.event_delete(event) - - out = np.arange(0, a.size, 1, res_dtype) - out_usm = dpctl_functions.malloc_shared( - out.size * out.itemsize, sycl_queue - ) - - dpnp_func(b_usm, out_usm, a.size) - - event = dpctl_functions.queue_memcpy( - sycl_queue, out.ctypes, out_usm, out.size * out.itemsize - ) - dpctl_functions.event_wait(event) - dpctl_functions.event_delete(event) - - dpctl_functions.free_with_queue(b_usm, sycl_queue) - dpctl_functions.free_with_queue(out_usm, sycl_queue) - - dpnp_ext._dummy_liveness_func([a.size, out.size]) - - if PRINT_DEBUG: - print("dpnp implementation") - return out - - return dpnp_impl - - -@overload(stubs.dpnp.trace) -def dpnp_trace_impl(a): - name = "trace" - dpnp_lowering.ensure_dpnp(name) - - ret_type = types.void - """ - dpnp source: - https://github.com/IntelPython/dpnp/blob/0.6.2/dpnp/backend/kernels/dpnp_krnl_arraycreation.cpp#L218 - - Function declaration: - void dpnp_trace_c(const void* array1_in, void* result1, const size_t* shape_, const size_t ndim) - - """ - sig = signature( - ret_type, types.voidptr, types.voidptr, types.voidptr, types.intp - ) - dpnp_func = dpnp_ext.dpnp_func("dpnp_" + name, [a.dtype.name, "NONE"], sig) - - PRINT_DEBUG = dpnp_lowering.DEBUG - - def dpnp_impl(a): - diag_arr = numba_dpex.dpnp.diagonal(a, 0) - out = np.zeros(diag_arr.shape[:-1], dtype=a.dtype) - common_shape_impl(diag_arr, out, dpnp_func, PRINT_DEBUG) - return out - - return dpnp_impl diff --git a/numba_dpex/dpnp_iface/dpnp_fptr_interface.pyx b/numba_dpex/dpnp_iface/dpnp_fptr_interface.pyx index 07de5603e1..541a8da5ff 100644 --- a/numba_dpex/dpnp_iface/dpnp_fptr_interface.pyx +++ b/numba_dpex/dpnp_iface/dpnp_fptr_interface.pyx @@ -53,7 +53,6 @@ cdef extern from "dpnp_iface_fptr.hpp" namespace "DPNPFuncName": # need this na DPNP_FN_FLOOR DPNP_FN_FLOOR_DIVIDE DPNP_FN_FMOD - DPNP_FN_FULL DPNP_FN_HYPOT DPNP_FN_INITVAL DPNP_FN_INVERT @@ -115,7 +114,6 @@ cdef extern from "dpnp_iface_fptr.hpp" namespace "DPNPFuncName": # need this na DPNP_FN_TAKE DPNP_FN_TAN DPNP_FN_TANH - DPNP_FN_TRACE DPNP_FN_TRANSPOSE DPNP_FN_TRUNC DPNP_FN_VAR @@ -174,10 +172,6 @@ cdef DPNPFuncName get_DPNPFuncName_from_str(name): return DPNPFuncName.DPNP_FN_EIG if name == "dpnp_exponential": return DPNPFuncName.DPNP_FN_RNG_EXPONENTIAL - if name == "dpnp_full_like": - return DPNPFuncName.DPNP_FN_INITVAL - if name == "dpnp_full": - return DPNPFuncName.DPNP_FN_FULL if name == "dpnp_gamma": return DPNPFuncName.DPNP_FN_RNG_GAMMA if name == "dpnp_geometric": @@ -210,8 +204,6 @@ cdef DPNPFuncName get_DPNPFuncName_from_str(name): return DPNPFuncName.DPNP_FN_RNG_NEGATIVE_BINOMIAL if name == "dpnp_normal": return DPNPFuncName.DPNP_FN_RNG_NORMAL - if name == "dpnp_ones_like": - return DPNPFuncName.DPNP_FN_INITVAL if name == "dpnp_partition": return DPNPFuncName.DPNP_FN_PARTITION if name == "dpnp_poisson": @@ -236,16 +228,12 @@ cdef DPNPFuncName get_DPNPFuncName_from_str(name): return DPNPFuncName.DPNP_FN_SUM if name == "dpnp_take": return DPNPFuncName.DPNP_FN_TAKE - if name == "dpnp_trace": - return DPNPFuncName.DPNP_FN_TRACE if name == "dpnp_uniform": return DPNPFuncName.DPNP_FN_RNG_UNIFORM if name == "dpnp_vdot": return DPNPFuncName.DPNP_FN_DOT if name == "dpnp_weibull": return DPNPFuncName.DPNP_FN_RNG_WEIBULL - if name == "dpnp_zeros_like": - return DPNPFuncName.DPNP_FN_INITVAL raise ValueError("Unknown dpnp function requested: " + name.split("_")[1]) diff --git a/numba_dpex/dpnp_iface/stubs.py b/numba_dpex/dpnp_iface/stubs.py index 204e3ae0d3..0c7708dca6 100644 --- a/numba_dpex/dpnp_iface/stubs.py +++ b/numba_dpex/dpnp_iface/stubs.py @@ -70,12 +70,6 @@ class eigvals(Stub): class exponential(Stub): pass - class full_like(Stub): - pass - - class full(Stub): - pass - class gamma(Stub): pass @@ -136,9 +130,6 @@ class negative_binomial(Stub): class normal(Stub): pass - class ones_like(Stub): - pass - class partition(Stub): pass @@ -196,9 +187,6 @@ class sum(Stub): class take(Stub): pass - class trace(Stub): - pass - class uniform(Stub): pass @@ -207,6 +195,3 @@ class vdot(Stub): class weibull(Stub): pass - - class zeros_like(Stub): - pass