Skip to content

Commit

Permalink
Merge 3ebb299 into 0b39be7
Browse files Browse the repository at this point in the history
  • Loading branch information
diptorupd committed Nov 22, 2021
2 parents 0b39be7 + 3ebb299 commit 9aabe54
Show file tree
Hide file tree
Showing 22 changed files with 59 additions and 59 deletions.
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ __pycache__/
docs/source/developer/autogen*

# Ignore generated cpp files
numba_dppy/dpnp_glue/*.cpp
numba_dppy/dpnp_glue/*.h
numba_dppy/dpnp_iface/*.cpp
numba_dppy/dpnp_iface/*.h

# Ignore coverage results
.coverage
Expand Down
28 changes: 14 additions & 14 deletions docs/developer_guides/dpnp_integration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Integration with `DPNP backend library`_
Repository map
``````````````

- Code for integration is mostly resides in :file:`numba_dppy/dpnp_glue`.
- Code for integration is mostly resides in :file:`numba_dppy/dpnp_iface`.
- Tests resides in :file:`numba_dppy/tests/njit_tests/dpnp`.
- Helper pass resides in :file:`numba_dppy/rename_numpy_functions_pass.py`.

Expand All @@ -61,15 +61,15 @@ It rewrites call for `NumPy` function in following way:

.. code-block:: python
# numba_dppy/dpnp_glue/stubs.py - imported in numba_dppy.__init__.py
# numba_dppy/dpnp_iface/stubs.py - imported in numba_dppy.__init__.py
class dpnp(Stub):
class sum(Stub): # stub function
pass
For the stub function call to be lowered with `Numba` compiler pipeline there
is overload in :file:`numba_dppy/dpnp_glue/dpnp_transcendentalsimpl.py`:
is overload in :file:`numba_dppy/dpnp_iface/dpnp_transcendentalsimpl.py`:

.. code-block:: python
Expand All @@ -90,10 +90,10 @@ For more details about testing the integration see :ref:`dpnp-integration-tests`
Places to update
````````````````

1. :file:`numba_dppy/dpnp_glue/stubs.py`: Add new class to :class:`stubs.dpnp` class.
2. :file:`numba_dppy/dpnp_glue/dpnp_fptr_interface.pyx`: Update items in :class:`DPNPFuncName` enum.
3. :file:`numba_dppy/dpnp_glue/dpnp_fptr_interface.pyx`: Update if statements in :func:`get_DPNPFuncName_from_str` function.
4. Add :samp:`@overload(stubs.dpnp.{YOUR_FUNCTION})` in one of the :file:`numba_dppy/dpnp_glue/{*}.py` modules or create new.
1. :file:`numba_dppy/dpnp_iface/stubs.py`: Add new class to :class:`stubs.dpnp` class.
2. :file:`numba_dppy/dpnp_iface/dpnp_fptr_interface.pyx`: Update items in :class:`DPNPFuncName` enum.
3. :file:`numba_dppy/dpnp_iface/dpnp_fptr_interface.pyx`: Update if statements in :func:`get_DPNPFuncName_from_str` function.
4. Add :samp:`@overload(stubs.dpnp.{YOUR_FUNCTION})` in one of the :file:`numba_dppy/dpnp_iface/{*}.py` modules or create new.
5. :file:`numba_dppy/rename_numpy_functions_pass.py`: Update items in :obj:`rewrite_function_name_map` dict.
6. :file:`numba_dppy/rename_numpy_functions_pass.py`: Update imported modules in :meth:`DPPYRewriteOverloadedNumPyFunctions.__init__`.
7. Add test in one of the :file:`numba_dppy/tests/njit_tests/dpnp` test modules or create new.
Expand All @@ -103,14 +103,14 @@ Places to update
Writing overload for stub function
``````````````````````````````````

Overloads for stub functions resides in :file:`numba_dppy/dpnp_glue/{*}.py` modules.
Overloads for stub functions resides in :file:`numba_dppy/dpnp_iface/{*}.py` modules.
If you need create new module try to name it corresponding to `DPNP` naming.
I.e. :file:`dpnp/backend/kernels/dpnp_krnl_indexing.cpp` -> :file:`numba_dppy/dpnp_glue/dpnp_indexing.py`.
I.e. :file:`dpnp/backend/kernels/dpnp_krnl_indexing.cpp` -> :file:`numba_dppy/dpnp_iface/dpnp_indexing.py`.

.. code-block:: python
from numba.core.extending import overload
import numba_dppy.dpnp_glue as dpnp_lowering
import numba_dppy.dpnp_iface as dpnp_lowering
...
@overload(stubs.dpnp.sum)
Expand Down Expand Up @@ -160,7 +160,7 @@ For mapping between `C` types and `Numba` types see :ref:`dpnp-integration-types

.. code-block:: python
import numba_dppy.dpnp_glue.dpnpimpl as dpnp_ext
import numba_dppy.dpnp_iface.dpnpimpl as dpnp_ext
...
# continue of dpnp_sum_impl()
dpnp_func = dpnp_ext.dpnp_func("dpnp_sum", [a.dtype.name, "NONE"], sig)
Expand All @@ -177,7 +177,7 @@ It receives:

.. code-block:: python
import numba_dppy.dpnp_glue.dpnpimpl as dpnp_ext
import numba_dppy.dpnp_iface.dpnpimpl as dpnp_ext
...
# continue of dpnp_sum_impl()
PRINT_DEBUG = dpnp_lowering.DEBUG
Expand Down Expand Up @@ -211,7 +211,7 @@ creating the new one.
from numba.core.extending import register_jitable
from numba_dppy import dpctl_functions
import numba_dppy.dpnp_glue.dpnpimpl as dpnp_ext
import numba_dppy.dpnp_iface.dpnpimpl as dpnp_ext
...
@register_jitable
Expand Down Expand Up @@ -329,7 +329,7 @@ Troubleshooting
```````````````

1. Do not forget build `numba-dppy` with current installed version of `DPNP`.
There is headers dependency in `Cython` files (i.e. :file:`numba_dppy/dpnp_glue/dpnp_fptr_interface.pyx`).
There is headers dependency in `Cython` files (i.e. :file:`numba_dppy/dpnp_iface/dpnp_fptr_interface.pyx`).
2. Do not forget add array to :samp:`dpnp_ext._dummy_liveness_func([{YOUR_ARRAY}.size])`.
Dead code elimination could delete temporary variables before they are used for `DPNP` function call.
As a result wrong data could be passed to `DPNP` function.
2 changes: 1 addition & 1 deletion numba_dppy/device_init.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
We are importing dpnp stub module to make Numba recognize the
module when we rename Numpy functions.
"""
from .dpnp_glue.stubs import dpnp
from .dpnp_iface.stubs import dpnp

DEFAULT_LOCAL_SIZE = []

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
def ensure_dpnp(name):
try:
# import dpnp
from . import dpnp_fptr_interface as dpnp_glue
from . import dpnp_fptr_interface as dpnp_iface
except ImportError:
raise ImportError("dpnp is needed to call np.%s" % name)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@

import numba_dppy
import numba_dppy.dpctl_iface as dpctl_functions
import numba_dppy.dpnp_glue as dpnp_lowering
import numba_dppy.dpnp_glue.dpnpimpl as dpnp_ext
import numba_dppy.dpnp_iface as dpnp_lowering
import numba_dppy.dpnp_iface.dpnpimpl as dpnp_ext

from . import stubs

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@

import numba_dppy
import numba_dppy.dpctl_iface as dpctl_functions
import numba_dppy.dpnp_glue as dpnp_lowering
import numba_dppy.dpnp_glue.dpnpimpl as dpnp_ext
import numba_dppy.dpnp_iface as dpnp_lowering
import numba_dppy.dpnp_iface.dpnpimpl as dpnp_ext

from . import stubs

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
from numba.core.typing import signature

import numba_dppy.dpctl_iface as dpctl_functions
import numba_dppy.dpnp_glue as dpnp_lowering
import numba_dppy.dpnp_glue.dpnpimpl as dpnp_ext
import numba_dppy.dpnp_iface as dpnp_lowering
import numba_dppy.dpnp_iface.dpnpimpl as dpnp_ext

from . import stubs

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@

import numba_dppy
import numba_dppy.dpctl_iface as dpctl_functions
import numba_dppy.dpnp_glue as dpnp_lowering
import numba_dppy.dpnp_glue.dpnpimpl as dpnp_ext
import numba_dppy.dpnp_iface as dpnp_lowering
import numba_dppy.dpnp_iface.dpnpimpl as dpnp_ext

from . import stubs

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
from numba.core.typing import signature

import numba_dppy.dpctl_iface as dpctl_functions
import numba_dppy.dpnp_glue as dpnp_lowering
import numba_dppy.dpnp_glue.dpnpimpl as dpnp_ext
import numba_dppy.dpnp_iface as dpnp_lowering
import numba_dppy.dpnp_iface.dpnpimpl as dpnp_ext

from . import stubs

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
from numba.core.typing import signature

import numba_dppy.dpctl_iface as dpctl_functions
import numba_dppy.dpnp_glue as dpnp_lowering
import numba_dppy.dpnp_glue.dpnpimpl as dpnp_ext
import numba_dppy.dpnp_iface as dpnp_lowering
import numba_dppy.dpnp_iface.dpnpimpl as dpnp_ext

from . import stubs

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
from numba.core.typing import signature

import numba_dppy.dpctl_iface as dpctl_functions
import numba_dppy.dpnp_glue as dpnp_lowering
import numba_dppy.dpnp_glue.dpnpimpl as dpnp_ext
import numba_dppy.dpnp_iface as dpnp_lowering
import numba_dppy.dpnp_iface.dpnpimpl as dpnp_ext

from . import stubs

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@

import numba_dppy
import numba_dppy.dpctl_iface as dpctl_functions
import numba_dppy.dpnp_glue as dpnp_lowering
import numba_dppy.dpnp_glue.dpnpimpl as dpnp_ext
import numba_dppy.dpnp_iface as dpnp_lowering
import numba_dppy.dpnp_iface.dpnpimpl as dpnp_ext

from . import stubs

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
from numba.core.typing import signature

import numba_dppy.dpctl_iface as dpctl_functions
import numba_dppy.dpnp_glue as dpnp_lowering
import numba_dppy.dpnp_glue.dpnpimpl as dpnp_ext
import numba_dppy.dpnp_iface as dpnp_lowering
import numba_dppy.dpnp_iface.dpnpimpl as dpnp_ext

from . import stubs

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@

import numba_dppy
import numba_dppy.dpctl_iface as dpctl_functions
import numba_dppy.dpnp_glue as dpnp_lowering
import numba_dppy.dpnp_glue.dpnpimpl as dpnp_ext
import numba_dppy.dpnp_iface as dpnp_lowering
import numba_dppy.dpnp_iface.dpnpimpl as dpnp_ext

from . import stubs

Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@


def get_dpnp_fptr(fn_name, type_names):
from . import dpnp_fptr_interface as dpnp_glue
from . import dpnp_fptr_interface as dpnp_iface

f_ptr = dpnp_glue.get_dpnp_fn_ptr(fn_name, type_names)
f_ptr = dpnp_iface.get_dpnp_fn_ptr(fn_name, type_names)
return f_ptr


Expand Down
File renamed without changes.
24 changes: 12 additions & 12 deletions numba_dppy/rename_numpy_functions_pass.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,18 +215,18 @@ class DPPYRewriteOverloadedNumPyFunctions(FunctionPass):
def __init__(self):
FunctionPass.__init__(self)

import numba_dppy.dpnp_glue.dpnp_array_creations_impl
import numba_dppy.dpnp_glue.dpnp_array_ops_impl
import numba_dppy.dpnp_glue.dpnp_indexing
import numba_dppy.dpnp_glue.dpnp_linalgimpl
import numba_dppy.dpnp_glue.dpnp_logic
import numba_dppy.dpnp_glue.dpnp_manipulation
import numba_dppy.dpnp_glue.dpnp_randomimpl
import numba_dppy.dpnp_glue.dpnp_sort_search_countimpl
import numba_dppy.dpnp_glue.dpnp_statisticsimpl
import numba_dppy.dpnp_glue.dpnp_transcendentalsimpl
import numba_dppy.dpnp_glue.dpnpdecl
import numba_dppy.dpnp_glue.dpnpimpl
import numba_dppy.dpnp_iface.dpnp_array_creations_impl
import numba_dppy.dpnp_iface.dpnp_array_ops_impl
import numba_dppy.dpnp_iface.dpnp_indexing
import numba_dppy.dpnp_iface.dpnp_linalgimpl
import numba_dppy.dpnp_iface.dpnp_logic
import numba_dppy.dpnp_iface.dpnp_manipulation
import numba_dppy.dpnp_iface.dpnp_randomimpl
import numba_dppy.dpnp_iface.dpnp_sort_search_countimpl
import numba_dppy.dpnp_iface.dpnp_statisticsimpl
import numba_dppy.dpnp_iface.dpnp_transcendentalsimpl
import numba_dppy.dpnp_iface.dpnpdecl
import numba_dppy.dpnp_iface.dpnpimpl

def run_pass(self, state):
rewrite_function_name_pass = RewriteNumPyOverloadedFunctions(
Expand Down
4 changes: 2 additions & 2 deletions numba_dppy/tests/_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ def expectedFailureIf(condition):

def ensure_dpnp():
try:
from numba_dppy.dpnp_glue import dpnp_fptr_interface as dpnp_glue
from numba_dppy.dpnp_iface import dpnp_fptr_interface as dpnp_iface

return True
except:
Expand All @@ -125,7 +125,7 @@ def ensure_dpnp():

@contextlib.contextmanager
def dpnp_debug():
import numba_dppy.dpnp_glue as dpnp_lowering
import numba_dppy.dpnp_iface as dpnp_lowering

old, dpnp_lowering.DEBUG = dpnp_lowering.DEBUG, 1
yield
Expand Down
2 changes: 1 addition & 1 deletion numba_dppy/tests/njit_tests/dpnp/test_numpy_rng.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ def test_three_arg_fn(filter_str, three_arg_fn, three_arg_size, capfd):
elif op_name == "multivariate_normal":
pytest.skip(
"No implementation of function Function(<class "
"'numba_dppy.dpnp_glue.stubs.dpnp.multivariate_normal'>) found for signature"
"'numba_dppy.dpnp_iface.stubs.dpnp.multivariate_normal'>) found for signature"
)
elif op_name == "negative_binomial":
pytest.skip("DPNP RNG Error: dpnp_rng_negative_binomial_c() failed.")
Expand Down
8 changes: 4 additions & 4 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,16 +64,16 @@ def get_ext_modules():
if dpnp_present:
dpnp_lib_path = []
dpnp_lib_path += [os.path.dirname(dpnp.__file__)]
ext_dpnp_glue = Extension(
name="numba_dppy.dpnp_glue.dpnp_fptr_interface",
sources=["numba_dppy/dpnp_glue/dpnp_fptr_interface.pyx"],
ext_dpnp_iface = Extension(
name="numba_dppy.dpnp_iface.dpnp_fptr_interface",
sources=["numba_dppy/dpnp_iface/dpnp_fptr_interface.pyx"],
include_dirs=[dpnp.get_include()],
libraries=["dpnp_backend_c"],
library_dirs=dpnp_lib_path,
runtime_library_dirs=dpnp_lib_path,
language="c++",
)
ext_modules += [ext_dpnp_glue]
ext_modules += [ext_dpnp_iface]

if dpnp_present:
return cythonize(ext_modules)
Expand Down

0 comments on commit 9aabe54

Please sign in to comment.