Skip to content

Commit a28e86a

Browse files
authored
add some fixes in SYCL memory assignmet from host (#905)
1 parent 57caae8 commit a28e86a

File tree

5 files changed

+23
-9
lines changed

5 files changed

+23
-9
lines changed

dpnp/backend/kernels/dpnp_krnl_common.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ void dpnp_dot_c(void* result_out,
149149
std::reduce(policy, local_mem, local_mem + input1_size, _DataType_output(0), std::plus<_DataType_output>());
150150
policy.queue().wait();
151151

152-
result[0] = accumulator; // TODO use memcpy_c
152+
dpnp_memory_memcpy_c(result, &accumulator, sizeof(_DataType_output)); // result[0] = accumulator;
153153

154154
free(local_mem, DPNP_QUEUE);
155155
}

dpnp/backend/kernels/dpnp_krnl_linalg.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,8 @@ void dpnp_matrix_rank_c(void* array1_in, void* result1, size_t* shape, size_t nd
360360
_DataType* result = reinterpret_cast<_DataType*>(result1);
361361

362362
size_t elems = 1;
363-
result[0] = 0;
363+
const _DataType init_val = 0;
364+
dpnp_memory_memcpy_c(result, &init_val, sizeof(_DataType)); // result[0] = 0;
364365
if (ndim > 1)
365366
{
366367
elems = shape[0];

dpnp/backend/kernels/dpnp_krnl_mathematical.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,8 @@ void dpnp_trapz_c(
459459

460460
if (array1_size < 2)
461461
{
462-
result[0] = 0; // TODO make it on SYCL QUEUE via memcpy
462+
const _DataType_output init_val = 0;
463+
dpnp_memory_memcpy_c(result, &init_val, sizeof(_DataType_output)); // result[0] = 0;
463464
return;
464465
}
465466

dpnp/backend/kernels/dpnp_krnl_reduction.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,12 @@ void dpnp_sum_c(void* result_out,
7979

8080
if (!input_shape && !input_shape_ndim)
8181
{ // it is a scalar
82-
result[0] = input[0];
82+
//result[0] = input[0];
83+
_DataType_input input_elem = 0;
84+
_DataType_output result_elem = 0;
85+
dpnp_memory_memcpy_c(&input_elem, input, sizeof(_DataType_input));
86+
result_elem = input_elem;
87+
dpnp_memory_memcpy_c(result, &result_elem, sizeof(_DataType_output));
8388

8489
return;
8590
}
@@ -116,7 +121,7 @@ void dpnp_sum_c(void* result_out,
116121
policy, input_it.begin(output_id), input_it.end(output_id), init, std::plus<_DataType_output>());
117122
policy.queue().wait(); // TODO move out of the loop
118123

119-
result[output_id] = accumulator;
124+
dpnp_memory_memcpy_c(&(result[output_id]), &accumulator, sizeof(_DataType_output)); // result[output_id] = accumulator;
120125
}
121126

122127
return;
@@ -149,7 +154,12 @@ void dpnp_prod_c(void* result_out,
149154

150155
if (!input_shape && !input_shape_ndim)
151156
{ // it is a scalar
152-
result[0] = input[0];
157+
// result[0] = input[0];
158+
_DataType_input input_elem = 0;
159+
_DataType_output result_elem = 0;
160+
dpnp_memory_memcpy_c(&input_elem, input, sizeof(_DataType_input));
161+
result_elem = input_elem;
162+
dpnp_memory_memcpy_c(result, &result_elem, sizeof(_DataType_output));
153163

154164
return;
155165
}
@@ -167,7 +177,7 @@ void dpnp_prod_c(void* result_out,
167177
policy, input_it.begin(output_id), input_it.end(output_id), init, std::multiplies<_DataType_output>());
168178
policy.queue().wait(); // TODO move out of the loop
169179

170-
result[output_id] = accumulator;
180+
dpnp_memory_memcpy_c(&(result[output_id]), &accumulator, sizeof(_DataType_output)); // result[output_id] = accumulator;
171181
}
172182

173183
return;

dpnp/backend/kernels/dpnp_krnl_searching.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ void dpnp_argmax_c(void* array1_in, void* result1, size_t size)
4444
_DataType* res = std::max_element(policy, array_1, array_1 + size);
4545
policy.queue().wait();
4646

47-
result[0] = std::distance(array_1, res);
47+
_idx_DataType result_val = std::distance(array_1, res);
48+
dpnp_memory_memcpy_c(result, &result_val, sizeof(_idx_DataType)); // result[0] = std::distance(array_1, res);
4849

4950
return;
5051
}
@@ -64,7 +65,8 @@ void dpnp_argmin_c(void* array1_in, void* result1, size_t size)
6465
_DataType* res = std::min_element(policy, array_1, array_1 + size);
6566
policy.queue().wait();
6667

67-
result[0] = std::distance(array_1, res);
68+
_idx_DataType result_val = std::distance(array_1, res);
69+
dpnp_memory_memcpy_c(result, &result_val, sizeof(_idx_DataType)); // result[0] = std::distance(array_1, res);
6870

6971
return;
7072
}

0 commit comments

Comments
 (0)