15#ifndef EIGEN_GPU_CUDSS_SUPPORT_H
16#define EIGEN_GPU_CUDSS_SUPPORT_H
19#include "./InternalHeaderCheck.h"
21#include "./GpuSupport.h"
29#if defined(CUDSS_VERSION) && CUDSS_VERSION >= 800
30#define EIGEN_HAS_CUDSS_SOLVER_CONFIG 1
32#define EIGEN_HAS_CUDSS_SOLVER_CONFIG 0
38#define EIGEN_CUDSS_CHECK(x) \
40 const cudssStatus_t _s = (x); \
41 if (_s != CUDSS_STATUS_SUCCESS) \
42 ::Eigen::gpu::internal::gpu_check_failed_code("cuDSS", static_cast<int>(_s), #x, __FILE__, __LINE__); \
49#if defined(CUDSS_VERSION) && CUDSS_VERSION >= 800
50using cudss_value_type_t = cudssDataType_t;
52using cudss_value_type_t = cudaDataType_t;
55constexpr cudss_value_type_t to_cudss_data_type(cudaDataType_t t) {
return static_cast<cudss_value_type_t
>(t); }
57template <
typename Scalar>
61struct cudss_spd_type<float> {
62 static constexpr cudssMatrixType_t value = CUDSS_MTYPE_SPD;
65struct cudss_spd_type<double> {
66 static constexpr cudssMatrixType_t value = CUDSS_MTYPE_SPD;
69struct cudss_spd_type<std::complex<float>> {
70 static constexpr cudssMatrixType_t value = CUDSS_MTYPE_HPD;
73struct cudss_spd_type<std::complex<double>> {
74 static constexpr cudssMatrixType_t value = CUDSS_MTYPE_HPD;
81template <
typename Scalar>
82struct cudss_hermitian_type;
85struct cudss_hermitian_type<float> {
86 static constexpr cudssMatrixType_t value = CUDSS_MTYPE_SYMMETRIC;
89struct cudss_hermitian_type<double> {
90 static constexpr cudssMatrixType_t value = CUDSS_MTYPE_SYMMETRIC;
93struct cudss_hermitian_type<std::complex<float>> {
94 static constexpr cudssMatrixType_t value = CUDSS_MTYPE_HERMITIAN;
97struct cudss_hermitian_type<std::complex<double>> {
98 static constexpr cudssMatrixType_t value = CUDSS_MTYPE_HERMITIAN;
101template <
typename StorageIndex>
102struct cudss_index_type;
105struct cudss_index_type<int> {
106 static constexpr cudaDataType_t value = CUDA_R_32I;
109struct cudss_index_type<int64_t> {
110 static constexpr cudaDataType_t value = CUDA_R_64I;
115template <
int UpLo,
int StorageOrder>
116struct cudss_view_type;
120 static constexpr cudssMatrixViewType_t value = CUDSS_MVIEW_UPPER;
124 static constexpr cudssMatrixViewType_t value = CUDSS_MVIEW_LOWER;
129 static constexpr cudssMatrixViewType_t value = CUDSS_MVIEW_LOWER;
133 static constexpr cudssMatrixViewType_t value = CUDSS_MVIEW_UPPER;
Namespace containing all symbols from the Eigen library.