From f7850206cdece1a492882a47f79b1eb1f665d9ed Mon Sep 17 00:00:00 2001 From: "Victor A. P. Magri" <50467563+victorapm@users.noreply.github.com> Date: Mon, 5 Jun 2023 14:04:44 -0400 Subject: [PATCH] Extend exact block inversion to HIP via batched solvers (#913) This PR adds HIP support to exact block inversion in MGR via rocSOLVER's batched routines. --- src/parcsr_ls/par_mgr_device.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/parcsr_ls/par_mgr_device.c b/src/parcsr_ls/par_mgr_device.c index a998741ee..4697d926f 100644 --- a/src/parcsr_ls/par_mgr_device.c +++ b/src/parcsr_ls/par_mgr_device.c @@ -690,8 +690,20 @@ hypre_ParCSRMatrixExtractBlockDiagDevice( hypre_ParCSRMatrix *A, pivots, infos, num_blocks)); +#elif defined(HYPRE_USING_ROCSOLVER) + HYPRE_ROCSOLVER_CALL(rocsolver_dgetrf_batched(hypre_HandleCublasHandle(hypre_handle()), + blk_size, + blk_size, + tmpdiag_aop, + blk_size, + pivots, + blk_size, + infos, + num_blocks)); + #else hypre_error_w_msg(HYPRE_ERROR_GENERIC, "Block inversion not available!"); + return hypre_error_flag; #endif #if defined (HYPRE_DEBUG) @@ -725,8 +737,18 @@ hypre_ParCSRMatrixExtractBlockDiagDevice( hypre_ParCSRMatrix *A, blk_size, infos, num_blocks)); +#elif defined(HYPRE_USING_ROCSOLVER) + HYPRE_ROCSOLVER_CALL(rocsolver_dgetri_batched(hypre_HandleCublasHandle(hypre_handle()), + blk_size, + tmpdiag_aop, + blk_size, + pivots, + blk_size, + infos, + num_blocks)); #else hypre_error_w_msg(HYPRE_ERROR_GENERIC, "Block inversion not available!"); + return hypre_error_flag; #endif /* Free memory */