17#if defined(NDA_HAVE_CUDA)
21namespace nda::lapack::f77 {
23 void gelss(
int m,
int n,
int nrhs,
double *a,
int lda,
double *b,
int ldb,
double *s,
double rcond,
int &rank,
double *work,
int lwork,
24 double *rwork,
int &info);
25 void gelss(
int m,
int n,
int nrhs, std::complex<double> *a,
int lda, std::complex<double> *b,
int ldb,
double *s,
double rcond,
int &rank,
26 std::complex<double> *work,
int lwork,
double *rwork,
int &info);
28 void gesvd(
char jobu,
char jobvt,
int m,
int n,
double *a,
int lda,
double *s,
double *u,
int ldu,
double *vt,
int ldvt,
double *work,
int lwork,
29 double *rwork,
int &info);
30 void gesvd(
char jobu,
char jobvt,
int m,
int n, std::complex<double> *a,
int lda,
double *s, std::complex<double> *u,
int ldu,
31 std::complex<double> *vt,
int ldvt, std::complex<double> *work,
int lwork,
double *rwork,
int &info);
33 void geqp3(
int m,
int n,
double *a,
int lda,
int *jpvt,
double *tau,
double *work,
int lwork,
double *rwork,
int &info);
34 void geqp3(
int m,
int n, std::complex<double> *a,
int lda,
int *jpvt, std::complex<double> *tau, std::complex<double> *work,
int lwork,
35 double *rwork,
int &info);
37 void orgqr(
int m,
int n,
int k,
double *a,
int lda,
double const *tau,
double *work,
int lwork,
int &info);
39 void ungqr(
int m,
int n,
int k, std::complex<double> *a,
int lda, std::complex<double>
const *tau, std::complex<double> *work,
int lwork,
42 void getrf(
int m,
int n,
double *a,
int lda,
int *ipiv,
int &info);
43 void getrf(
int m,
int n, std::complex<double> *a,
int lda,
int *ipiv,
int &info);
45 void getri(
int n,
double *a,
int lda,
int const *ipiv,
double *work,
int lwork,
int &info);
46 void getri(
int n, std::complex<double> *a,
int lda,
int const *ipiv, std::complex<double> *work,
int lwork,
int &info);
48 void gtsv(
int n,
int nrhs,
double *dl,
double *d,
double *du,
double *b,
int ldb,
int &info);
49 void gtsv(
int n,
int nrhs, std::complex<double> *dl, std::complex<double> *d, std::complex<double> *du, std::complex<double> *b,
int ldb,
52 void stev(
char j,
int n,
double *d,
double *e,
double *z,
int ldz,
double *work,
int &info);
54 void syev(
char jobz,
char uplo,
int n,
double *a,
int lda,
double *w,
double *work,
int lwork,
int &info);
56 void heev(
char jobz,
char uplo,
int n, std::complex<double> *a,
int lda,
double *w, std::complex<double> *work,
int lwork,
double *rwork,
59 void sygv(
int itype,
char jobz,
char uplo,
int n,
double *a,
int lda,
double *b,
int ldb,
double *w,
double *work,
int lwork,
int &info);
61 void hegv(
int itype,
char jobz,
char uplo,
int n, std::complex<double> *a,
int lda, std::complex<double> *b,
int ldb,
double *w,
62 std::complex<double> *work,
int lwork,
double *rwork,
int &info);
64 void getrs(
char op,
int n,
int nrhs,
double const *a,
int lda,
int const *ipiv,
double *b,
int ldb,
int &info);
65 void getrs(
char op,
int n,
int nrhs, std::complex<double>
const *a,
int lda,
int const *ipiv, std::complex<double> *b,
int ldb,
int &info);
67 void geev(
char jobvl,
char jobvr,
int n,
double *a,
int lda,
double *wr,
double *wi,
double *vl,
int ldvl,
double *vr,
int ldvr,
double *work,
68 int lwork,
int &info);
69 void geev(
char jobvl,
char jobvr,
int n, std::complex<double> *a,
int lda, std::complex<double> *w, std::complex<double> *vl,
int ldvl,
70 std::complex<double> *vr,
int ldvr, std::complex<double> *work,
int lwork,
double *rwork,
int &info);
75namespace nda::lapack {
Provides a C++ interface for the GPU versions of various LAPACK routines.
static constexpr bool has_C_layout
Constexpr variable that is true if the given nda::Array type has nda::C_layout.
int get_ncols(A const &a)
Get the number of columns of an nda::MemoryArray with rank 1 or 2 for BLAS/LAPACK calls.
int get_ld(A const &a)
Get the leading dimension of an nda::MemoryArray with rank 1 or 2 for BLAS/LAPACK calls.
static constexpr bool is_conj_array_expr
Constexpr variable that is true if the given type is a conjugate lazy expression.
static constexpr char get_op
Variable template that determines the BLAS matrix operation tag ('N','T','C') based on the given bool...
static constexpr bool has_F_layout
Constexpr variable that is true if the given nda::Array type has nda::F_layout.
MemoryArray decltype(auto) get_array(A &&a)
Get the underlying array of a conjugate lazy expression or return the array itself in case it is an n...