Anasazi Version of the Day
Classes | Functions
TSQR Namespace Reference

Make sure TimerType has the required interface. More...

Classes

class  Tsqr
 Parallel Tall Skinny QR (TSQR) factorization. More...
class  ApplyType
 NoTranspose, Transpose, or ConjugateTranspose. More...
class  CacheBlocker
class  CacheBlockingStrategy
class  Combine
 TSQR's six computational kernels. More...
class  CombineDefault
 Default implementation of TSQR::Combine. More...
class  CombineFortran
 Interface to Fortran 2003 back end of TSQR::Combine. More...
class  CombineFortran< Scalar, false >
class  CombineFortran< Scalar, true >
class  CombineNative
 Interface to C++ back end of TSQR::Combine. More...
class  CombineNative< Ordinal, Scalar, false >
class  CombineNative< Ordinal, Scalar, true >
class  DistTsqr
 Internode part of TSQR. More...
class  DistTsqrHelper
 Implementation of the internode part of TSQR. More...
class  DistTsqrRB
 Reduce-and-Broadcast (RB) version of DistTsqr. More...
class  Matrix
 A column-oriented dense matrix. More...
class  MatView
class  ConstMatView
class  MessengerBase
class  RMessenger
 Send, receive, and broadcast square R factors. More...
class  ScalarTraits
 Map from Scalar type to its arithmetic properties. More...
class  StatTimeMonitor
 Like Teuchos::TimeMonitor, but collects running stats. More...
class  TimeStats
 Collect running statistics. More...
class  TrivialTimer
 Satisfies TimerType concept trivially. More...
class  TwoLevelDistTsqr
 Interprocess part of TSQR. More...
class  ScalarPrinter
 Print a Scalar value to the given output stream. More...

Functions

template<class Ordinal , class Scalar >
std::pair< typename
ScalarTraits< Scalar >
::magnitude_type, typename
ScalarTraits< Scalar >
::magnitude_type > 
local_verify (const Ordinal nrows, const Ordinal ncols, const Scalar *const A, const Ordinal lda, const Scalar *const Q, const Ordinal ldq, const Scalar *const R, const Ordinal ldr)
template<class MatrixViewType , class ConstMatrixViewType >
void scatterStack (const ConstMatrixViewType &R_stack, MatrixViewType &R_local, const Teuchos::RCP< MessengerBase< typename MatrixViewType::scalar_type > > &messenger)
 Distribute a stack of R factors.

Detailed Description

Make sure TimerType has the required interface.

verifyTimerConcept Our TSQR benchmarks are templated on TimerType, in order to avoid depending on a particular timer implementation. TimerType should support the following three methods (modeled after Trilinos' Teuchos::Time class):

TimerType need not be able to handle recursive calls; the model is that start() and stop() wrap some timing loop, and the loop does not reference the timer at all. We include this concept check in all of our TSQR benchmark routines via

 verifyTimerConcept< TimerType >();

If TimerType does not satisfy this interface, that line of code will fail to compile. The compiler should give an informative error message about a missing method.


Function Documentation

template<class Ordinal , class Scalar >
std::pair< typename ScalarTraits< Scalar >::magnitude_type, typename ScalarTraits< Scalar >::magnitude_type > TSQR::local_verify ( const Ordinal  nrows,
const Ordinal  ncols,
const Scalar *const  A,
const Ordinal  lda,
const Scalar *const  Q,
const Ordinal  ldq,
const Scalar *const  R,
const Ordinal  ldr 
)

Test accuracy of the computed QR factorization of the matrix A

Parameters:
nrows[in] Number of rows in the A and Q matrices; nrows >= ncols >= 1
ncols[in] Number of columns in the A, Q, and R matrices; nrows >= ncols >= 1
A[in] Column-oriented nrows by ncols matrix with leading dimension lda
lda[in] Leading dimension of the matrix A; lda >= nrows
Q[in] Column-oriented nrows by ncols matrix with leading dimension ldq; computed Q factor of A
ldq[in] Leading dimension of the matrix Q; ldq >= nrows
R[in] Column-oriented upper triangular ncols by ncols matrix with leading dimension ldr; computed R factor of A
ldr[in] Leading dimension of the matrix R; ldr >= ncols
Returns:
$\| A - Q R \|_F / \|A\|_F$ and $\| I - Q^* Q \|_F$ -- the relative residual of the QR factorization and a measure of the orthogonality of the resulting Q factor, both in the Frobenius (square root of (sum of squares of the matrix entries) norm.
Note:
The reason for the elaborate "magnitude_type" construction is because this function returns norms, and norms always have real-valued type. Scalar may be complex. We could simply set the imaginary part to zero, but it seems more sensible to enforce the norm's value property in the type system. Besides, one could imagine more elaborate Scalars (like rational functions, which do form a field) that have different plausible definitions of magnitude -- this is not just a problem for complex numbers (that are isomorphic to pairs of real numbers).

Definition at line 236 of file Tsqr_LocalVerify.hpp.

template<class MatrixViewType , class ConstMatrixViewType >
void TSQR::scatterStack ( const ConstMatrixViewType &  R_stack,
MatrixViewType &  R_local,
const Teuchos::RCP< MessengerBase< typename MatrixViewType::scalar_type > > &  messenger 
)

Distribute a stack of R factors.

Parameters:
R_stack[in] nprocs*ncols by ncols stack of square upper triangular matrices. The whole stack is stored in column-major order.
R_local[out] ncols by ncols upper triangular matrix, stored in column-major order (in unpacked form).
messenger[in/out] Object that handles communication

Definition at line 177 of file Tsqr_RMessenger.hpp.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends