ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
helper_cusolver.h
Go to the documentation of this file.
1// by zhanghaochong 20240529
2// The reason that I create a new helper file is the header file of helper_cuda.h is tooooo long
3
4#ifndef W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HSOLVER_KERNELS_CUDA_HELPER_CUSOLVER_H
5#define W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HSOLVER_KERNELS_CUDA_HELPER_CUSOLVER_H
6#ifdef __CUSOLVERMP
7#include <cusolverMp.h>
8
9const char* calGetErrorString(calError_t status)
10{
11 switch (status)
12 {
13 case CAL_OK:
14 return "CAL_OK";
15 case CAL_ERROR:
16 return "CAL_ERROR";
17 case CAL_ERROR_INVALID_PARAMETER:
18 return "CAL_ERROR_INVALID_PARAMETER";
19 case CAL_ERROR_INTERNAL:
20 return "CAL_ERROR_INTERNAL";
21 case CAL_ERROR_CUDA:
22 return "CAL_ERROR_CUDA";
23 case CAL_ERROR_UCC:
24 return "CAL_ERROR_UCC";
25 case CAL_ERROR_NOT_SUPPORTED:
26 return "CAL_ERROR_NOT_SUPPORTED";
27 case CAL_ERROR_INPROGRESS:
28 return "CAL_ERROR_INPROGRESS";
29 default:
30 return "CAL UNKNOWN ERROR";
31 }
32}
33
34#define CAL_CHECK(cmd) \
35 do \
36 { \
37 calError_t status = cmd; \
38 if (status != CAL_OK) \
39 { \
40 fprintf(stderr, "ERROR: %s %s %d\n", calGetErrorString(status), __FILE__, __LINE__); \
41 abort(); \
42 } \
43 } while (0)
44#endif
45
46const char* cusolverGetErrorString(cusolverStatus_t status)
47{
48 switch (status)
49 {
50 case CUSOLVER_STATUS_SUCCESS:
51 return "CUSOLVER_STATUS_SUCCESS";
52 case CUSOLVER_STATUS_NOT_INITIALIZED:
53 return "CUSOLVER_STATUS_NOT_INITIALIZED";
54 case CUSOLVER_STATUS_ALLOC_FAILED:
55 return "CUSOLVER_STATUS_ALLOC_FAILED";
56 case CUSOLVER_STATUS_INVALID_VALUE:
57 return "CUSOLVER_STATUS_INVALID_VALUE";
58 case CUSOLVER_STATUS_ARCH_MISMATCH:
59 return "CUSOLVER_STATUS_ARCH_MISMATCH";
60 case CUSOLVER_STATUS_MAPPING_ERROR:
61 return "CUSOLVER_STATUS_MAPPING_ERROR";
62 case CUSOLVER_STATUS_EXECUTION_FAILED:
63 return "CUSOLVER_STATUS_EXECUTION_FAILED";
64 case CUSOLVER_STATUS_INTERNAL_ERROR:
65 return "CUSOLVER_STATUS_INTERNAL_ERROR";
66 case CUSOLVER_STATUS_MATRIX_TYPE_NOT_SUPPORTED:
67 return "CUSOLVER_STATUS_MATRIX_TYPE_NOT_SUPPORTED";
68 case CUSOLVER_STATUS_NOT_SUPPORTED:
69 return "CUSOLVER_STATUS_NOT_SUPPORTED";
70 case CUSOLVER_STATUS_ZERO_PIVOT:
71 return "CUSOLVER_STATUS_ZERO_PIVOT";
72 case CUSOLVER_STATUS_INVALID_LICENSE:
73 return "CUSOLVER_STATUS_INVALID_LICENSE";
74 case CUSOLVER_STATUS_IRS_PARAMS_NOT_INITIALIZED:
75 return "CUSOLVER_STATUS_IRS_PARAMS_NOT_INITIALIZED";
76 case CUSOLVER_STATUS_IRS_PARAMS_INVALID:
77 return "CUSOLVER_STATUS_IRS_PARAMS_INVALID";
78 case CUSOLVER_STATUS_IRS_PARAMS_INVALID_PREC:
79 return "CUSOLVER_STATUS_IRS_PARAMS_INVALID_PREC";
80 case CUSOLVER_STATUS_IRS_PARAMS_INVALID_REFINE:
81 return "CUSOLVER_STATUS_IRS_PARAMS_INVALID_REFINE";
82 case CUSOLVER_STATUS_IRS_PARAMS_INVALID_MAXITER:
83 return "CUSOLVER_STATUS_IRS_PARAMS_INVALID_MAXITER";
84 case CUSOLVER_STATUS_IRS_INTERNAL_ERROR:
85 return "CUSOLVER_STATUS_IRS_INTERNAL_ERROR";
86 case CUSOLVER_STATUS_IRS_NOT_SUPPORTED:
87 return "CUSOLVER_STATUS_IRS_NOT_SUPPORTED";
88 case CUSOLVER_STATUS_IRS_OUT_OF_RANGE:
89 return "CUSOLVER_STATUS_IRS_OUT_OF_RANGE";
90 case CUSOLVER_STATUS_IRS_NRHS_NOT_SUPPORTED_FOR_REFINE_GMRES:
91 return "CUSOLVER_STATUS_IRS_NRHS_NOT_SUPPORTED_FOR_REFINE_GMRES";
92 case CUSOLVER_STATUS_IRS_INFOS_NOT_INITIALIZED:
93 return "CUSOLVER_STATUS_IRS_INFOS_NOT_INITIALIZED";
94 case CUSOLVER_STATUS_IRS_INFOS_NOT_DESTROYED:
95 return "CUSOLVER_STATUS_IRS_INFOS_NOT_DESTROYED";
96 case CUSOLVER_STATUS_IRS_MATRIX_SINGULAR:
97 return "CUSOLVER_STATUS_IRS_MATRIX_SINGULAR";
98 case CUSOLVER_STATUS_INVALID_WORKSPACE:
99 return "CUSOLVER_STATUS_INVALID_WORKSPACE";
100 default:
101 return "CUSOLVER UNKNOWN ERROR";
102 }
103}
104
105#define CUSOLVER_CHECK(cmd) \
106 do \
107 { \
108 cusolverStatus_t status = cmd; \
109 if (status != CUSOLVER_STATUS_SUCCESS) \
110 { \
111 fprintf(stderr, "ERROR: %s %s %d\n", cusolverGetErrorString(status), __FILE__, __LINE__); \
112 abort(); \
113 } \
114 } while (0)
115
116#endif // W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HSOLVER_KERNELS_CUDA_HELPER_CUSOLVER_H
const char * cusolverGetErrorString(cusolverStatus_t status)
Definition helper_cusolver.h:46