1108 lines
37 KiB
C
1108 lines
37 KiB
C
/*
|
|
* Copyright 2015 NVIDIA Corporation. All rights reserved.
|
|
*
|
|
* NOTICE TO LICENSEE:
|
|
*
|
|
* This source code and/or documentation ("Licensed Deliverables") are
|
|
* subject to NVIDIA intellectual property rights under U.S. and
|
|
* international Copyright laws.
|
|
*
|
|
* These Licensed Deliverables contained herein is PROPRIETARY and
|
|
* CONFIDENTIAL to NVIDIA and is being provided under the terms and
|
|
* conditions of a form of NVIDIA software license agreement by and
|
|
* between NVIDIA and Licensee ("License Agreement") or electronically
|
|
* accepted by Licensee. Notwithstanding any terms or conditions to
|
|
* the contrary in the License Agreement, reproduction or disclosure
|
|
* of the Licensed Deliverables to any third party without the express
|
|
* written consent of NVIDIA is prohibited.
|
|
*
|
|
* NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
|
|
* LICENSE AGREEMENT, NVIDIA MAKES NO REPRESENTATION ABOUT THE
|
|
* SUITABILITY OF THESE LICENSED DELIVERABLES FOR ANY PURPOSE. IT IS
|
|
* PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND.
|
|
* NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THESE LICENSED
|
|
* DELIVERABLES, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY,
|
|
* NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
|
|
* NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
|
|
* LICENSE AGREEMENT, IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY
|
|
* SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY
|
|
* DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
|
|
* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
|
|
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
|
|
* OF THESE LICENSED DELIVERABLES.
|
|
*
|
|
* U.S. Government End Users. These Licensed Deliverables are a
|
|
* "commercial item" as that term is defined at 48 C.F.R. 2.101 (OCT
|
|
* 1995), consisting of "commercial computer software" and "commercial
|
|
* computer software documentation" as such terms are used in 48
|
|
* C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Government
|
|
* only as a commercial end item. Consistent with 48 C.F.R.12.212 and
|
|
* 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), all
|
|
* U.S. Government End Users acquire the Licensed Deliverables with
|
|
* only those rights set forth herein.
|
|
*
|
|
* Any use of the Licensed Deliverables in individual and commercial
|
|
* software must include, in the user documentation and internal
|
|
* comments to the code, the above Disclaimer and U.S. Government End
|
|
* Users Notice.
|
|
*/
|
|
|
|
#if !defined(CUSOLVERSP_LOWLEVEL_PREVIEW_H_)
|
|
#define CUSOLVERSP_LOWLEVEL_PREVIEW_H_
|
|
|
|
#include "cusolverSp.h"
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
struct csrluInfoHost;
|
|
typedef struct csrluInfoHost *csrluInfoHost_t;
|
|
|
|
struct csrqrInfoHost;
|
|
typedef struct csrqrInfoHost *csrqrInfoHost_t;
|
|
|
|
struct csrcholInfoHost;
|
|
typedef struct csrcholInfoHost *csrcholInfoHost_t;
|
|
|
|
struct csrcholInfo;
|
|
typedef struct csrcholInfo *csrcholInfo_t;
|
|
|
|
/*
|
|
* Low level API for CPU LU
|
|
*
|
|
*/
|
|
cusolverStatus_t CUSOLVERAPI
|
|
cusolverSpCreateCsrluInfoHost(csrluInfoHost_t *info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI
|
|
cusolverSpDestroyCsrluInfoHost(csrluInfoHost_t info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpXcsrluAnalysisHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrluInfoHost_t info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrluBufferInfoHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const float * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrluInfoHost_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrluBufferInfoHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const double * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrluInfoHost_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrluBufferInfoHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrluInfoHost_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrluBufferInfoHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuDoubleComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrluInfoHost_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrluFactorHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const float * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrluInfoHost_t info,
|
|
float pivot_threshold,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrluFactorHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const double * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrluInfoHost_t info,
|
|
double pivot_threshold,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrluFactorHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrluInfoHost_t info,
|
|
float pivot_threshold,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrluFactorHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuDoubleComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrluInfoHost_t info,
|
|
double pivot_threshold,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrluZeroPivotHost(
|
|
cusolverSpHandle_t handle,
|
|
csrluInfoHost_t info,
|
|
float tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrluZeroPivotHost(
|
|
cusolverSpHandle_t handle,
|
|
csrluInfoHost_t info,
|
|
double tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrluZeroPivotHost(
|
|
cusolverSpHandle_t handle,
|
|
csrluInfoHost_t info,
|
|
float tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrluZeroPivotHost(
|
|
cusolverSpHandle_t handle,
|
|
csrluInfoHost_t info,
|
|
double tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrluSolveHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
const float * b,
|
|
float * x,
|
|
csrluInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrluSolveHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
const double * b,
|
|
double * x,
|
|
csrluInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrluSolveHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
const cuComplex * b,
|
|
cuComplex * x,
|
|
csrluInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrluSolveHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
const cuDoubleComplex *b,
|
|
cuDoubleComplex * x,
|
|
csrluInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpXcsrluNnzHost(
|
|
cusolverSpHandle_t handle,
|
|
int * nnzLRef,
|
|
int * nnzURef,
|
|
csrluInfoHost_t info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrluExtractHost(
|
|
cusolverSpHandle_t handle,
|
|
int * P,
|
|
int * Q,
|
|
const cusparseMatDescr_t descrL,
|
|
float * csrValL,
|
|
int * csrRowPtrL,
|
|
int * csrColIndL,
|
|
const cusparseMatDescr_t descrU,
|
|
float * csrValU,
|
|
int * csrRowPtrU,
|
|
int * csrColIndU,
|
|
csrluInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrluExtractHost(
|
|
cusolverSpHandle_t handle,
|
|
int * P,
|
|
int * Q,
|
|
const cusparseMatDescr_t descrL,
|
|
double * csrValL,
|
|
int * csrRowPtrL,
|
|
int * csrColIndL,
|
|
const cusparseMatDescr_t descrU,
|
|
double * csrValU,
|
|
int * csrRowPtrU,
|
|
int * csrColIndU,
|
|
csrluInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrluExtractHost(
|
|
cusolverSpHandle_t handle,
|
|
int * P,
|
|
int * Q,
|
|
const cusparseMatDescr_t descrL,
|
|
cuComplex * csrValL,
|
|
int * csrRowPtrL,
|
|
int * csrColIndL,
|
|
const cusparseMatDescr_t descrU,
|
|
cuComplex * csrValU,
|
|
int * csrRowPtrU,
|
|
int * csrColIndU,
|
|
csrluInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrluExtractHost(
|
|
cusolverSpHandle_t handle,
|
|
int * P,
|
|
int * Q,
|
|
const cusparseMatDescr_t descrL,
|
|
cuDoubleComplex * csrValL,
|
|
int * csrRowPtrL,
|
|
int * csrColIndL,
|
|
const cusparseMatDescr_t descrU,
|
|
cuDoubleComplex * csrValU,
|
|
int * csrRowPtrU,
|
|
int * csrColIndU,
|
|
csrluInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
/*
|
|
* Low level API for CPU QR
|
|
*
|
|
*/
|
|
cusolverStatus_t CUSOLVERAPI
|
|
cusolverSpCreateCsrqrInfoHost(csrqrInfoHost_t *info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI
|
|
cusolverSpDestroyCsrqrInfoHost(csrqrInfoHost_t info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpXcsrqrAnalysisHost(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrqrInfoHost_t info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrqrBufferInfoHost(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const float * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrqrInfoHost_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrqrBufferInfoHost(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const double * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrqrInfoHost_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrqrBufferInfoHost(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrqrInfoHost_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrqrBufferInfoHost(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuDoubleComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrqrInfoHost_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrqrSetupHost(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const float * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
float mu,
|
|
csrqrInfoHost_t info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrqrSetupHost(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const double * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
double mu,
|
|
csrqrInfoHost_t info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrqrSetupHost(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
cuComplex mu,
|
|
csrqrInfoHost_t info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrqrSetupHost(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuDoubleComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
cuDoubleComplex mu,
|
|
csrqrInfoHost_t info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrqrFactorHost(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
float * b,
|
|
float * x,
|
|
csrqrInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrqrFactorHost(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
double * b,
|
|
double * x,
|
|
csrqrInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrqrFactorHost(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
cuComplex * b,
|
|
cuComplex * x,
|
|
csrqrInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrqrFactorHost(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
cuDoubleComplex * b,
|
|
cuDoubleComplex * x,
|
|
csrqrInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrqrZeroPivotHost(
|
|
cusolverSpHandle_t handle,
|
|
csrqrInfoHost_t info,
|
|
float tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrqrZeroPivotHost(
|
|
cusolverSpHandle_t handle,
|
|
csrqrInfoHost_t info,
|
|
double tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrqrZeroPivotHost(
|
|
cusolverSpHandle_t handle,
|
|
csrqrInfoHost_t info,
|
|
float tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrqrZeroPivotHost(
|
|
cusolverSpHandle_t handle,
|
|
csrqrInfoHost_t info,
|
|
double tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrqrSolveHost(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
float * b,
|
|
float * x,
|
|
csrqrInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrqrSolveHost(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
double * b,
|
|
double * x,
|
|
csrqrInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrqrSolveHost(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
cuComplex * b,
|
|
cuComplex * x,
|
|
csrqrInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrqrSolveHost(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
cuDoubleComplex * b,
|
|
cuDoubleComplex * x,
|
|
csrqrInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
/*
|
|
* Low level API for GPU QR
|
|
*
|
|
*/
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpXcsrqrAnalysis(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrqrInfo_t info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrqrBufferInfo(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const float * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrqrInfo_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrqrBufferInfo(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const double * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrqrInfo_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrqrBufferInfo(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrqrInfo_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrqrBufferInfo(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuDoubleComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrqrInfo_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrqrSetup(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const float * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
float mu,
|
|
csrqrInfo_t info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrqrSetup(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const double * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
double mu,
|
|
csrqrInfo_t info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrqrSetup(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
cuComplex mu,
|
|
csrqrInfo_t info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrqrSetup(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuDoubleComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
cuDoubleComplex mu,
|
|
csrqrInfo_t info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrqrFactor(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
float * b,
|
|
float * x,
|
|
csrqrInfo_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrqrFactor(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
double * b,
|
|
double * x,
|
|
csrqrInfo_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrqrFactor(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
cuComplex * b,
|
|
cuComplex * x,
|
|
csrqrInfo_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrqrFactor(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
int nnzA,
|
|
cuDoubleComplex * b,
|
|
cuDoubleComplex * x,
|
|
csrqrInfo_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrqrZeroPivot(
|
|
cusolverSpHandle_t handle,
|
|
csrqrInfo_t info,
|
|
float tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrqrZeroPivot(
|
|
cusolverSpHandle_t handle,
|
|
csrqrInfo_t info,
|
|
double tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrqrZeroPivot(
|
|
cusolverSpHandle_t handle,
|
|
csrqrInfo_t info,
|
|
float tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrqrZeroPivot(
|
|
cusolverSpHandle_t handle,
|
|
csrqrInfo_t info,
|
|
double tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrqrSolve(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
float * b,
|
|
float * x,
|
|
csrqrInfo_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrqrSolve(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
double * b,
|
|
double * x,
|
|
csrqrInfo_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrqrSolve(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
cuComplex * b,
|
|
cuComplex * x,
|
|
csrqrInfo_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrqrSolve(
|
|
cusolverSpHandle_t handle,
|
|
int m,
|
|
int n,
|
|
cuDoubleComplex * b,
|
|
cuDoubleComplex * x,
|
|
csrqrInfo_t info,
|
|
void * pBuffer);
|
|
|
|
/*
|
|
* Low level API for CPU Cholesky
|
|
*
|
|
*/
|
|
cusolverStatus_t CUSOLVERAPI
|
|
cusolverSpCreateCsrcholInfoHost(csrcholInfoHost_t *info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI
|
|
cusolverSpDestroyCsrcholInfoHost(csrcholInfoHost_t info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpXcsrcholAnalysisHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrcholInfoHost_t info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrcholBufferInfoHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const float * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrcholInfoHost_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrcholBufferInfoHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const double * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrcholInfoHost_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrcholBufferInfoHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrcholInfoHost_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrcholBufferInfoHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuDoubleComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrcholInfoHost_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrcholFactorHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const float * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrcholInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrcholFactorHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const double * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrcholInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrcholFactorHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrcholInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrcholFactorHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuDoubleComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrcholInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrcholZeroPivotHost(
|
|
cusolverSpHandle_t handle,
|
|
csrcholInfoHost_t info,
|
|
float tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrcholZeroPivotHost(
|
|
cusolverSpHandle_t handle,
|
|
csrcholInfoHost_t info,
|
|
double tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrcholZeroPivotHost(
|
|
cusolverSpHandle_t handle,
|
|
csrcholInfoHost_t info,
|
|
float tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrcholZeroPivotHost(
|
|
cusolverSpHandle_t handle,
|
|
csrcholInfoHost_t info,
|
|
double tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrcholSolveHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
const float * b,
|
|
float * x,
|
|
csrcholInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrcholSolveHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
const double * b,
|
|
double * x,
|
|
csrcholInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrcholSolveHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
const cuComplex * b,
|
|
cuComplex * x,
|
|
csrcholInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrcholSolveHost(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
const cuDoubleComplex *b,
|
|
cuDoubleComplex * x,
|
|
csrcholInfoHost_t info,
|
|
void * pBuffer);
|
|
|
|
/*
|
|
* Low level API for GPU Cholesky
|
|
*
|
|
*/
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCreateCsrcholInfo(csrcholInfo_t *info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDestroyCsrcholInfo(csrcholInfo_t info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpXcsrcholAnalysis(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrcholInfo_t info);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrcholBufferInfo(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const float * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrcholInfo_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrcholBufferInfo(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const double * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrcholInfo_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrcholBufferInfo(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrcholInfo_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrcholBufferInfo(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuDoubleComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrcholInfo_t info,
|
|
size_t * internalDataInBytes,
|
|
size_t * workspaceInBytes);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrcholFactor(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const float * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrcholInfo_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrcholFactor(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const double * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrcholInfo_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrcholFactor(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrcholInfo_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrcholFactor(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
int nnzA,
|
|
const cusparseMatDescr_t descrA,
|
|
const cuDoubleComplex * csrValA,
|
|
const int * csrRowPtrA,
|
|
const int * csrColIndA,
|
|
csrcholInfo_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrcholZeroPivot(
|
|
cusolverSpHandle_t handle,
|
|
csrcholInfo_t info,
|
|
float tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrcholZeroPivot(
|
|
cusolverSpHandle_t handle,
|
|
csrcholInfo_t info,
|
|
double tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrcholZeroPivot(
|
|
cusolverSpHandle_t handle,
|
|
csrcholInfo_t info,
|
|
float tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrcholZeroPivot(
|
|
cusolverSpHandle_t handle,
|
|
csrcholInfo_t info,
|
|
double tol,
|
|
int * position);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrcholSolve(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
const float * b,
|
|
float * x,
|
|
csrcholInfo_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrcholSolve(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
const double * b,
|
|
double * x,
|
|
csrcholInfo_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrcholSolve(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
const cuComplex * b,
|
|
cuComplex * x,
|
|
csrcholInfo_t info,
|
|
void * pBuffer);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrcholSolve(
|
|
cusolverSpHandle_t handle,
|
|
int n,
|
|
const cuDoubleComplex *b,
|
|
cuDoubleComplex * x,
|
|
csrcholInfo_t info,
|
|
void * pBuffer);
|
|
|
|
/*
|
|
* "diag" is a device array of size N.
|
|
* cusolverSp<t>csrcholDiag returns diag(L) to "diag" where A(P,P) = L*L**T
|
|
* "diag" can estimate det(A) because det(A(P,P)) = det(A) = det(L)^2 if A =
|
|
* L*L**T.
|
|
*
|
|
* cusolverSp<t>csrcholDiag must be called after cusolverSp<t>csrcholFactor.
|
|
* otherwise "diag" is wrong.
|
|
*/
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpScsrcholDiag(
|
|
cusolverSpHandle_t handle,
|
|
csrcholInfo_t info,
|
|
float * diag);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpDcsrcholDiag(
|
|
cusolverSpHandle_t handle,
|
|
csrcholInfo_t info,
|
|
double * diag);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpCcsrcholDiag(
|
|
cusolverSpHandle_t handle,
|
|
csrcholInfo_t info,
|
|
float * diag);
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverSpZcsrcholDiag(
|
|
cusolverSpHandle_t handle,
|
|
csrcholInfo_t info,
|
|
double * diag);
|
|
|
|
#if defined(__cplusplus)
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
#endif // CUSOLVERSP_LOWLEVEL_PREVIEW_H_
|