27
27
28
28
#include " dpnp_fptr.hpp"
29
29
#include " dpnp_iface.hpp"
30
+ #include " dpnpc_memory_adapter.hpp"
30
31
#include " queue_sycl.hpp"
31
32
32
33
template <typename _KernelNameSpecialization>
@@ -70,8 +71,12 @@ void dpnp_diag_c(
70
71
// avoid warning unused variable
71
72
(void )res_ndim;
72
73
73
- _DataType* v = reinterpret_cast <_DataType*>(v_in);
74
- _DataType* result = reinterpret_cast <_DataType*>(result1);
74
+ const size_t input1_size = std::accumulate (shape, shape + ndim, 1 , std::multiplies<size_t >());
75
+ const size_t result_size = std::accumulate (res_shape, res_shape + res_ndim, 1 , std::multiplies<size_t >());
76
+ DPNPC_ptr_adapter<_DataType> input1_ptr (v_in, input1_size, true );
77
+ DPNPC_ptr_adapter<_DataType> result_ptr (result1, result_size, true , true );
78
+ _DataType* v = input1_ptr.get_ptr ();
79
+ _DataType* result = result_ptr.get_ptr ();
75
80
76
81
size_t init0 = std::max (0 , -k);
77
82
size_t init1 = std::max (0 , k);
@@ -167,8 +172,10 @@ void dpnp_vander_c(const void* array1_in, void* result1, const size_t size_in, c
167
172
if (!size_in || !N)
168
173
return ;
169
174
170
- const _DataType_input* array_in = reinterpret_cast <const _DataType_input*>(array1_in);
171
- _DataType_output* result = reinterpret_cast <_DataType_output*>(result1);
175
+ DPNPC_ptr_adapter<_DataType_input> input1_ptr (array1_in, size_in, true );
176
+ DPNPC_ptr_adapter<_DataType_output> result_ptr (result1, size_in * N, true , true );
177
+ const _DataType_input* array_in = input1_ptr.get_ptr ();
178
+ _DataType_output* result = result_ptr.get_ptr ();
172
179
173
180
if (N == 1 )
174
181
{
@@ -222,16 +229,17 @@ void dpnp_trace_c(const void* array1_in, void* result_in, const size_t* shape_,
222
229
return ;
223
230
}
224
231
225
- const _DataType* input = reinterpret_cast <const _DataType*>(array1_in);
226
- _ResultType* result = reinterpret_cast <_ResultType*>(result_in);
227
232
const size_t last_dim = shape_[ndim - 1 ];
228
-
229
233
const size_t size = std::accumulate (shape_, shape_ + (ndim - 1 ), 1 , std::multiplies<size_t >());
230
234
if (!size)
231
235
{
232
236
return ;
233
237
}
234
238
239
+ DPNPC_ptr_adapter<_DataType> input1_ptr (array1_in, size * last_dim);
240
+ const _DataType* input = input1_ptr.get_ptr ();
241
+ _ResultType* result = reinterpret_cast <_ResultType*>(result_in);
242
+
235
243
cl::sycl::range<1 > gws (size);
236
244
auto kernel_parallel_for_func = [=](auto index) {
237
245
size_t i = index[0 ];
@@ -312,9 +320,6 @@ void dpnp_tril_c(void* array_in,
312
320
return ;
313
321
}
314
322
315
- _DataType* array_m = reinterpret_cast <_DataType*>(array_in);
316
- _DataType* result = reinterpret_cast <_DataType*>(result1);
317
-
318
323
if ((shape == nullptr ) || (res_shape == nullptr ))
319
324
{
320
325
return ;
@@ -325,17 +330,23 @@ void dpnp_tril_c(void* array_in,
325
330
return ;
326
331
}
327
332
328
- size_t res_size = 1 ;
329
- for ( size_t i = 0 ; i < res_ndim; ++i )
333
+ const size_t res_size = std::accumulate (res_shape, res_shape + res_ndim, 1 , std::multiplies< size_t >()) ;
334
+ if (res_size == 0 )
330
335
{
331
- res_size *= res_shape[i] ;
336
+ return ;
332
337
}
333
338
334
- if (res_size == 0 )
339
+ const size_t input_size = std::accumulate (shape, shape + ndim, 1 , std::multiplies<size_t >());
340
+ if (input_size == 0 )
335
341
{
336
342
return ;
337
343
}
338
344
345
+ DPNPC_ptr_adapter<_DataType> input1_ptr (array_in, input_size, true );
346
+ DPNPC_ptr_adapter<_DataType> result_ptr (result1, res_size, true , true );
347
+ _DataType* array_m = input1_ptr.get_ptr ();
348
+ _DataType* result = result_ptr.get_ptr ();
349
+
339
350
if (ndim == 1 )
340
351
{
341
352
for (size_t i = 0 ; i < res_size; ++i)
@@ -416,8 +427,6 @@ void dpnp_triu_c(void* array_in,
416
427
{
417
428
return ;
418
429
}
419
- _DataType* array_m = reinterpret_cast <_DataType*>(array_in);
420
- _DataType* result = reinterpret_cast <_DataType*>(result1);
421
430
422
431
if ((shape == nullptr ) || (res_shape == nullptr ))
423
432
{
@@ -429,17 +438,23 @@ void dpnp_triu_c(void* array_in,
429
438
return ;
430
439
}
431
440
432
- size_t res_size = 1 ;
433
- for ( size_t i = 0 ; i < res_ndim; ++i )
441
+ const size_t res_size = std::accumulate (res_shape, res_shape + res_ndim, 1 , std::multiplies< size_t >()) ;
442
+ if (res_size == 0 )
434
443
{
435
- res_size *= res_shape[i] ;
444
+ return ;
436
445
}
437
446
438
- if (res_size == 0 )
447
+ const size_t input_size = std::accumulate (shape, shape + ndim, 1 , std::multiplies<size_t >());
448
+ if (input_size == 0 )
439
449
{
440
450
return ;
441
451
}
442
452
453
+ DPNPC_ptr_adapter<_DataType> input1_ptr (array_in, input_size, true );
454
+ DPNPC_ptr_adapter<_DataType> result_ptr (result1, res_size, true , true );
455
+ _DataType* array_m = input1_ptr.get_ptr ();
456
+ _DataType* result = result_ptr.get_ptr ();
457
+
443
458
if (ndim == 1 )
444
459
{
445
460
for (size_t i = 0 ; i < res_size; ++i)
0 commit comments