@@ -44,19 +44,14 @@ void dpnp_cholesky_c(void* array1_in, void* result1, const size_t size, const si
4444
4545 size_t iters = size / (data_size * data_size);
4646
47+ // math lib func overrides input
48+ _DataType* in_a = reinterpret_cast <_DataType*>(dpnp_memory_alloc_c (data_size * data_size * sizeof (_DataType)));
49+
4750 for (size_t k = 0 ; k < iters; ++k)
4851 {
49- _DataType matrix[data_size * data_size];
50- _DataType result_[data_size * data_size];
51-
52- for (size_t t = 0 ; t < data_size * data_size; ++t)
53- {
54- matrix[t] = in_array[k * (data_size * data_size) + t];
55- }
56-
5752 for (size_t it = 0 ; it < data_size * data_size; ++it)
5853 {
59- result_ [it] = matrix[ it];
54+ in_a [it] = in_array[k * (data_size * data_size) + it];
6055 }
6156
6257 const std::int64_t n = data_size;
@@ -68,7 +63,7 @@ void dpnp_cholesky_c(void* array1_in, void* result1, const size_t size, const si
6863
6964 _DataType* scratchpad = reinterpret_cast <_DataType*>(dpnp_memory_alloc_c (scratchpad_size * sizeof (_DataType)));
7065
71- event = mkl_lapack::potrf (DPNP_QUEUE, oneapi::mkl::uplo::upper, n, result_ , lda, scratchpad, scratchpad_size);
66+ event = mkl_lapack::potrf (DPNP_QUEUE, oneapi::mkl::uplo::upper, n, in_a , lda, scratchpad, scratchpad_size);
7267
7368 event.wait ();
7469
@@ -83,7 +78,7 @@ void dpnp_cholesky_c(void* array1_in, void* result1, const size_t size, const si
8378 }
8479 if (arg)
8580 {
86- result_ [i * data_size + j] = 0 ;
81+ in_a [i * data_size + j] = 0 ;
8782 }
8883 }
8984 }
@@ -92,9 +87,11 @@ void dpnp_cholesky_c(void* array1_in, void* result1, const size_t size, const si
9287
9388 for (size_t t = 0 ; t < data_size * data_size; ++t)
9489 {
95- result[k * (data_size * data_size) + t] = result_ [t];
90+ result[k * (data_size * data_size) + t] = in_a [t];
9691 }
9792 }
93+
94+ dpnp_memory_free_c (in_a);
9895}
9996
10097template <typename _DataType>
0 commit comments