@@ -1068,11 +1068,10 @@ void dpnp_rng_standard_normal_c(void* result, size_t size)
1068
1068
template <typename _DataType>
1069
1069
void dpnp_rng_standard_t_c (void * result, const _DataType df, const size_t size)
1070
1070
{
1071
- if (!size)
1071
+ if (!size || !result )
1072
1072
{
1073
1073
return ;
1074
1074
}
1075
- cl::sycl::vector_class<cl::sycl::event> no_deps;
1076
1075
1077
1076
_DataType* result1 = reinterpret_cast <_DataType*>(result);
1078
1077
const _DataType d_zero = 0.0 , d_one = 1.0 ;
@@ -1082,18 +1081,17 @@ void dpnp_rng_standard_t_c(void* result, const _DataType df, const size_t size)
1082
1081
if (dpnp_queue_is_cpu_c ())
1083
1082
{
1084
1083
mkl_rng::gamma<_DataType> gamma_distribution (shape, d_zero, 1.0 / shape);
1085
- auto event_out = mkl_rng::generate (gamma_distribution, DPNP_RNG_ENGINE, size, result1);
1086
- event_out.wait ();
1087
- event_out = mkl_vm::invsqrt (DPNP_QUEUE, size, result1, result1, no_deps, mkl_vm::mode::ha);
1088
- event_out.wait ();
1084
+ auto gamma_distr_event = mkl_rng::generate (gamma_distribution, DPNP_RNG_ENGINE, size, result1);
1085
+
1086
+ auto invsqrt_event = mkl_vm::invsqrt (DPNP_QUEUE, size, result1, result1, {gamma_distr_event}, mkl_vm::mode::ha);
1089
1087
1090
1088
sn = reinterpret_cast <_DataType*>(dpnp_memory_alloc_c (size * sizeof (_DataType)));
1091
1089
1092
1090
mkl_rng::gaussian<_DataType> gaussian_distribution (d_zero, d_one);
1093
- event_out = mkl_rng::generate (gaussian_distribution, DPNP_RNG_ENGINE, size, sn);
1094
- event_out.wait ();
1091
+ auto gaussian_distr_event = mkl_rng::generate (gaussian_distribution, DPNP_RNG_ENGINE, size, sn);
1095
1092
1096
- event_out = mkl_vm::mul (DPNP_QUEUE, size, result1, sn, result1, no_deps, mkl_vm::mode::ha);
1093
+ auto event_out = mkl_vm::mul (
1094
+ DPNP_QUEUE, size, result1, sn, result1, {invsqrt_event, gaussian_distr_event}, mkl_vm::mode::ha);
1097
1095
dpnp_memory_free_c (sn);
1098
1096
event_out.wait ();
1099
1097
}
0 commit comments