![]() |
QMCPACK
|
implements matrix inversion via cuSolverDN More...
Public Member Functions | |
template<typename TMAT , typename TREAL , typename = std::enable_if_t<std::is_same<TMAT, T_FP>::value>> | |
std::enable_if_t< std::is_same< TMAT, T_FP >::value > | invert_transpose (const Matrix< TMAT > &logdetT, Matrix< TMAT > &Ainv, Matrix< TMAT, SYCLAllocator< TMAT >> &Ainv_gpu, std::complex< TREAL > &log_value, sycl::queue &m_queue) |
compute the inverse of the transpose of matrix A and its determinant value in log when T_FP and TMAT are the same More... | |
template<typename TMAT , typename TREAL , typename = std::enable_if_t<!std::is_same<TMAT, T_FP>::value>> | |
std::enable_if_t<!std::is_same< TMAT, T_FP >::value > | invert_transpose (const Matrix< TMAT > &logdetT, Matrix< TMAT > &Ainv, Matrix< TMAT, SYCLAllocator< TMAT >> &Ainv_gpu, std::complex< TREAL > &log_value, sycl::queue &m_queue) |
compute the inverse of the transpose of matrix A and its determinant value in log when T_FP and TMAT are not the same More... | |
Private Member Functions | |
void | resize (int norb, sycl::queue &m_queue) |
resize the internal storage More... | |
Private Attributes | |
Matrix< T_FP, SYCLAllocator< T_FP > > | Mat1_gpu |
scratch memory for cusolverDN More... | |
Vector< std::int64_t, SYCLAllocator< std::int64_t > > | ipiv |
pivot array + info More... | |
Vector< T_FP, SYCLAllocator< T_FP > > | workspace |
workspace More... | |
std::int64_t | getrf_ws = 0 |
std::int64_t | getri_ws = 0 |
implements matrix inversion via cuSolverDN
T_FP | high precision for matrix inversion, T_FP >= T |
Definition at line 29 of file syclSolverInverter.hpp.
|
inline |
compute the inverse of the transpose of matrix A and its determinant value in log when T_FP and TMAT are the same
TREAL | real type |
Definition at line 62 of file syclSolverInverter.hpp.
References Matrix< T, Alloc >::data(), qmcplusplus::cusolver::getrf(), syclSolverInverter< T_FP >::getrf_ws, qmcplusplus::rocsolver::getri(), syclSolverInverter< T_FP >::getri_ws, syclSolverInverter< T_FP >::ipiv, syclSolverInverter< T_FP >::Mat1_gpu, syclSolverInverter< T_FP >::resize(), Matrix< T, Alloc >::rows(), Matrix< T, Alloc >::size(), qmcplusplus::syclBLAS::transpose(), and syclSolverInverter< T_FP >::workspace.
Referenced by qmcplusplus::test_inverse().
|
inline |
compute the inverse of the transpose of matrix A and its determinant value in log when T_FP and TMAT are not the same
TREAL | real type |
Definition at line 100 of file syclSolverInverter.hpp.
References qmcplusplus::syclBLAS::copy_n(), Matrix< T, Alloc >::data(), qmcplusplus::cusolver::getrf(), syclSolverInverter< T_FP >::getrf_ws, qmcplusplus::rocsolver::getri(), syclSolverInverter< T_FP >::getri_ws, syclSolverInverter< T_FP >::ipiv, qmcplusplus::isnan(), syclSolverInverter< T_FP >::Mat1_gpu, norm(), syclSolverInverter< T_FP >::resize(), Matrix< T, Alloc >::rows(), Matrix< T, Alloc >::size(), qmcplusplus::syclBLAS::transpose(), and syclSolverInverter< T_FP >::workspace.
|
inlineprivate |
resize the internal storage
norb | number of electrons/orbitals |
delay,maximum | delay 0<delay<=norb |
Definition at line 44 of file syclSolverInverter.hpp.
References syclSolverInverter< T_FP >::getrf_ws, syclSolverInverter< T_FP >::getri_ws, syclSolverInverter< T_FP >::ipiv, syclSolverInverter< T_FP >::Mat1_gpu, and syclSolverInverter< T_FP >::workspace.
Referenced by syclSolverInverter< T_FP >::invert_transpose().
|
private |
Definition at line 37 of file syclSolverInverter.hpp.
Referenced by syclSolverInverter< T_FP >::invert_transpose(), and syclSolverInverter< T_FP >::resize().
|
private |
Definition at line 38 of file syclSolverInverter.hpp.
Referenced by syclSolverInverter< T_FP >::invert_transpose(), and syclSolverInverter< T_FP >::resize().
|
private |
pivot array + info
Definition at line 34 of file syclSolverInverter.hpp.
Referenced by syclSolverInverter< T_FP >::invert_transpose(), and syclSolverInverter< T_FP >::resize().
|
private |
scratch memory for cusolverDN
Definition at line 32 of file syclSolverInverter.hpp.
Referenced by syclSolverInverter< T_FP >::invert_transpose(), and syclSolverInverter< T_FP >::resize().
|
private |
workspace
Definition at line 36 of file syclSolverInverter.hpp.
Referenced by syclSolverInverter< T_FP >::invert_transpose(), and syclSolverInverter< T_FP >::resize().