27#ifndef math_cusolverDnHandle_hpp
28#define math_cusolverDnHandle_hpp
32#include <cuda_runtime.h>
33#include <cusolverDn.h>
50struct cusolverDnHandle
54 cusolverDnHandle_t m_handle{ NULL };
66 explicit cusolverDnHandle(
bool create )
75 explicit cusolverDnHandle( cudaStream_t stream )
85 cusolverDnDestroy( m_handle );
92 cusolverStatus_t csec = cusolverDnCreate( &m_handle );
93 if( csec != CUSOLVER_STATUS_SUCCESS )
95 std::cerr << __FILE__ <<
" " << __LINE__ <<
" " << csec <<
"\n";
101 void create( cudaStream_t stream )
103 cusolverStatus_t csec = cusolverDnCreate( &m_handle );
104 if( csec != CUSOLVER_STATUS_SUCCESS )
106 std::cerr << __FILE__ <<
" " << __LINE__ <<
" " << csec <<
"\n";
113 void setStream( cudaStream_t stream )
115 if( m_handle == NULL )
117 std::cerr << __FILE__ <<
" " << __LINE__ <<
" cusolverDnHandle::setStream m_handle not set";
121 cusolverStatus_t csec = cusolverDnSetStream( m_handle, stream );
122 if( csec != CUSOLVER_STATUS_SUCCESS )
124 std::cerr << __FILE__ <<
" " << __LINE__ <<
"\n";
133 cusolverDnHandle_t operator()()
142 operator cusolverDnHandle_t()