Skip to content

Commit 6cab866

Browse files
DPNPC_ptr_adapter integration into random multinomial (#1046)
* Fix multinomial on GPU Co-authored-by: Alexander-Makaryev <[email protected]>
1 parent 0c7de14 commit 6cab866

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

dpnp/backend/kernels/dpnp_krnl_random.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,6 @@ void dpnp_rng_multinomial_c(
413413
}
414414
else
415415
{
416-
std::int32_t* result1 = reinterpret_cast<std::int32_t*>(result);
417416
std::vector<double> p(p_vector, p_vector + p_vector_size);
418417
// size = size
419418
// `result` is a array for random numbers
@@ -427,13 +426,17 @@ void dpnp_rng_multinomial_c(
427426
// which follow the condition
428427
if (is_cpu_queue || (!is_cpu_queue && (p_vector_size >= ((size_t)ntrial * 16)) && (ntrial <= 16)))
429428
{
429+
DPNPC_ptr_adapter<std::int32_t> result_ptr(result, size, false, true);
430+
std::int32_t* result1 = result_ptr.get_ptr();
430431
mkl_rng::multinomial<std::int32_t> distribution(ntrial, p);
431432
// perform generation
432433
auto event_out = mkl_rng::generate(distribution, DPNP_RNG_ENGINE, n, result1);
433434
event_out.wait();
434435
}
435436
else
436437
{
438+
DPNPC_ptr_adapter<std::int32_t> result_ptr(result, size, true, true);
439+
std::int32_t* result1 = result_ptr.get_ptr();
437440
int errcode = viRngMultinomial(
438441
VSL_RNG_METHOD_MULTINOMIAL_MULTPOISSON, get_rng_stream(), n, result1, ntrial, p_vector_size, p_vector);
439442
if (errcode != VSL_STATUS_OK)

0 commit comments

Comments
 (0)