|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if !defined(CUSOLVERMG_H_) |
|
|
#define CUSOLVERMG_H_ |
|
|
|
|
|
#include <stdint.h> |
|
|
#include "cusolverDn.h" |
|
|
|
|
|
#if defined(__cplusplus) |
|
|
extern "C" { |
|
|
#endif |
|
|
|
|
|
struct cusolverMgContext; |
|
|
typedef struct cusolverMgContext *cusolverMgHandle_t; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef enum { |
|
|
|
|
|
CUDALIBMG_GRID_MAPPING_ROW_MAJOR = 1, |
|
|
CUDALIBMG_GRID_MAPPING_COL_MAJOR = 0 |
|
|
|
|
|
} cusolverMgGridMapping_t; |
|
|
|
|
|
|
|
|
typedef void *cudaLibMgGrid_t; |
|
|
|
|
|
typedef void *cudaLibMgMatrixDesc_t; |
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverMgCreate(cusolverMgHandle_t *handle); |
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverMgDestroy(cusolverMgHandle_t handle); |
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverMgDeviceSelect( |
|
|
cusolverMgHandle_t handle, |
|
|
int nbDevices, |
|
|
int deviceId[]); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverMgCreateDeviceGrid( |
|
|
cudaLibMgGrid_t * grid, |
|
|
int32_t numRowDevices, |
|
|
int32_t numColDevices, |
|
|
const int32_t deviceId[], |
|
|
cusolverMgGridMapping_t mapping); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverMgDestroyGrid(cudaLibMgGrid_t grid); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverMgCreateMatrixDesc( |
|
|
cudaLibMgMatrixDesc_t *desc, |
|
|
int64_t numRows, |
|
|
int64_t numCols, |
|
|
int64_t rowBlockSize, |
|
|
int64_t colBlockSize, |
|
|
cudaDataType dataType, |
|
|
const cudaLibMgGrid_t grid); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI |
|
|
cusolverMgDestroyMatrixDesc(cudaLibMgMatrixDesc_t desc); |
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverMgSyevd_bufferSize( |
|
|
cusolverMgHandle_t handle, |
|
|
cusolverEigMode_t jobz, |
|
|
cublasFillMode_t uplo, |
|
|
int N, |
|
|
void * array_d_A[], |
|
|
int IA, |
|
|
int JA, |
|
|
cudaLibMgMatrixDesc_t descrA, |
|
|
void * W, |
|
|
cudaDataType dataTypeW, |
|
|
cudaDataType computeType, |
|
|
int64_t * lwork); |
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverMgSyevd( |
|
|
cusolverMgHandle_t handle, |
|
|
cusolverEigMode_t jobz, |
|
|
cublasFillMode_t uplo, |
|
|
int N, |
|
|
void * array_d_A[], |
|
|
int IA, |
|
|
int JA, |
|
|
cudaLibMgMatrixDesc_t descrA, |
|
|
void * W, |
|
|
cudaDataType dataTypeW, |
|
|
cudaDataType computeType, |
|
|
void * array_d_work[], |
|
|
int64_t lwork, |
|
|
int * info); |
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverMgGetrf_bufferSize( |
|
|
cusolverMgHandle_t handle, |
|
|
int M, |
|
|
int N, |
|
|
void * array_d_A[], |
|
|
int IA, |
|
|
int JA, |
|
|
cudaLibMgMatrixDesc_t descrA, |
|
|
int * array_d_IPIV[], |
|
|
cudaDataType computeType, |
|
|
int64_t * lwork); |
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverMgGetrf( |
|
|
cusolverMgHandle_t handle, |
|
|
int M, |
|
|
int N, |
|
|
void * array_d_A[], |
|
|
int IA, |
|
|
int JA, |
|
|
cudaLibMgMatrixDesc_t descrA, |
|
|
int * array_d_IPIV[], |
|
|
cudaDataType computeType, |
|
|
void * array_d_work[], |
|
|
int64_t lwork, |
|
|
int * info); |
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverMgGetrs_bufferSize( |
|
|
cusolverMgHandle_t handle, |
|
|
cublasOperation_t TRANS, |
|
|
int N, |
|
|
int NRHS, |
|
|
void * array_d_A[], |
|
|
int IA, |
|
|
int JA, |
|
|
cudaLibMgMatrixDesc_t descrA, |
|
|
int * array_d_IPIV[], |
|
|
void * array_d_B[], |
|
|
int IB, |
|
|
int JB, |
|
|
cudaLibMgMatrixDesc_t descrB, |
|
|
cudaDataType computeType, |
|
|
int64_t * lwork); |
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverMgGetrs( |
|
|
cusolverMgHandle_t handle, |
|
|
cublasOperation_t TRANS, |
|
|
int N, |
|
|
int NRHS, |
|
|
void * array_d_A[], |
|
|
int IA, |
|
|
int JA, |
|
|
cudaLibMgMatrixDesc_t descrA, |
|
|
int * array_d_IPIV[], |
|
|
void * array_d_B[], |
|
|
int IB, |
|
|
int JB, |
|
|
cudaLibMgMatrixDesc_t descrB, |
|
|
cudaDataType computeType, |
|
|
void * array_d_work[], |
|
|
int64_t lwork, |
|
|
int * info); |
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverMgPotrf_bufferSize( |
|
|
cusolverMgHandle_t handle, |
|
|
cublasFillMode_t uplo, |
|
|
int N, |
|
|
void * array_d_A[], |
|
|
int IA, |
|
|
int JA, |
|
|
cudaLibMgMatrixDesc_t descrA, |
|
|
cudaDataType computeType, |
|
|
int64_t * lwork); |
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverMgPotrf( |
|
|
cusolverMgHandle_t handle, |
|
|
cublasFillMode_t uplo, |
|
|
int N, |
|
|
void * array_d_A[], |
|
|
int IA, |
|
|
int JA, |
|
|
cudaLibMgMatrixDesc_t descrA, |
|
|
cudaDataType computeType, |
|
|
void * array_d_work[], |
|
|
int64_t lwork, |
|
|
int * h_info); |
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverMgPotrs_bufferSize( |
|
|
cusolverMgHandle_t handle, |
|
|
cublasFillMode_t uplo, |
|
|
int n, |
|
|
int nrhs, |
|
|
void * array_d_A[], |
|
|
int IA, |
|
|
int JA, |
|
|
cudaLibMgMatrixDesc_t descrA, |
|
|
void * array_d_B[], |
|
|
int IB, |
|
|
int JB, |
|
|
cudaLibMgMatrixDesc_t descrB, |
|
|
cudaDataType computeType, |
|
|
int64_t * lwork); |
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverMgPotrs( |
|
|
cusolverMgHandle_t handle, |
|
|
cublasFillMode_t uplo, |
|
|
int n, |
|
|
int nrhs, |
|
|
void * array_d_A[], |
|
|
int IA, |
|
|
int JA, |
|
|
cudaLibMgMatrixDesc_t descrA, |
|
|
void * array_d_B[], |
|
|
int IB, |
|
|
int JB, |
|
|
cudaLibMgMatrixDesc_t descrB, |
|
|
cudaDataType computeType, |
|
|
void * array_d_work[], |
|
|
int64_t lwork, |
|
|
int * h_info); |
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverMgPotri_bufferSize( |
|
|
cusolverMgHandle_t handle, |
|
|
cublasFillMode_t uplo, |
|
|
int N, |
|
|
void * array_d_A[], |
|
|
int IA, |
|
|
int JA, |
|
|
cudaLibMgMatrixDesc_t descrA, |
|
|
cudaDataType computeType, |
|
|
int64_t * lwork); |
|
|
|
|
|
cusolverStatus_t CUSOLVERAPI cusolverMgPotri( |
|
|
cusolverMgHandle_t handle, |
|
|
cublasFillMode_t uplo, |
|
|
int N, |
|
|
void * array_d_A[], |
|
|
int IA, |
|
|
int JA, |
|
|
cudaLibMgMatrixDesc_t descrA, |
|
|
cudaDataType computeType, |
|
|
void * array_d_work[], |
|
|
int64_t lwork, |
|
|
int * h_info); |
|
|
|
|
|
#if defined(__cplusplus) |
|
|
} |
|
|
#endif |
|
|
|
|
|
#endif |
|
|
|