namespace gpr::linalg::detailΒΆ
namespace detail {
// typedefs
typedef Kokkos::DefaultExecutionSpace exec_space;
typedef typename exec_space::memory_space mem_space;
typedef Kokkos::View<double**, Kokkos::LayoutLeft, mem_space> device_matrix_t;
typedef Kokkos::View<double*, mem_space> device_vector_t;
typedef Kokkos::View<double**, Kokkos::LayoutLeft, Kokkos::HostSpace, Kokkos::MemoryUnmanaged> host_matrix_t;
typedef Kokkos::View<const double**, Kokkos::LayoutLeft, Kokkos::HostSpace, Kokkos::MemoryUnmanaged> host_const_matrix_t;
typedef Kokkos::View<double*, Kokkos::HostSpace, Kokkos::MemoryUnmanaged> host_vector_t;
typedef Kokkos::View<const double*, Kokkos::HostSpace, Kokkos::MemoryUnmanaged> host_const_vector_t;
// structs
struct DevBuf;
struct DevInt;
struct DeviceState;
// classes
class CublasLib;
class CusolverLib;
// global functions
void check_cuda(cudaError_t err, const char* msg);
void check_cusolver(cusolverStatus_t s, const char* msg);
void check_cublas(cublasStatus_t s, const char* msg);
cusolverDnHandle_t& cusolver_handle();
cublasHandle_t& cublas_handle();
void h2d(double* dst, const double* src, size_t n);
void d2h(double* dst, const double* src, size_t n);
void ensure_kokkos();
host_const_matrix_t wrap(const EigenMatrix& M);
host_matrix_t wrap(EigenMatrix& M);
host_const_vector_t wrap(const Eigen::VectorXd& v);
host_vector_t wrap(Eigen::VectorXd& v);
device_matrix_t to_device(host_const_matrix_t h, const char* label);
device_vector_t to_device(host_const_vector_t h, const char* label);
void to_eigen(const device_matrix_t& d, EigenMatrix& M);
void to_eigen(const device_vector_t& d, Eigen::VectorXd& v);
} // namespace detail