@@ -42,6 +42,20 @@ cimport cpython
42
42
cimport cython
43
43
cimport numpy
44
44
45
+ try :
46
+ """
47
+ Detect DPCtl availability to use data container
48
+ """
49
+ import dpctl.tensor as dpctl
50
+
51
+ config.__DPNP_DPCTL_AVAILABLE__ = True
52
+
53
+ except ImportError :
54
+ """
55
+ No DPCtl data container available
56
+ """
57
+ config.__DPNP_DPCTL_AVAILABLE__ = False
58
+
45
59
46
60
"""
47
61
Python import functions
@@ -361,6 +375,9 @@ cdef dpnp_descriptor create_output_descriptor(shape_type_c output_shape,
361
375
""" Create NumPy ndarray """
362
376
# TODO need to use "buffer=" parameter to use SYCL aware memory
363
377
result = numpy.ndarray(output_shape, dtype = result_dtype)
378
+ elif config.__DPNP_DPCTL_AVAILABLE__:
379
+ """ Create DPCTL array """
380
+ result = dpctl.usm_ndarray(output_shape, dtype = numpy.dtype(result_dtype).name)
364
381
else :
365
382
""" Create DPNP array """
366
383
result = dparray(output_shape, dtype = result_dtype)
@@ -481,13 +498,17 @@ cdef class dpnp_descriptor:
481
498
self .dpnp_descriptor_data_size = 0
482
499
self .dpnp_descriptor_is_scalar = True
483
500
484
- """ Accure main data storage """
485
- self .descriptor = getattr (obj, " __array_interface__ " , None )
501
+ """ Accure DPCTL data container storage """
502
+ self .descriptor = getattr (obj, " __sycl_usm_array_interface__ " , None )
486
503
if self .descriptor is None :
487
- return
488
504
489
- if self .descriptor[" version" ] != 3 :
490
- return
505
+ """ Accure main data storage """
506
+ self .descriptor = getattr (obj, " __array_interface__" , None )
507
+ if self .descriptor is None :
508
+ return
509
+
510
+ if self .descriptor[" version" ] != 3 :
511
+ return
491
512
492
513
self .origin_pyobj = obj
493
514
0 commit comments