QMCPACK
cusolver.hpp File Reference
+ Include dependency graph for cusolver.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 qmcplusplus
 helper functions for EinsplineSetBuilder
 
 qmcplusplus::cusolver
 interface to cusolver calls for different data types S/C/D/Z
 

Macros

#define cusolverErrorCheck(ans, cause)
 

Functions

void cusolverAssert (cusolverStatus_t code, const std::string &cause, const char *file, int line, bool abort=true)
 prints cusolver error messages. Always use cusolverErrorCheck macro. More...
 
cusolverStatus_t getrf_bufferSize (cusolverDnHandle_t &handle, int m, int n, double *A, int lda, int *lwork)
 
cusolverStatus_t getrf_bufferSize (cusolverDnHandle_t &handle, int m, int n, std::complex< double > *A, int lda, int *lwork)
 
cusolverStatus_t getrf (cusolverDnHandle_t &handle, int m, int n, double *A, int lda, double *work, int *ipiv, int *info)
 
cusolverStatus_t getrf (cusolverDnHandle_t &handle, int m, int n, std::complex< double > *A, int lda, std::complex< double > *work, int *ipiv, int *info)
 
cusolverStatus_t getrs (cusolverDnHandle_t &handle, const cublasOperation_t &transa, int m, int n, const double *A, int lda, int *ipiv, double *B, int ldb, int *info)
 
cusolverStatus_t getrs (cusolverDnHandle_t &handle, const cublasOperation_t &transa, int m, int n, const std::complex< double > *A, int lda, int *ipiv, std::complex< double > *B, int ldb, int *info)
 

Macro Definition Documentation

◆ cusolverErrorCheck

#define cusolverErrorCheck (   ans,
  cause 
)
Value:
{ \
cusolverAssert((ans), cause, __FILE__, __LINE__); \
}

Definition at line 21 of file cusolver.hpp.

Referenced by cuSolverInverter< T_FP >::cuSolverInverter(), cuSolverInverter< T_FP >::invert_transpose(), cuSolverInverter< T_FP >::resize(), and cuSolverInverter< T_FP >::~cuSolverInverter().

Function Documentation

◆ cusolverAssert()

void cusolverAssert ( cusolverStatus_t  code,
const std::string &  cause,
const char *  file,
int  line,
bool  abort = true 
)
inline

prints cusolver error messages. Always use cusolverErrorCheck macro.

Definition at line 26 of file cusolver.hpp.

31 {
32  if (code != CUSOLVER_STATUS_SUCCESS)
33  {
34  std::string cusolver_error;
35  switch (code)
36  {
37  case CUSOLVER_STATUS_NOT_INITIALIZED:
38  cusolver_error = "CUSOLVER_STATUS_NOT_INITIALIZED";
39  break;
40  case CUSOLVER_STATUS_ALLOC_FAILED:
41  cusolver_error = "CUSOLVER_STATUS_ALLOC_FAILED";
42  break;
43  case CUSOLVER_STATUS_INVALID_VALUE:
44  cusolver_error = "CUSOLVER_STATUS_INVALID_VALUE";
45  break;
46  case CUSOLVER_STATUS_ARCH_MISMATCH:
47  cusolver_error = "CUSOLVER_STATUS_ARCH_MISMATCH";
48  break;
49  case CUSOLVER_STATUS_EXECUTION_FAILED:
50  cusolver_error = "CUSOLVER_STATUS_EXECUTION_FAILED";
51  break;
52  case CUSOLVER_STATUS_INTERNAL_ERROR:
53  cusolver_error = "CUSOLVER_STATUS_INTERNAL_ERROR";
54  break;
55  case CUSOLVER_STATUS_MATRIX_TYPE_NOT_SUPPORTED:
56  cusolver_error = "CUSOLVER_STATUS_MATRIX_TYPE_NOT_SUPPORTED";
57  break;
58  default:
59  cusolver_error = "<unknown>";
60  }
61 
62  std::ostringstream err;
63  err << "cusolverAssert: " << cusolver_error << ", file " << file << " , line " << line << std::endl
64  << cause << std::endl;
65  std::cerr << err.str();
66  //if (abort) exit(code);
67  throw std::runtime_error(cause);
68  }
69 }