31template<
class T,
size_t d>
93 cublasHandle_t handle;
94 cublasHandle_t handle_devres;
95 cusolverDnHandle_t handle_cusolver;
139 vector<MKL_INT> ipiv;
Provides shared types, platform headers, and basic definitions.
Converts between vector indices and combined linear indices.
Declares CUDA kernels for elementwise operations and numerical updates.
void set_identity(multi_array< T, 2 > &a)
Set matrix to identity.
void set_zero(multi_array< T, 2 > &a)
Set matrix to zero.
void set_const(multi_array< T, d > &a, T alpha)
Set vector or matrix to a constant value.
void transpose_inplace(multi_array< T, 2 > &a)
Transpose a square matrix inplace (intended for small matrices)
void svd(const multi_array< T, 2 > &input, multi_array< T, 2 > &U, multi_array< T, 2 > &V, multi_array< T, 1 > &sigma_diag, const blas_ops &blas)
Computes the singular value decomposition of the matrix input.
void qr(multi_array< T, 2 > &Q, multi_array< T, 2 > &R)
void ptw_mult_row(const multi_array< T, 2 > &a, const multi_array< T, 1 > &w, multi_array< T, 2 > &out)
Multiply every row of a matrix with a vector (i.e.
Core namespace for Ensign's numerical algorithms and data structures.
Provides contiguous multidimensional arrays for CPU and GPU storage.
Provides matrix and vector operations with optional GPU execution.
void matmul(const multi_array< T, 2 > &a, const multi_array< T, 2 > &b, multi_array< T, 2 > &c) const
Matrix multiplication (computes c = a b)
void matmul_transb(const multi_array< T, 2 > &a, const multi_array< T, 2 > &b, multi_array< T, 2 > &c) const
Matrix multiplication with second matrix transposed (computes c = a b^T)
void matvec_trans(const multi_array< T, 2 > &a, const multi_array< T, 1 > &b, multi_array< T, 1 > &c) const
Matrix vector multiplication with matrix transposed (c = a^T b)
void matmul_transa(const multi_array< T, 2 > &a, const multi_array< T, 2 > &b, multi_array< T, 2 > &c) const
Matrix multiplication with first matrix transposed (computes c = a^T b)
void matvec(const multi_array< T, 2 > &a, const multi_array< T, 1 > &b, multi_array< T, 1 > &c) const
Matrix vector multiplication (c = a b)
void matmul_transab(const multi_array< T, 2 > &a, const multi_array< T, 2 > &b, multi_array< T, 2 > &c) const
Matrix multiplication with both matrices transposed (computes c = a^T b^T)
void transpose(const multi_array< T, 2 > &in, multi_array< T, 2 > &out) const
Transpose a matrix.
Helper class to perform diagonalization of a symmetric matrix (also known as the Schur decomposition)...
void operator()(const multi_array< double, 2 > &CC, multi_array< double, 2 > &TT, multi_array< double, 1 > &diag_r)
Linear solver based on a LU decomposition.
void solve(multi_array< T, 1 > &xb)
Dense d-dimensional array stored contiguously in column-major order (i.e.
Provides numerical helpers and utilities for arrays and indices.