Compadre  1.5.7
Classes | Functions
Compadre::GMLS_LinearAlgebra Namespace Reference

Classes

struct  Functor_TestBatchedTeamVectorSolveUTV
 

Functions

template<typename A_layout , typename B_layout , typename X_layout >
void batchQRPivotingSolve (ParallelManager pm, double *A, int lda, int nda, double *B, int ldb, int ndb, int M, int N, int NRHS, const int num_matrices, const bool implicit_RHS=true)
 Solves a batch of problems with QR+Pivoting. More...
 
template void batchQRPivotingSolve< layout_right, layout_right, layout_right > (ParallelManager, double *, int, int, double *, int, int, int, int, int, const int, const bool)
 
template void batchQRPivotingSolve< layout_right, layout_right, layout_left > (ParallelManager, double *, int, int, double *, int, int, int, int, int, const int, const bool)
 
template void batchQRPivotingSolve< layout_right, layout_left, layout_right > (ParallelManager, double *, int, int, double *, int, int, int, int, int, const int, const bool)
 
template void batchQRPivotingSolve< layout_right, layout_left, layout_left > (ParallelManager, double *, int, int, double *, int, int, int, int, int, const int, const bool)
 
template void batchQRPivotingSolve< layout_left, layout_right, layout_right > (ParallelManager, double *, int, int, double *, int, int, int, int, int, const int, const bool)
 
template void batchQRPivotingSolve< layout_left, layout_right, layout_left > (ParallelManager, double *, int, int, double *, int, int, int, int, int, const int, const bool)
 
template void batchQRPivotingSolve< layout_left, layout_left, layout_right > (ParallelManager, double *, int, int, double *, int, int, int, int, int, const int, const bool)
 
template void batchQRPivotingSolve< layout_left, layout_left, layout_left > (ParallelManager, double *, int, int, double *, int, int, int, int, int, const int, const bool)
 
KOKKOS_INLINE_FUNCTION void largestTwoEigenvectorsThreeByThreeSymmetric (const member_type &teamMember, scratch_matrix_right_type V, scratch_matrix_right_type PtP, const int dimensions, pool_type &random_number_pool)
 Calculates two eigenvectors corresponding to two dominant eigenvalues. More...
 

Function Documentation

◆ batchQRPivotingSolve()

template<typename A_layout , typename B_layout , typename X_layout >
void Compadre::GMLS_LinearAlgebra::batchQRPivotingSolve ( ParallelManager  pm,
double *  A,
int  lda,
int  nda,
double *  B,
int  ldb,
int  ndb,
int  M,
int  N,
int  NRHS,
const int  num_matrices,
const bool  implicit_RHS = true 
)

Solves a batch of problems with QR+Pivoting.

~ Note: Very strong assumption on B. ~

A contains num_matrices * lda * nda data which is num_matrices different (lda x nda) matrices with valid entries of size (M x N), and B contains num_matrices * ldb * ndb data which is num_matrices different (ldb x ndb) right hand sides. B is assumed to have one of two forms:

  • $M==N$, the valid entries are the first (N X NRHS)
  • $M>N$, the valid entries are the first (NRHS) i.e. for this case, B is intended to store non-zero entries from a diagonal matrix (as a vector). For the $k^{th}$ matrix, the (m,m) entry of a diagonal matrix would here be stored in the $m^{th}$ position.
Parameters
pm[in] - manager class for team and thread parallelism
A[in/out] - matrix A (in), meaningless workspace output (out)
lda[in] - row dimension of each matrix in A
nda[in] - columns dimension of each matrix in A
B[in/out] - right hand sides (in), solution (out)
ldb[in] - row dimension of each matrix in B
ndb[in] - column dimension of each matrix in B
M[in] - number of rows containing data (maximum rows over everything in batch) in A
N[in] - number of columns containing data in each matrix in A
NRHS[in] - number of columns containing data in each matrix in B
num_matrices[in] - number of problems
implicit_RHS[in] - determines whether RHS will be stored implicitly. If true, instead of RHS storing the full sqrt(W) explicitly, only the diagonal entries of sqrt(W) will be stored as a 1D array beginning at entry with matrix coordinate (0,0).

Definition at line 186 of file Compadre_LinearAlgebra.cpp.

◆ batchQRPivotingSolve< layout_left, layout_left, layout_left >()

template void Compadre::GMLS_LinearAlgebra::batchQRPivotingSolve< layout_left, layout_left, layout_left > ( ParallelManager  ,
double *  ,
int  ,
int  ,
double *  ,
int  ,
int  ,
int  ,
int  ,
int  ,
const int  ,
const bool   
)

◆ batchQRPivotingSolve< layout_left, layout_left, layout_right >()

template void Compadre::GMLS_LinearAlgebra::batchQRPivotingSolve< layout_left, layout_left, layout_right > ( ParallelManager  ,
double *  ,
int  ,
int  ,
double *  ,
int  ,
int  ,
int  ,
int  ,
int  ,
const int  ,
const bool   
)

◆ batchQRPivotingSolve< layout_left, layout_right, layout_left >()

template void Compadre::GMLS_LinearAlgebra::batchQRPivotingSolve< layout_left, layout_right, layout_left > ( ParallelManager  ,
double *  ,
int  ,
int  ,
double *  ,
int  ,
int  ,
int  ,
int  ,
int  ,
const int  ,
const bool   
)

◆ batchQRPivotingSolve< layout_left, layout_right, layout_right >()

template void Compadre::GMLS_LinearAlgebra::batchQRPivotingSolve< layout_left, layout_right, layout_right > ( ParallelManager  ,
double *  ,
int  ,
int  ,
double *  ,
int  ,
int  ,
int  ,
int  ,
int  ,
const int  ,
const bool   
)

◆ batchQRPivotingSolve< layout_right, layout_left, layout_left >()

template void Compadre::GMLS_LinearAlgebra::batchQRPivotingSolve< layout_right, layout_left, layout_left > ( ParallelManager  ,
double *  ,
int  ,
int  ,
double *  ,
int  ,
int  ,
int  ,
int  ,
int  ,
const int  ,
const bool   
)

◆ batchQRPivotingSolve< layout_right, layout_left, layout_right >()

template void Compadre::GMLS_LinearAlgebra::batchQRPivotingSolve< layout_right, layout_left, layout_right > ( ParallelManager  ,
double *  ,
int  ,
int  ,
double *  ,
int  ,
int  ,
int  ,
int  ,
int  ,
const int  ,
const bool   
)

◆ batchQRPivotingSolve< layout_right, layout_right, layout_left >()

template void Compadre::GMLS_LinearAlgebra::batchQRPivotingSolve< layout_right, layout_right, layout_left > ( ParallelManager  ,
double *  ,
int  ,
int  ,
double *  ,
int  ,
int  ,
int  ,
int  ,
int  ,
const int  ,
const bool   
)

◆ batchQRPivotingSolve< layout_right, layout_right, layout_right >()

template void Compadre::GMLS_LinearAlgebra::batchQRPivotingSolve< layout_right, layout_right, layout_right > ( ParallelManager  ,
double *  ,
int  ,
int  ,
double *  ,
int  ,
int  ,
int  ,
int  ,
int  ,
const int  ,
const bool   
)

◆ largestTwoEigenvectorsThreeByThreeSymmetric()

KOKKOS_INLINE_FUNCTION void Compadre::GMLS_LinearAlgebra::largestTwoEigenvectorsThreeByThreeSymmetric ( const member_type teamMember,
scratch_matrix_right_type  V,
scratch_matrix_right_type  PtP,
const int  dimensions,
pool_type random_number_pool 
)

Calculates two eigenvectors corresponding to two dominant eigenvalues.

Parameters
teamMember[in] - Kokkos::TeamPolicy member type (created by parallel_for)
V[out] - dimension * dimension Kokkos View
PtP[in] - dimension * dimension Kokkos View
dimensions[in] - dimension of PtP

Definition at line 10 of file Compadre_LinearAlgebra_Definitions.hpp.