Skip to content

Commit e260298

Browse files
mkl_blas::scal instead of loop in backend rng_rayleigh (#1049)
* mkl_blas::scal instead of loop in backend rng_rayleigh Co-authored-by: Alexander-Makaryev <[email protected]>
1 parent da1f564 commit e260298

File tree

1 file changed

+5
-12
lines changed

1 file changed

+5
-12
lines changed

dpnp/backend/kernels/dpnp_krnl_random.cpp

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -715,22 +715,15 @@ void dpnp_rng_rayleigh_c(void* result, const _DataType scale, const size_t size)
715715
const _DataType a = 0.0;
716716
const _DataType beta = 2.0;
717717

718-
DPNPC_ptr_adapter<_DataType> result1_ptr(result, size, true, true);
718+
DPNPC_ptr_adapter<_DataType> result1_ptr(result, size);
719719
_DataType* result1 = result1_ptr.get_ptr();
720720

721721
mkl_rng::exponential<_DataType> distribution(a, beta);
722722

723-
auto event_out = mkl_rng::generate(distribution, DPNP_RNG_ENGINE, size, result1);
724-
event_out.wait();
725-
event_out = mkl_vm::sqrt(DPNP_QUEUE, size, result1, result1, no_deps, mkl_vm::mode::ha);
726-
event_out.wait();
727-
// with MKL
728-
// event_out = mkl_blas::axpy(DPNP_QUEUE, size, scale, result1, 1, result1, 1);
729-
// event_out.wait();
730-
for (size_t i = 0; i < size; i++)
731-
{
732-
result1[i] *= scale;
733-
}
723+
auto exponential_rng_event = mkl_rng::generate(distribution, DPNP_RNG_ENGINE, size, result1);
724+
auto sqrt_event = mkl_vm::sqrt(DPNP_QUEUE, size, result1, result1, {exponential_rng_event}, mkl_vm::mode::ha);
725+
auto scal_event = mkl_blas::scal(DPNP_QUEUE, size, scale, result1, 1, {sqrt_event});
726+
scal_event.wait();
734727
}
735728

736729
template <typename _DataType>

0 commit comments

Comments
 (0)