Skip to content

Commit 05aa34d

Browse files
committed
Move dpctl event datamodel wrapper to separate function
1 parent 0c3620e commit 05aa34d

File tree

2 files changed

+38
-19
lines changed

2 files changed

+38
-19
lines changed

numba_dpex/dpctl_iface/_intrinsic.py

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@
55
import dpctl
66
from llvmlite.ir import IRBuilder
77
from numba import types
8-
from numba.core import cgutils, imputils
98
from numba.core.datamodel import default_manager
10-
from numba.extending import intrinsic, overload, overload_method, type_callable
9+
from numba.extending import intrinsic, overload, overload_method
1110

1211
import numba_dpex.dpctl_iface.libsyclinterface_bindings as sycl
1312
from numba_dpex.core import types as dpex_types
14-
from numba_dpex.core.runtime import context as dpexrt
13+
from numba_dpex.dpctl_iface.wrappers import wrap_event_reference
1514

1615

1716
@intrinsic
@@ -33,23 +32,8 @@ def sycl_event_create(
3332
sig = ty_event(types.void)
3433

3534
def codegen(context, builder: IRBuilder, sig, args: list):
36-
pyapi = context.get_python_api(builder)
37-
38-
event_struct_proxy = cgutils.create_struct_proxy(ty_event)(
39-
context, builder
40-
)
41-
4235
event = sycl.dpctl_event_create(builder)
43-
dpexrtCtx = dpexrt.DpexRTContext(context)
44-
45-
# Ref count after the call is equal to 1.
46-
dpexrtCtx.eventstruct_init(
47-
pyapi, event, event_struct_proxy._getpointer()
48-
)
49-
50-
event_value = event_struct_proxy._getvalue()
51-
52-
return event_value
36+
return wrap_event_reference(context, builder, event)
5337

5438
return sig, codegen
5539

numba_dpex/dpctl_iface/wrappers.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# SPDX-FileCopyrightText: 2023 Intel Corporation
2+
#
3+
# SPDX-License-Identifier: Apache-2.0
4+
5+
from numba.core import cgutils
6+
7+
from numba_dpex.core.runtime import context as dpexrt
8+
from numba_dpex.core.types import DpctlSyclEvent
9+
10+
11+
def wrap_event_reference(ctx, builder, eref):
12+
"""Wrap dpctl event reference into datamodel so it can be boxed to
13+
Python."""
14+
15+
ty_event = DpctlSyclEvent()
16+
17+
pyapi = ctx.get_python_api(builder)
18+
19+
event_struct_proxy = cgutils.create_struct_proxy(ty_event)(ctx, builder)
20+
21+
# Ref count after the call is equal to 1.
22+
# TODO: get dpex RT from cached property once the PR is merged
23+
# https://github.com/IntelPython/numba-dpex/pull/1027
24+
# ctx.dpexrt.eventstruct_init( # noqa: W0621
25+
dpexrt.DpexRTContext(ctx).eventstruct_init(
26+
pyapi,
27+
eref,
28+
# calling _<method>() is by numba's design
29+
event_struct_proxy._getpointer(), # pylint: disable=W0212
30+
)
31+
32+
# calling _<method>() is by numba's design
33+
event_value = event_struct_proxy._getvalue() # pylint: disable=W0212
34+
35+
return event_value

0 commit comments

Comments
 (0)