CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
216 lines
12 KiB
C
216 lines
12 KiB
C
/* ************************************************************************
|
|
* Copyright (C) 2023-2024 Advanced Micro Devices, Inc.
|
|
* ************************************************************************ */
|
|
|
|
#ifndef HIPSOLVER_REFACTOR_H
|
|
#define HIPSOLVER_REFACTOR_H
|
|
|
|
#include "hipsolver-types.h"
|
|
|
|
typedef void* hipsolverRfHandle_t;
|
|
|
|
typedef enum
|
|
{
|
|
HIPSOLVERRF_FACTORIZATION_ALG0 = 0,
|
|
HIPSOLVERRF_FACTORIZATION_ALG1 = 1,
|
|
HIPSOLVERRF_FACTORIZATION_ALG2 = 2,
|
|
} hipsolverRfFactorization_t;
|
|
|
|
typedef enum
|
|
{
|
|
HIPSOLVERRF_MATRIX_FORMAT_CSR = 0,
|
|
HIPSOLVERRF_MATRIX_FORMAT_CSC = 1,
|
|
} hipsolverRfMatrixFormat_t;
|
|
|
|
typedef enum
|
|
{
|
|
HIPSOLVERRF_NUMERIC_BOOST_NOT_USED = 0,
|
|
HIPSOLVERRF_NUMERIC_BOOST_USED = 1,
|
|
} hipsolverRfNumericBoostReport_t;
|
|
|
|
typedef enum
|
|
{
|
|
HIPSOLVERRF_RESET_VALUES_FAST_MODE_OFF = 0,
|
|
HIPSOLVERRF_RESET_VALUES_FAST_MODE_ON = 1,
|
|
} hipsolverRfResetValuesFastMode_t;
|
|
|
|
typedef enum
|
|
{
|
|
HIPSOLVERRF_TRIANGULAR_SOLVE_ALG1 = 1,
|
|
HIPSOLVERRF_TRIANGULAR_SOLVE_ALG2 = 2,
|
|
HIPSOLVERRF_TRIANGULAR_SOLVE_ALG3 = 3,
|
|
} hipsolverRfTriangularSolve_t;
|
|
|
|
typedef enum
|
|
{
|
|
HIPSOLVERRF_UNIT_DIAGONAL_STORED_L = 0,
|
|
HIPSOLVERRF_UNIT_DIAGONAL_STORED_U = 1,
|
|
HIPSOLVERRF_UNIT_DIAGONAL_ASSUMED_L = 2,
|
|
HIPSOLVERRF_UNIT_DIAGONAL_ASSUMED_U = 3,
|
|
} hipsolverRfUnitDiagonal_t;
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfCreate(hipsolverRfHandle_t* handle);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfDestroy(hipsolverRfHandle_t handle);
|
|
|
|
// non-batched routines
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfSetupDevice(int n,
|
|
int nnzA,
|
|
int* csrRowPtrA,
|
|
int* csrColIndA,
|
|
double* csrValA,
|
|
int nnzL,
|
|
int* csrRowPtrL,
|
|
int* csrColIndL,
|
|
double* csrValL,
|
|
int nnzU,
|
|
int* csrRowPtrU,
|
|
int* csrColIndU,
|
|
double* csrValU,
|
|
int* P,
|
|
int* Q,
|
|
hipsolverRfHandle_t handle);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfSetupHost(int n,
|
|
int nnzA,
|
|
int* h_csrRowPtrA,
|
|
int* h_csrColIndA,
|
|
double* h_csrValA,
|
|
int nnzL,
|
|
int* h_csrRowPtrL,
|
|
int* h_csrColIndL,
|
|
double* h_csrValL,
|
|
int nnzU,
|
|
int* h_csrRowPtrU,
|
|
int* h_csrColIndU,
|
|
double* h_csrValU,
|
|
int* h_P,
|
|
int* h_Q,
|
|
hipsolverRfHandle_t handle);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfAccessBundledFactorsDevice(
|
|
hipsolverRfHandle_t handle, int* nnzM, int** Mp, int** Mi, double** Mx);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfAnalyze(hipsolverRfHandle_t handle);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfExtractBundledFactorsHost(
|
|
hipsolverRfHandle_t handle, int* h_nnzM, int** h_Mp, int** h_Mi, double** h_Mx);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfExtractSplitFactorsHost(hipsolverRfHandle_t handle,
|
|
int* h_nnzL,
|
|
int** h_Lp,
|
|
int** h_Li,
|
|
double** h_Lx,
|
|
int* h_nnzU,
|
|
int** h_Up,
|
|
int** h_Ui,
|
|
double** h_Ux);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfGet_Algs(hipsolverRfHandle_t handle,
|
|
hipsolverRfFactorization_t* fact_alg,
|
|
hipsolverRfTriangularSolve_t* solve_alg);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfGetMatrixFormat(hipsolverRfHandle_t handle,
|
|
hipsolverRfMatrixFormat_t* format,
|
|
hipsolverRfUnitDiagonal_t* diag);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfGetNumericBoostReport(
|
|
hipsolverRfHandle_t handle, hipsolverRfNumericBoostReport_t* report);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfGetNumericProperties(hipsolverRfHandle_t handle,
|
|
double* zero,
|
|
double* boost);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfGetResetValuesFastMode(
|
|
hipsolverRfHandle_t handle, hipsolverRfResetValuesFastMode_t* fastMode);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfRefactor(hipsolverRfHandle_t handle);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfResetValues(int n,
|
|
int nnzA,
|
|
int* csrRowPtrA,
|
|
int* csrColIndA,
|
|
double* csrValA,
|
|
int* P,
|
|
int* Q,
|
|
hipsolverRfHandle_t handle);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfSetAlgs(hipsolverRfHandle_t handle,
|
|
hipsolverRfFactorization_t fact_alg,
|
|
hipsolverRfTriangularSolve_t solve_alg);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfSetMatrixFormat(hipsolverRfHandle_t handle,
|
|
hipsolverRfMatrixFormat_t format,
|
|
hipsolverRfUnitDiagonal_t diag);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfSetNumericProperties(hipsolverRfHandle_t handle,
|
|
double effective_zero,
|
|
double boost_val);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfSetResetValuesFastMode(
|
|
hipsolverRfHandle_t handle, hipsolverRfResetValuesFastMode_t fastMode);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfSolve(hipsolverRfHandle_t handle,
|
|
int* P,
|
|
int* Q,
|
|
int nrhs,
|
|
double* Temp,
|
|
int ldt,
|
|
double* XF,
|
|
int ldxf);
|
|
|
|
// batched routines
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfBatchSetupHost(int batchSize,
|
|
int n,
|
|
int nnzA,
|
|
int* h_csrRowPtrA,
|
|
int* h_csrColIndA,
|
|
double* h_csrValA_array[],
|
|
int nnzL,
|
|
int* h_csrRowPtrL,
|
|
int* h_csrColIndL,
|
|
double* h_csrValL,
|
|
int nnzU,
|
|
int* h_csrRowPtrU,
|
|
int* h_csrColIndU,
|
|
double* h_csrValU,
|
|
int* h_P,
|
|
int* h_Q,
|
|
hipsolverRfHandle_t handle);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfBatchAnalyze(hipsolverRfHandle_t handle);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfBatchRefactor(hipsolverRfHandle_t handle);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfBatchResetValues(int batchSize,
|
|
int n,
|
|
int nnzA,
|
|
int* csrRowPtrA,
|
|
int* csrColIndA,
|
|
double* csrValA_array[],
|
|
int* P,
|
|
int* Q,
|
|
hipsolverRfHandle_t handle);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfBatchSolve(hipsolverRfHandle_t handle,
|
|
int* P,
|
|
int* Q,
|
|
int nrhs,
|
|
double* Temp,
|
|
int ldt,
|
|
double* XF_array[],
|
|
int ldxf);
|
|
|
|
HIPSOLVER_EXPORT hipsolverStatus_t hipsolverRfBatchZeroPivot(hipsolverRfHandle_t handle,
|
|
int* position);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // HIPSOLVER_REFACTOR_H
|