Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve error message for unsupported parfor args #1061

Closed
wants to merge 2 commits into from

Conversation

diptorupd
Copy link
Collaborator

@diptorupd diptorupd commented Jun 6, 2023

  • Have you provided a meaningful PR description?

Improve error message for unsupported parfor args

  • Instead of raising a NotImplementedError, we now raise a more informative numba_dpex.core.exceptions.UnsupportedKernelArgumentError if a unsupported argument type is encountered.

Reproducer:

import numpy as np
import dpnp
from numba_dpex import prange, dpjit

@dpjit
def test(a, b, scalar):
    dtype = a.dtype

    for i in prange(a.shape[0]):
        c = dtype.type(0.25) * scalar
        b[i] = c * a[i]


dtype: np.dtype = np.dtype("float")
SCALAR = dtype.type(0.5)

a = dpnp.ones(1024)
b = dpnp.zeros(1024)

test(a, b, SCALAR)

Before

Traceback (most recent call last):
  File "/home/diptorupd/Desktop/devel/numba-dpex/driver.py", line 25, in <module>
    test(a, b, SCALAR)
...
  File "/home/diptorupd/miniconda3/envs/dpex-devel/lib/python3.10/site-packages/numba/core/lowering.py", line 285, in lower_block
    self.lower_inst(inst)
  File "/home/diptorupd/miniconda3/envs/dpex-devel/lib/python3.10/site-packages/numba/parfors/parfor_lowering.py", line 51, in lower_inst
    _lower_parfor_parallel(self, inst)
  File "/home/diptorupd/miniconda3/envs/dpex-devel/lib/python3.10/site-packages/numba/parfors/parfor_lowering.py", line 60, in _lower_parfor_parallel
    return parfor.lowerer(lowerer, parfor)
  File "/home/diptorupd/Desktop/devel/numba-dpex/numba_dpex/core/parfors/parfor_lowerer.py", line 500, in _lower_parfor_as_kernel
    self._submit_parfor_kernel(
  File "/home/diptorupd/Desktop/devel/numba-dpex/numba_dpex/core/parfors/parfor_lowerer.py", line 198, in _submit_parfor_kernel
    self._build_kernel_arglist(kernel_fn, lowerer)
  File "/home/diptorupd/Desktop/devel/numba-dpex/numba_dpex/core/parfors/parfor_lowerer.py", line 172, in _build_kernel_arglist
    self.kernel_builder.build_arg(
  File "/home/diptorupd/Desktop/devel/numba-dpex/numba_dpex/core/utils/kernel_launcher.py", line 154, in build_arg
    numba_type_to_dpctl_typenum(
  File "/home/diptorupd/Desktop/devel/numba-dpex/numba_dpex/dpctl_iface/_helpers.py", line 48, in numba_type_to_dpctl_typenum
    raise NotImplementedError
NotImplementedError

After:

Traceback (most recent call last):
  File "/home/diptorupd/Desktop/devel/numba-dpex/driver.py", line 25, in <module>
    test(a, b, SCALAR)
 ...
  File "/home/diptorupd/miniconda3/envs/dpex-devel/lib/python3.10/site-packages/numba/core/lowering.py", line 187, in lower
    self.lower_normal_function(self.fndesc)
  File "/home/diptorupd/miniconda3/envs/dpex-devel/lib/python3.10/site-packages/numba/core/lowering.py", line 241, in lower_normal_function
    entry_block_tail = self.lower_function_body()
  File "/home/diptorupd/miniconda3/envs/dpex-devel/lib/python3.10/site-packages/numba/core/lowering.py", line 271, in lower_function_body
    self.lower_block(block)
  File "/home/diptorupd/miniconda3/envs/dpex-devel/lib/python3.10/site-packages/numba/core/lowering.py", line 285, in lower_block
    self.lower_inst(inst)
  File "/home/diptorupd/miniconda3/envs/dpex-devel/lib/python3.10/site-packages/numba/parfors/parfor_lowering.py", line 51, in lower_inst
    _lower_parfor_parallel(self, inst)
  File "/home/diptorupd/miniconda3/envs/dpex-devel/lib/python3.10/site-packages/numba/parfors/parfor_lowering.py", line 60, in _lower_parfor_parallel
    return parfor.lowerer(lowerer, parfor)
  File "/home/diptorupd/Desktop/devel/numba-dpex/numba_dpex/core/parfors/parfor_lowerer.py", line 500, in _lower_parfor_as_kernel
    self._submit_parfor_kernel(
  File "/home/diptorupd/Desktop/devel/numba-dpex/numba_dpex/core/parfors/parfor_lowerer.py", line 198, in _submit_parfor_kernel
    self._build_kernel_arglist(kernel_fn, lowerer)
  File "/home/diptorupd/Desktop/devel/numba-dpex/numba_dpex/core/parfors/parfor_lowerer.py", line 172, in _build_kernel_arglist
    self.kernel_builder.build_arg(
  File "/home/diptorupd/Desktop/devel/numba-dpex/numba_dpex/core/utils/kernel_launcher.py", line 154, in build_arg
    numba_type_to_dpctl_typenum(
  File "/home/diptorupd/Desktop/devel/numba-dpex/numba_dpex/dpctl_iface/_helpers.py", line 45, in numba_type_to_dpctl_typenum
    raise UnsupportedKernelArgumentError(
numba_dpex.core.exceptions.UnsupportedKernelArgumentError: Argument $dtype.12 passed to kernel __dpex_parfor_kernel_0 is of an unsupported type (<class 'numba.core.types.npytypes.DType'>). Allowed kernel arguments must be sub-types of numba.types.Number or sub-types of numba_dpex.USMNdArray
  • Have you added a test, reproducer or referred to an issue with a reproducer?
  • Have you tested your changes locally for CPU and GPU devices?
  • Have you made sure that new changes do not introduce compiler warnings?
  • If this PR is a work in progress, are you filing the PR as a draft?

@diptorupd diptorupd force-pushed the fix/dtype_parfor_args branch 2 times, most recently from f378427 to 607965f Compare June 9, 2023 20:18
    - Instead of raising a NotImplementedError, we now raise
      an numba_dpex.core.exceptions.UnsupportedKernelArgumentError
      if a unsupported argument type is encountered.
@diptorupd
Copy link
Collaborator Author

Too bitrotten

@diptorupd diptorupd closed this Mar 25, 2024
@diptorupd diptorupd deleted the fix/dtype_parfor_args branch March 25, 2024 02:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant