55import  numba_dppy .dpnp_glue  as  dpnp_lowering 
66from  numba .core .extending  import  overload , register_jitable 
77import  numpy  as  np 
8- from  numba_dppy . dpctl_functions  import  _DPCTL_FUNCTIONS 
8+ from  numba_dppy  import  dpctl_functions 
99
1010
1111@overload (stubs .dpnp .eig ) 
1212def  dpnp_eig_impl (a ):
1313    name  =  "eig" 
1414    dpnp_lowering .ensure_dpnp (name )
15-     dpctl_functions  =  dpnp_ext ._DPCTL_FUNCTIONS ()
1615
1716    ret_type  =  types .void 
1817    """ 
@@ -26,16 +25,11 @@ def dpnp_eig_impl(a):
2625    sig  =  signature (ret_type , types .voidptr , types .voidptr , types .voidptr , types .intp )
2726    dpnp_eig  =  dpnp_ext .dpnp_func ("dpnp_"  +  name , [a .dtype .name , "NONE" ], sig )
2827
29-     get_sycl_queue  =  dpctl_functions .dpctl_get_current_queue ()
30-     allocate_usm_shared  =  dpctl_functions .dpctl_malloc_shared ()
31-     copy_usm  =  dpctl_functions .dpctl_queue_memcpy ()
32-     free_usm  =  dpctl_functions .dpctl_free_with_queue ()
33- 
3428    res_dtype  =  np .float64 
3529    if  a .dtype  ==  types .float32 :
3630        res_dtype  =  np .float32 
3731
38-     def  dpnp_eig_impl (a ):
32+     def  dpnp_impl (a ):
3933        n  =  a .shape [- 1 ]
4034        if  a .shape [- 2 ] !=  n :
4135            msg  =  "Last 2 dimensions of the array must be square." 
@@ -49,34 +43,37 @@ def dpnp_eig_impl(a):
4943        if  n  ==  0 :
5044            return  (wr , vr )
5145
52-         sycl_queue  =  get_sycl_queue ()
53-         a_usm  =  allocate_usm_shared (a .size  *  a .itemsize , sycl_queue )
54-         copy_usm (sycl_queue , a_usm , a .ctypes , a .size  *  a .itemsize )
46+         sycl_queue  =  dpctl_functions . get_current_queue ()
47+         a_usm  =  dpctl_functions . malloc_shared (a .size  *  a .itemsize , sycl_queue )
48+         dpctl_functions . queue_memcpy (sycl_queue , a_usm , a .ctypes , a .size  *  a .itemsize )
5549
56-         wr_usm  =  allocate_usm_shared (wr .size  *  wr .itemsize , sycl_queue )
57-         vr_usm  =  allocate_usm_shared (vr .size  *  vr .itemsize , sycl_queue )
50+         wr_usm  =  dpctl_functions . malloc_shared (wr .size  *  wr .itemsize , sycl_queue )
51+         vr_usm  =  dpctl_functions . malloc_shared (vr .size  *  vr .itemsize , sycl_queue )
5852
5953        dpnp_eig (a_usm , wr_usm , vr_usm , n )
6054
61-         copy_usm (sycl_queue , wr .ctypes , wr_usm , wr .size  *  wr .itemsize )
62-         copy_usm (sycl_queue , vr .ctypes , vr_usm , vr .size  *  vr .itemsize )
55+         dpctl_functions .queue_memcpy (
56+             sycl_queue , wr .ctypes , wr_usm , wr .size  *  wr .itemsize 
57+         )
58+         dpctl_functions .queue_memcpy (
59+             sycl_queue , vr .ctypes , vr_usm , vr .size  *  vr .itemsize 
60+         )
6361
64-         free_usm (a_usm , sycl_queue )
65-         free_usm (wr_usm , sycl_queue )
66-         free_usm (vr_usm , sycl_queue )
62+         dpctl_functions . free_with_queue (a_usm , sycl_queue )
63+         dpctl_functions . free_with_queue (wr_usm , sycl_queue )
64+         dpctl_functions . free_with_queue (vr_usm , sycl_queue )
6765
6866        dpnp_ext ._dummy_liveness_func ([wr .size , vr .size ])
6967
7068        return  (wr , vr )
7169
72-     return  dpnp_eig_impl 
70+     return  dpnp_impl 
7371
7472
7573@overload (stubs .dpnp .matmul ) 
7674@overload (stubs .dpnp .dot ) 
7775def  dpnp_dot_impl (a , b ):
7876    dpnp_lowering .ensure_dpnp ("dot" )
79-     dpctl_functions  =  dpnp_ext ._DPCTL_FUNCTIONS ()
8077
8178    ret_type  =  types .void 
8279    """ 
@@ -100,11 +97,6 @@ def dpnp_dot_impl(a, b):
10097        types .intp ,
10198    )
10299
103-     get_sycl_queue  =  dpctl_functions .dpctl_get_current_queue ()
104-     allocate_usm_shared  =  dpctl_functions .dpctl_malloc_shared ()
105-     copy_usm  =  dpctl_functions .dpctl_queue_memcpy ()
106-     free_usm  =  dpctl_functions .dpctl_free_with_queue ()
107- 
108100    res_dtype  =  np .float64 
109101    if  a .dtype  ==  types .int32  and  b .dtype  ==  types .int32 :
110102        res_dtype  =  np .int32 
@@ -144,30 +136,36 @@ def dpnp_dot_impl(a, b):
144136        dpnp_func  =  dpnp_ext .dpnp_func ("dpnp_matmul" , [a .dtype .name , "NONE" ], sig )
145137
146138        def  dot_2_mm (a , b ):
147-             sycl_queue  =  get_sycl_queue ()
139+             sycl_queue  =  dpctl_functions . get_current_queue ()
148140
149141            m , k  =  a .shape 
150142            _k , n  =  b .shape 
151143
152144            if  _k  !=  k :
153145                raise  ValueError ("Incompatible array sizes for np.dot(a, b)" )
154146
155-             a_usm  =  allocate_usm_shared (a .size  *  a .itemsize , sycl_queue )
156-             copy_usm (sycl_queue , a_usm , a .ctypes , a .size  *  a .itemsize )
147+             a_usm  =  dpctl_functions .malloc_shared (a .size  *  a .itemsize , sycl_queue )
148+             dpctl_functions .queue_memcpy (
149+                 sycl_queue , a_usm , a .ctypes , a .size  *  a .itemsize 
150+             )
157151
158-             b_usm  =  allocate_usm_shared (b .size  *  b .itemsize , sycl_queue )
159-             copy_usm (sycl_queue , b_usm , b .ctypes , b .size  *  b .itemsize )
152+             b_usm  =  dpctl_functions .malloc_shared (b .size  *  b .itemsize , sycl_queue )
153+             dpctl_functions .queue_memcpy (
154+                 sycl_queue , b_usm , b .ctypes , b .size  *  b .itemsize 
155+             )
160156
161157            out  =  np .empty ((m , n ), dtype = res_dtype )
162-             out_usm  =  allocate_usm_shared (out .size  *  out .itemsize , sycl_queue )
158+             out_usm  =  dpctl_functions . malloc_shared (out .size  *  out .itemsize , sycl_queue )
163159
164160            dpnp_func (a_usm , b_usm , out_usm , m , n , k )
165161
166-             copy_usm (sycl_queue , out .ctypes , out_usm , out .size  *  out .itemsize )
162+             dpctl_functions .queue_memcpy (
163+                 sycl_queue , out .ctypes , out_usm , out .size  *  out .itemsize 
164+             )
167165
168-             free_usm (a_usm , sycl_queue )
169-             free_usm (b_usm , sycl_queue )
170-             free_usm (out_usm , sycl_queue )
166+             dpctl_functions . free_with_queue (a_usm , sycl_queue )
167+             dpctl_functions . free_with_queue (b_usm , sycl_queue )
168+             dpctl_functions . free_with_queue (out_usm , sycl_queue )
171169
172170            dpnp_ext ._dummy_liveness_func ([a .size , b .size , out .size ])
173171
@@ -178,7 +176,7 @@ def dot_2_mm(a, b):
178176        dpnp_func  =  dpnp_ext .dpnp_func ("dpnp_matmul" , [a .dtype .name , "NONE" ], sig )
179177
180178        def  dot_2_mv (a , b ):
181-             sycl_queue  =  get_sycl_queue ()
179+             sycl_queue  =  dpctl_functions . get_current_queue ()
182180
183181            m , k  =  a .shape 
184182            (_n ,) =  b .shape 
@@ -187,22 +185,28 @@ def dot_2_mv(a, b):
187185            if  _n  !=  k :
188186                raise  ValueError ("Incompatible array sizes for np.dot(a, b)" )
189187
190-             a_usm  =  allocate_usm_shared (a .size  *  a .itemsize , sycl_queue )
191-             copy_usm (sycl_queue , a_usm , a .ctypes , a .size  *  a .itemsize )
188+             a_usm  =  dpctl_functions .malloc_shared (a .size  *  a .itemsize , sycl_queue )
189+             dpctl_functions .queue_memcpy (
190+                 sycl_queue , a_usm , a .ctypes , a .size  *  a .itemsize 
191+             )
192192
193-             b_usm  =  allocate_usm_shared (b .size  *  b .itemsize , sycl_queue )
194-             copy_usm (sycl_queue , b_usm , b .ctypes , b .size  *  b .itemsize )
193+             b_usm  =  dpctl_functions .malloc_shared (b .size  *  b .itemsize , sycl_queue )
194+             dpctl_functions .queue_memcpy (
195+                 sycl_queue , b_usm , b .ctypes , b .size  *  b .itemsize 
196+             )
195197
196198            out  =  np .empty ((m ,), dtype = res_dtype )
197-             out_usm  =  allocate_usm_shared (out .size  *  out .itemsize , sycl_queue )
199+             out_usm  =  dpctl_functions . malloc_shared (out .size  *  out .itemsize , sycl_queue )
198200
199201            dpnp_func (a_usm , b_usm , out_usm , m , n , k )
200202
201-             copy_usm (sycl_queue , out .ctypes , out_usm , out .size  *  out .itemsize )
203+             dpctl_functions .queue_memcpy (
204+                 sycl_queue , out .ctypes , out_usm , out .size  *  out .itemsize 
205+             )
202206
203-             free_usm (a_usm , sycl_queue )
204-             free_usm (b_usm , sycl_queue )
205-             free_usm (out_usm , sycl_queue )
207+             dpctl_functions . free_with_queue (a_usm , sycl_queue )
208+             dpctl_functions . free_with_queue (b_usm , sycl_queue )
209+             dpctl_functions . free_with_queue (out_usm , sycl_queue )
206210
207211            dpnp_ext ._dummy_liveness_func ([a .size , b .size , out .size ])
208212
@@ -213,30 +217,36 @@ def dot_2_mv(a, b):
213217        dpnp_func  =  dpnp_ext .dpnp_func ("dpnp_matmul" , [a .dtype .name , "NONE" ], sig )
214218
215219        def  dot_2_vm (a , b ):
216-             sycl_queue  =  get_sycl_queue ()
220+             sycl_queue  =  dpctl_functions . get_current_queue ()
217221
218222            (m ,) =  a .shape 
219223            k , n  =  b .shape 
220224
221225            if  m  !=  k :
222226                raise  ValueError ("Incompatible array sizes for np.dot(a, b)" )
223227
224-             a_usm  =  allocate_usm_shared (a .size  *  a .itemsize , sycl_queue )
225-             copy_usm (sycl_queue , a_usm , a .ctypes , a .size  *  a .itemsize )
228+             a_usm  =  dpctl_functions .malloc_shared (a .size  *  a .itemsize , sycl_queue )
229+             dpctl_functions .queue_memcpy (
230+                 sycl_queue , a_usm , a .ctypes , a .size  *  a .itemsize 
231+             )
226232
227-             b_usm  =  allocate_usm_shared (b .size  *  b .itemsize , sycl_queue )
228-             copy_usm (sycl_queue , b_usm , b .ctypes , b .size  *  b .itemsize )
233+             b_usm  =  dpctl_functions .malloc_shared (b .size  *  b .itemsize , sycl_queue )
234+             dpctl_functions .queue_memcpy (
235+                 sycl_queue , b_usm , b .ctypes , b .size  *  b .itemsize 
236+             )
229237
230238            out  =  np .empty ((n ,), dtype = res_dtype )
231-             out_usm  =  allocate_usm_shared (out .size  *  out .itemsize , sycl_queue )
239+             out_usm  =  dpctl_functions . malloc_shared (out .size  *  out .itemsize , sycl_queue )
232240
233241            dpnp_func (a_usm , b_usm , out_usm , m , n , k )
234242
235-             copy_usm (sycl_queue , out .ctypes , out_usm , out .size  *  out .itemsize )
243+             dpctl_functions .queue_memcpy (
244+                 sycl_queue , out .ctypes , out_usm , out .size  *  out .itemsize 
245+             )
236246
237-             free_usm (a_usm , sycl_queue )
238-             free_usm (b_usm , sycl_queue )
239-             free_usm (out_usm , sycl_queue )
247+             dpctl_functions . free_with_queue (a_usm , sycl_queue )
248+             dpctl_functions . free_with_queue (b_usm , sycl_queue )
249+             dpctl_functions . free_with_queue (out_usm , sycl_queue )
240250
241251            dpnp_ext ._dummy_liveness_func ([a .size , b .size , out .size ])
242252
@@ -250,30 +260,36 @@ def dot_2_vm(a, b):
250260        dpnp_func  =  dpnp_ext .dpnp_func ("dpnp_dot" , [a .dtype .name , "NONE" ], sig )
251261
252262        def  dot_2_vv (a , b ):
253-             sycl_queue  =  get_sycl_queue ()
263+             sycl_queue  =  dpctl_functions . get_current_queue ()
254264
255265            (m ,) =  a .shape 
256266            (n ,) =  b .shape 
257267
258268            if  m  !=  n :
259269                raise  ValueError ("Incompatible array sizes for np.dot(a, b)" )
260270
261-             a_usm  =  allocate_usm_shared (a .size  *  a .itemsize , sycl_queue )
262-             copy_usm (sycl_queue , a_usm , a .ctypes , a .size  *  a .itemsize )
271+             a_usm  =  dpctl_functions .malloc_shared (a .size  *  a .itemsize , sycl_queue )
272+             dpctl_functions .queue_memcpy (
273+                 sycl_queue , a_usm , a .ctypes , a .size  *  a .itemsize 
274+             )
263275
264-             b_usm  =  allocate_usm_shared (b .size  *  b .itemsize , sycl_queue )
265-             copy_usm (sycl_queue , b_usm , b .ctypes , b .size  *  b .itemsize )
276+             b_usm  =  dpctl_functions .malloc_shared (b .size  *  b .itemsize , sycl_queue )
277+             dpctl_functions .queue_memcpy (
278+                 sycl_queue , b_usm , b .ctypes , b .size  *  b .itemsize 
279+             )
266280
267281            out  =  np .empty (1 , dtype = res_dtype )
268-             out_usm  =  allocate_usm_shared (out .size  *  out .itemsize , sycl_queue )
282+             out_usm  =  dpctl_functions . malloc_shared (out .size  *  out .itemsize , sycl_queue )
269283
270284            dpnp_func (a_usm , b_usm , out_usm , m )
271285
272-             copy_usm (sycl_queue , out .ctypes , out_usm , out .size  *  out .itemsize )
286+             dpctl_functions .queue_memcpy (
287+                 sycl_queue , out .ctypes , out_usm , out .size  *  out .itemsize 
288+             )
273289
274-             free_usm (a_usm , sycl_queue )
275-             free_usm (b_usm , sycl_queue )
276-             free_usm (out_usm , sycl_queue )
290+             dpctl_functions . free_with_queue (a_usm , sycl_queue )
291+             dpctl_functions . free_with_queue (b_usm , sycl_queue )
292+             dpctl_functions . free_with_queue (out_usm , sycl_queue )
277293
278294            dpnp_ext ._dummy_liveness_func ([a .size , b .size , out .size ])
279295
0 commit comments