/* * 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. * cusolverSpcsrcholDiag 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. * * cusolverSpcsrcholDiag must be called after cusolverSpcsrcholFactor. * 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_