Skip to content

Commit 9c0900a

Browse files
author
khaled
committed
Fixed dpnp.empty() call problem in parfor
1 parent 874666c commit 9c0900a

File tree

2 files changed

+58
-57
lines changed

2 files changed

+58
-57
lines changed

numba_dpex/core/types/usm_ndarray_type.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@
77

88
import dpctl
99
import dpctl.tensor
10+
from numba import types
1011
from numba.core.typeconv import Conversion
11-
from numba.core.typeinfer import CallConstraint
1212
from numba.core.types.npytypes import Array
1313
from numba.np.numpy_support import from_dtype
1414

15-
from numba_dpex.core.types.dpctl_types import DpctlSyclQueue
1615
from numba_dpex.utils import address_space
1716

1817

@@ -32,7 +31,7 @@ def __init__(
3231
aligned=True,
3332
addrspace=address_space.GLOBAL,
3433
):
35-
if queue is not None and device is not None:
34+
if queue and not isinstance(queue, types.misc.Omitted) and device:
3635
raise TypeError(
3736
"numba_dpex.core.types.usm_ndarray_type.USMNdArray.__init__(): "
3837
"`device` and `sycl_queue` are exclusive keywords, i.e. use one or other."
@@ -41,7 +40,7 @@ def __init__(
4140
self.usm_type = usm_type
4241
self.addrspace = addrspace
4342

44-
if queue is not None:
43+
if queue and not isinstance(queue, types.misc.Omitted):
4544
if not isinstance(queue, dpctl.SyclQueue):
4645
raise TypeError(
4746
"numba_dpex.core.types.usm_ndarray_type.USMNdArray.__init__(): "

numba_dpex/dpnp_iface/arrayobj.py

Lines changed: 55 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ def build_dpnp_ndarray(
177177
represent dpctl.tensor.usm_ndarray.
178178
"""
179179

180-
if sycl_queue is not None and device is not None:
180+
if sycl_queue and not isinstance(sycl_queue, types.misc.Omitted) and device:
181181
raise errors.TypingError(
182182
"numba_dpex.dpnp_iface.arrayobj.build_dpnp_ndarray(): "
183183
"`device` and `sycl_queue` are exclusive keywords, "
@@ -274,7 +274,7 @@ def ol_dpnp_empty(
274274
function: Local function `impl_dpnp_empty()`.
275275
"""
276276

277-
if sycl_queue is not None and device is not None:
277+
if sycl_queue and not isinstance(sycl_queue, types.misc.Omitted) and device:
278278
raise errors.TypingError(
279279
"numba_dpex.dpnp_iface.arrayobj.ol_dpnp_empty(): "
280280
"`device` and `sycl_queue` are exclusive keywords, "
@@ -284,12 +284,12 @@ def ol_dpnp_empty(
284284
_ndim = _ty_parse_shape(shape)
285285
_dtype = _parse_dtype(dtype)
286286
_layout = _parse_layout(order)
287-
_usm_type = _parse_usm_type(usm_type) if usm_type is not None else "device"
288-
_device = (
289-
_parse_device_filter_string(device) if device is not None else None
290-
)
287+
_usm_type = _parse_usm_type(usm_type) if usm_type else "device"
288+
_device = _parse_device_filter_string(device) if device else None
291289
_sycl_queue = (
292-
sycl_queue.sycl_queue if sycl_queue is not None else sycl_queue
290+
sycl_queue.sycl_queue
291+
if sycl_queue and not isinstance(sycl_queue, types.misc.Omitted)
292+
else sycl_queue
293293
)
294294

295295
if _ndim:
@@ -390,7 +390,7 @@ def ol_dpnp_zeros(
390390
function: Local function `impl_dpnp_zeros()`.
391391
"""
392392

393-
if sycl_queue is not None and device is not None:
393+
if sycl_queue and not isinstance(sycl_queue, types.misc.Omitted) and device:
394394
raise errors.TypingError(
395395
"numba_dpex.dpnp_iface.arrayobj.ol_dpnp_empty(): "
396396
"`device` and `sycl_queue` are exclusive keywords, "
@@ -400,12 +400,12 @@ def ol_dpnp_zeros(
400400
_ndim = _ty_parse_shape(shape)
401401
_layout = _parse_layout(order)
402402
_dtype = _parse_dtype(dtype)
403-
_usm_type = _parse_usm_type(usm_type) if usm_type is not None else "device"
404-
_device = (
405-
_parse_device_filter_string(device) if device is not None else None
406-
)
403+
_usm_type = _parse_usm_type(usm_type) if usm_type else "device"
404+
_device = _parse_device_filter_string(device) if device else None
407405
_sycl_queue = (
408-
sycl_queue.sycl_queue if sycl_queue is not None else sycl_queue
406+
sycl_queue.sycl_queue
407+
if sycl_queue and not isinstance(sycl_queue, types.misc.Omitted)
408+
else sycl_queue
409409
)
410410

411411
if _ndim:
@@ -506,7 +506,7 @@ def ol_dpnp_ones(
506506
function: Local function `impl_dpnp_ones()`.
507507
"""
508508

509-
if sycl_queue is not None and device is not None:
509+
if sycl_queue and not isinstance(sycl_queue, types.misc.Omitted) and device:
510510
raise errors.TypingError(
511511
"numba_dpex.dpnp_iface.arrayobj.ol_dpnp_empty(): "
512512
"`device` and `sycl_queue` are exclusive keywords, "
@@ -516,12 +516,12 @@ def ol_dpnp_ones(
516516
_ndim = _ty_parse_shape(shape)
517517
_dtype = _parse_dtype(dtype)
518518
_layout = _parse_layout(order)
519-
_usm_type = _parse_usm_type(usm_type) if usm_type is not None else "device"
520-
_device = (
521-
_parse_device_filter_string(device) if device is not None else None
522-
)
519+
_usm_type = _parse_usm_type(usm_type) if usm_type else "device"
520+
_device = _parse_device_filter_string(device) if device else None
523521
_sycl_queue = (
524-
sycl_queue.sycl_queue if sycl_queue is not None else sycl_queue
522+
sycl_queue.sycl_queue
523+
if sycl_queue and not isinstance(sycl_queue, types.misc.Omitted)
524+
else sycl_queue
525525
)
526526

527527
if _ndim:
@@ -626,7 +626,7 @@ def ol_dpnp_full(
626626
function: Local function `impl_dpnp_full()`.
627627
"""
628628

629-
if sycl_queue is not None and device is not None:
629+
if sycl_queue and not isinstance(sycl_queue, types.misc.Omitted) and device:
630630
raise errors.TypingError(
631631
"numba_dpex.dpnp_iface.arrayobj.ol_dpnp_empty(): "
632632
"`device` and `sycl_queue` are exclusive keywords, "
@@ -636,12 +636,12 @@ def ol_dpnp_full(
636636
_ndim = _ty_parse_shape(shape)
637637
_dtype = _parse_dtype(dtype)
638638
_layout = _parse_layout(order)
639-
_usm_type = _parse_usm_type(usm_type) if usm_type is not None else "device"
640-
_device = (
641-
_parse_device_filter_string(device) if device is not None else None
642-
)
639+
_usm_type = _parse_usm_type(usm_type) if usm_type else "device"
640+
_device = _parse_device_filter_string(device) if device else None
643641
_sycl_queue = (
644-
sycl_queue.sycl_queue if sycl_queue is not None else sycl_queue
642+
sycl_queue.sycl_queue
643+
if sycl_queue and not isinstance(sycl_queue, types.misc.Omitted)
644+
else sycl_queue
645645
)
646646

647647
if _ndim:
@@ -746,7 +746,8 @@ def ol_dpnp_empty_like(
746746
Returns:
747747
function: Local function `impl_dpnp_empty_like()`.
748748
"""
749-
if sycl_queue is not None and device is not None:
749+
750+
if sycl_queue and not isinstance(sycl_queue, types.misc.Omitted) and device:
750751
raise errors.TypingError(
751752
"numba_dpex.dpnp_iface.arrayobj.ol_dpnp_empty(): "
752753
"`device` and `sycl_queue` are exclusive keywords, "
@@ -759,15 +760,15 @@ def ol_dpnp_empty_like(
759760
+ "inside overloaded dpnp.empty_like() function."
760761
)
761762

762-
_ndim = x1.ndim if hasattr(x1, "ndim") and x1.ndim is not None else 0
763+
_ndim = x1.ndim if hasattr(x1, "ndim") and x1.ndim else 0
763764
_dtype = _parse_dtype(dtype, data=x1)
764765
_order = x1.layout if order is None else order
765-
_usm_type = _parse_usm_type(usm_type) if usm_type is not None else "device"
766-
_device = (
767-
_parse_device_filter_string(device) if device is not None else None
768-
)
766+
_usm_type = _parse_usm_type(usm_type) if usm_type else "device"
767+
_device = _parse_device_filter_string(device) if device else None
769768
_sycl_queue = (
770-
sycl_queue.sycl_queue if sycl_queue is not None else sycl_queue
769+
sycl_queue.sycl_queue
770+
if sycl_queue and not isinstance(sycl_queue, types.misc.Omitted)
771+
else sycl_queue
771772
)
772773

773774
ret_ty = build_dpnp_ndarray(
@@ -870,7 +871,8 @@ def ol_dpnp_zeros_like(
870871
Returns:
871872
function: Local function `impl_dpnp_zeros_like()`.
872873
"""
873-
if sycl_queue is not None and device is not None:
874+
875+
if sycl_queue and not isinstance(sycl_queue, types.misc.Omitted) and device:
874876
raise errors.TypingError(
875877
"numba_dpex.dpnp_iface.arrayobj.ol_dpnp_empty(): "
876878
"`device` and `sycl_queue` are exclusive keywords, "
@@ -883,15 +885,15 @@ def ol_dpnp_zeros_like(
883885
+ "inside overloaded dpnp.zeros_like() function."
884886
)
885887

886-
_ndim = x1.ndim if hasattr(x1, "ndim") and x1.ndim is not None else 0
888+
_ndim = x1.ndim if hasattr(x1, "ndim") and x1.ndim else 0
887889
_dtype = _parse_dtype(dtype, data=x1)
888890
_order = x1.layout if order is None else order
889-
_usm_type = _parse_usm_type(usm_type) if usm_type is not None else "device"
890-
_device = (
891-
_parse_device_filter_string(device) if device is not None else None
892-
)
891+
_usm_type = _parse_usm_type(usm_type) if usm_type else "device"
892+
_device = _parse_device_filter_string(device) if device else None
893893
_sycl_queue = (
894-
sycl_queue.sycl_queue if sycl_queue is not None else sycl_queue
894+
sycl_queue.sycl_queue
895+
if sycl_queue and not isinstance(sycl_queue, types.misc.Omitted)
896+
else sycl_queue
895897
)
896898

897899
ret_ty = build_dpnp_ndarray(
@@ -993,7 +995,7 @@ def ol_dpnp_ones_like(
993995
Returns:
994996
function: Local function `impl_dpnp_ones_like()`.
995997
"""
996-
if sycl_queue is not None and device is not None:
998+
if sycl_queue and not isinstance(sycl_queue, types.misc.Omitted) and device:
997999
raise errors.TypingError(
9981000
"numba_dpex.dpnp_iface.arrayobj.ol_dpnp_empty(): "
9991001
"`device` and `sycl_queue` are exclusive keywords, "
@@ -1006,15 +1008,15 @@ def ol_dpnp_ones_like(
10061008
+ "inside overloaded dpnp.ones_like() function."
10071009
)
10081010

1009-
_ndim = x1.ndim if hasattr(x1, "ndim") and x1.ndim is not None else 0
1011+
_ndim = x1.ndim if hasattr(x1, "ndim") and x1.ndim else 0
10101012
_dtype = _parse_dtype(dtype, data=x1)
10111013
_order = x1.layout if order is None else order
1012-
_usm_type = _parse_usm_type(usm_type) if usm_type is not None else "device"
1013-
_device = (
1014-
_parse_device_filter_string(device) if device is not None else None
1015-
)
1014+
_usm_type = _parse_usm_type(usm_type) if usm_type else "device"
1015+
_device = _parse_device_filter_string(device) if device else None
10161016
_sycl_queue = (
1017-
sycl_queue.sycl_queue if sycl_queue is not None else sycl_queue
1017+
sycl_queue.sycl_queue
1018+
if sycl_queue and not isinstance(sycl_queue, types.misc.Omitted)
1019+
else sycl_queue
10181020
)
10191021

10201022
ret_ty = build_dpnp_ndarray(
@@ -1122,7 +1124,7 @@ def ol_dpnp_full_like(
11221124
function: Local function `impl_dpnp_full_like()`.
11231125
"""
11241126

1125-
if sycl_queue is not None and device is not None:
1127+
if sycl_queue and not isinstance(sycl_queue, types.misc.Omitted) and device:
11261128
raise errors.TypingError(
11271129
"numba_dpex.dpnp_iface.arrayobj.ol_dpnp_empty(): "
11281130
"`device` and `sycl_queue` are exclusive keywords, "
@@ -1135,15 +1137,15 @@ def ol_dpnp_full_like(
11351137
+ "inside overloaded dpnp.full_like() function."
11361138
)
11371139

1138-
_ndim = x1.ndim if hasattr(x1, "ndim") and x1.ndim is not None else 0
1140+
_ndim = x1.ndim if hasattr(x1, "ndim") and x1.ndim else 0
11391141
_dtype = _parse_dtype(dtype, data=x1)
11401142
_order = x1.layout if order is None else order
1141-
_usm_type = _parse_usm_type(usm_type) if usm_type is not None else "device"
1142-
_device = (
1143-
_parse_device_filter_string(device) if device is not None else None
1144-
)
1143+
_usm_type = _parse_usm_type(usm_type) if usm_type else "device"
1144+
_device = _parse_device_filter_string(device) if device else None
11451145
_sycl_queue = (
1146-
sycl_queue.sycl_queue if sycl_queue is not None else sycl_queue
1146+
sycl_queue.sycl_queue
1147+
if sycl_queue and not isinstance(sycl_queue, types.misc.Omitted)
1148+
else sycl_queue
11471149
)
11481150

11491151
ret_ty = build_dpnp_ndarray(

0 commit comments

Comments
 (0)