18 cudaStream_t m_stream =
nullptr;
19 cublasHandle_t m_cublas =
nullptr;
20 cusparseHandle_t m_cusparse =
nullptr;
21 cusolverDnHandle_t m_cusolver_dn =
nullptr;
22 cusolverSpHandle_t m_cusolver_sp =
nullptr;
23 bool m_pointer_mode_device =
false;
24 float m_reserve_ratio = 1.5f;
30 checkCudaErrors(cusparseCreate(&m_cusparse));
31 checkCudaErrors(cublasCreate(&m_cublas));
32 checkCudaErrors(cusolverDnCreate(&m_cusolver_dn));
33 checkCudaErrors(cusparseSetStream(m_cusparse, m_stream));
34 checkCudaErrors(cublasSetStream(m_cublas, m_stream));
35 checkCudaErrors(cusolverDnSetStream(m_cusolver_dn, m_stream));
36 checkCudaErrors(cusolverSpCreate(&m_cusolver_sp));
37 checkCudaErrors(cusolverSpSetStream(m_cusolver_sp, m_stream));
38 set_pointer_mode_host();
43 checkCudaErrors(cusparseDestroy(m_cusparse));
45 checkCudaErrors(cublasDestroy(m_cublas));
47 checkCudaErrors(cusolverDnDestroy(m_cusolver_dn));
49 checkCudaErrors(cusolverSpDestroy(m_cusolver_sp));
52 void stream(cudaStream_t s)
55 checkCudaErrors(cusparseSetStream(m_cusparse, m_stream));
56 checkCudaErrors(cublasSetStream(m_cublas, m_stream));
57 checkCudaErrors(cusolverDnSetStream(m_cusolver_dn, m_stream));
58 checkCudaErrors(cusolverSpSetStream(m_cusolver_sp, m_stream));
61 MUDA_INLINE
void set_pointer_mode_device()
63 if(m_pointer_mode_device)
65 checkCudaErrors(cusparseSetPointerMode(m_cusparse, CUSPARSE_POINTER_MODE_DEVICE));
66 checkCudaErrors(cublasSetPointerMode(m_cublas, CUBLAS_POINTER_MODE_DEVICE));
67 m_pointer_mode_device =
true;
70 MUDA_INLINE
void set_pointer_mode_host()
72 if(!m_pointer_mode_device)
74 checkCudaErrors(cusparseSetPointerMode(m_cusparse, CUSPARSE_POINTER_MODE_HOST));
75 checkCudaErrors(cublasSetPointerMode(m_cublas, CUBLAS_POINTER_MODE_HOST));
76 m_pointer_mode_device =
false;
79 cudaStream_t stream()
const {
return m_stream; }
80 cublasHandle_t cublas()
const {
return m_cublas; }
81 cusparseHandle_t cusparse()
const {
return m_cusparse; }
82 cusolverDnHandle_t cusolver_dn()
const {
return m_cusolver_dn; }
83 cusolverSpHandle_t cusolver_sp()
const {
return m_cusolver_sp; }
84 auto reserve_ratio()
const {
return m_reserve_ratio; }
Definition linear_system_context.h:28