27#ifndef math_cusolverDnHandle_hpp
28#define math_cusolverDnHandle_hpp
35#include <cuda_runtime.h>
36#include <cusolverDn.h>
53struct cusolverDnHandle
57 cusolverDnHandle_t m_handle{ NULL };
69 explicit cusolverDnHandle(
bool create )
78 explicit cusolverDnHandle( cudaStream_t stream )
88 cusolverDnDestroy( m_handle );
95 cusolverStatus_t csec = cusolverDnCreate( &m_handle );
96 if( csec != CUSOLVER_STATUS_SUCCESS )
98 std::cerr << __FILE__ <<
" " << __LINE__ <<
" " << csec <<
"\n";
104 void create( cudaStream_t stream )
106 cusolverStatus_t csec = cusolverDnCreate( &m_handle );
107 if( csec != CUSOLVER_STATUS_SUCCESS )
109 std::cerr << __FILE__ <<
" " << __LINE__ <<
" " << csec <<
"\n";
116 void setStream( cudaStream_t stream )
118 if( m_handle == NULL )
120 std::cerr << __FILE__ <<
" " << __LINE__ <<
" cusolverDnHandle::setStream m_handle not set";
124 cusolverStatus_t csec = cusolverDnSetStream( m_handle, stream );
125 if( csec != CUSOLVER_STATUS_SUCCESS )
127 std::cerr << __FILE__ <<
" " << __LINE__ <<
"\n";
136 cusolverDnHandle_t operator()()
145 operator cusolverDnHandle_t()