Files
derek.holloway 7502bf64a4
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
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

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