@@ -150,20 +150,20 @@ def call_origin(function, *args, **kwargs):
150
150
if (kwargs_dtype is not None ):
151
151
result_dtype = kwargs_dtype
152
152
153
- result = dparray (result_origin.shape, dtype = result_dtype)
153
+ result = create_output_container (result_origin.shape, result_dtype)
154
154
else :
155
155
result = kwargs_out
156
156
157
157
for i in range (result.size):
158
158
result.flat[i] = result_origin.item(i)
159
159
160
160
elif isinstance (result, tuple ):
161
- # convert tuple(ndarray ) to tuple(dparray )
161
+ # convert tuple(fallback_array ) to tuple(result_array )
162
162
result_list = []
163
163
for res_origin in result:
164
164
res = res_origin
165
165
if isinstance (res_origin, numpy.ndarray):
166
- res = dparray (res_origin.shape, dtype = res_origin.dtype)
166
+ res = create_output_container (res_origin.shape, res_origin.dtype)
167
167
for i in range (res.size):
168
168
res.flat[i] = res_origin.item(i)
169
169
result_list.append(res)
@@ -384,6 +384,20 @@ cdef DPNPFuncType get_output_c_type(DPNPFuncName funcID,
384
384
checker_throw_value_error(" get_output_c_type" , " dtype and out" , requested_dtype, requested_out)
385
385
386
386
387
+ def create_output_container (shape , type ):
388
+ if config.__DPNP_OUTPUT_NUMPY__:
389
+ """ Create NumPy ndarray """
390
+ # TODO need to use "buffer=" parameter to use SYCL aware memory
391
+ result = numpy.ndarray(shape, dtype = type )
392
+ elif config.__DPNP_DPCTL_AVAILABLE__:
393
+ """ Create DPCTL array """
394
+ result = dpctl.usm_ndarray(shape, dtype = numpy.dtype(type ).name)
395
+ else :
396
+ """ Create DPNP array """
397
+ result = dparray(shape, dtype = type )
398
+
399
+ return result
400
+
387
401
cdef dpnp_descriptor create_output_descriptor(shape_type_c output_shape,
388
402
DPNPFuncType c_type,
389
403
dpnp_descriptor requested_out):
@@ -392,18 +406,8 @@ cdef dpnp_descriptor create_output_descriptor(shape_type_c output_shape,
392
406
if requested_out is None :
393
407
result = None
394
408
result_dtype = dpnp_DPNPFuncType_to_dtype( < size_t > c_type)
395
- if config.__DPNP_OUTPUT_NUMPY__:
396
- """ Create NumPy ndarray """
397
- # TODO need to use "buffer=" parameter to use SYCL aware memory
398
- result = numpy.ndarray(output_shape, dtype = result_dtype)
399
- elif config.__DPNP_DPCTL_AVAILABLE__:
400
- """ Create DPCTL array """
401
- result = dpctl.usm_ndarray(output_shape, dtype = numpy.dtype(result_dtype).name)
402
- else :
403
- """ Create DPNP array """
404
- result = dparray(output_shape, dtype = result_dtype)
405
-
406
- result_desc = dpnp_descriptor(result)
409
+ result_obj = create_output_container(output_shape, result_dtype)
410
+ result_desc = dpnp_descriptor(result_obj)
407
411
else :
408
412
""" Based on 'out' parameter """
409
413
if (output_shape != requested_out.shape):
0 commit comments