30
30
#include " dpnp_fptr.hpp"
31
31
#include " dpnp_iterator.hpp"
32
32
#include " dpnp_utils.hpp"
33
+ #include " dpnpc_memory_adapter.hpp"
33
34
#include " queue_sycl.hpp"
34
35
35
36
namespace mkl_stats = oneapi::mkl::stats;
@@ -74,7 +75,11 @@ void dpnp_sum_c(void* result_out,
74
75
75
76
const _DataType_output init = get_initial_value<_DataType_output>(initial, 0 );
76
77
77
- _DataType_input* input = get_array_ptr<_DataType_input>(input_in);
78
+ const size_t input_size =
79
+ std::accumulate (input_shape, input_shape + input_shape_ndim, size_t (1 ), std::multiplies<size_t >());
80
+
81
+ DPNPC_ptr_adapter<_DataType_input> input1_ptr (input_in, input_size);
82
+ _DataType_input* input = input1_ptr.get_ptr ();
78
83
_DataType_output* result = get_array_ptr<_DataType_output>(result_out);
79
84
80
85
if (!input_shape && !input_shape_ndim)
@@ -98,8 +103,6 @@ void dpnp_sum_c(void* result_out,
98
103
// - float64 and float32 types only
99
104
if (axes_ndim < 1 )
100
105
{
101
- const size_t input_size =
102
- std::accumulate (input_shape, input_shape + input_shape_ndim, size_t (1 ), std::multiplies<size_t >());
103
106
auto dataset = mkl_stats::make_dataset<mkl_stats::layout::row_major>(1 , input_size, input);
104
107
cl::sycl::event event = mkl_stats::raw_sum (DPNP_QUEUE, dataset, result);
105
108
event.wait ();
@@ -121,7 +124,7 @@ void dpnp_sum_c(void* result_out,
121
124
policy, input_it.begin (output_id), input_it.end (output_id), init, std::plus<_DataType_output>());
122
125
policy.queue ().wait (); // TODO move out of the loop
123
126
124
- dpnp_memory_memcpy_c (&( result[ output_id]) , &accumulator, sizeof (_DataType_output)); // result[output_id] = accumulator;
127
+ dpnp_memory_memcpy_c (result + output_id, &accumulator, sizeof (_DataType_output)); // result[output_id] = accumulator;
125
128
}
126
129
127
130
return ;
@@ -149,7 +152,11 @@ void dpnp_prod_c(void* result_out,
149
152
150
153
const _DataType_output init = get_initial_value<_DataType_output>(initial, 1 );
151
154
152
- _DataType_input* input = get_array_ptr<_DataType_input>(input_in);
155
+ const size_t input_size =
156
+ std::accumulate (input_shape, input_shape + input_shape_ndim, size_t (1 ), std::multiplies<size_t >());
157
+
158
+ DPNPC_ptr_adapter<_DataType_input> input1_ptr (input_in, input_size);
159
+ _DataType_input* input = input1_ptr.get_ptr ();
153
160
_DataType_output* result = get_array_ptr<_DataType_output>(result_out);
154
161
155
162
if (!input_shape && !input_shape_ndim)
@@ -177,7 +184,7 @@ void dpnp_prod_c(void* result_out,
177
184
policy, input_it.begin (output_id), input_it.end (output_id), init, std::multiplies<_DataType_output>());
178
185
policy.queue ().wait (); // TODO move out of the loop
179
186
180
- dpnp_memory_memcpy_c (&( result[ output_id]) , &accumulator, sizeof (_DataType_output)); // result[output_id] = accumulator;
187
+ dpnp_memory_memcpy_c (result + output_id, &accumulator, sizeof (_DataType_output)); // result[output_id] = accumulator;
181
188
}
182
189
183
190
return ;
0 commit comments