@@ -44,19 +44,14 @@ void dpnp_cholesky_c(void* array1_in, void* result1, const size_t size, const si
44
44
45
45
size_t iters = size / (data_size * data_size);
46
46
47
+ // math lib func overrides input
48
+ _DataType* in_a = reinterpret_cast <_DataType*>(dpnp_memory_alloc_c (data_size * data_size * sizeof (_DataType)));
49
+
47
50
for (size_t k = 0 ; k < iters; ++k)
48
51
{
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
-
57
52
for (size_t it = 0 ; it < data_size * data_size; ++it)
58
53
{
59
- result_ [it] = matrix[ it];
54
+ in_a [it] = in_array[k * (data_size * data_size) + it];
60
55
}
61
56
62
57
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
68
63
69
64
_DataType* scratchpad = reinterpret_cast <_DataType*>(dpnp_memory_alloc_c (scratchpad_size * sizeof (_DataType)));
70
65
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);
72
67
73
68
event.wait ();
74
69
@@ -83,7 +78,7 @@ void dpnp_cholesky_c(void* array1_in, void* result1, const size_t size, const si
83
78
}
84
79
if (arg)
85
80
{
86
- result_ [i * data_size + j] = 0 ;
81
+ in_a [i * data_size + j] = 0 ;
87
82
}
88
83
}
89
84
}
@@ -92,9 +87,11 @@ void dpnp_cholesky_c(void* array1_in, void* result1, const size_t size, const si
92
87
93
88
for (size_t t = 0 ; t < data_size * data_size; ++t)
94
89
{
95
- result[k * (data_size * data_size) + t] = result_ [t];
90
+ result[k * (data_size * data_size) + t] = in_a [t];
96
91
}
97
92
}
93
+
94
+ dpnp_memory_free_c (in_a);
98
95
}
99
96
100
97
template <typename _DataType>
0 commit comments