Skip to content

Commit 6a659b9

Browse files
authored
CHOLESKY enable on GPU (#738)
* CHOLESKY enable on GPU
1 parent 9631d9b commit 6a659b9

File tree

2 files changed

+9
-15
lines changed

2 files changed

+9
-15
lines changed

dpnp/backend/kernels/dpnp_krnl_linalg.cpp

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

10097
template <typename _DataType>

tests/skipped_tests_gpu.tbl

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
tests/test_linalg.py::test_cholesky[[[[1, -2], [2, 5]]]]
2-
tests/test_linalg.py::test_cholesky[[[[1., -2.], [2., 5.]]]]
3-
tests/test_linalg.py::test_cholesky[[[[1., -2.], [2., 5.]], [[1., -2.], [2., 5.]]]]
41
tests/test_linalg.py::test_cond[-1-[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]
52
tests/test_linalg.py::test_cond[1-[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]
63
tests/test_linalg.py::test_cond[-2-[[1, 0, -1], [0, 1, 0], [1, 0, 1]]]

0 commit comments

Comments
 (0)