42 #ifndef __TSQR_Trilinos_Randomizer_hpp
43 #define __TSQR_Trilinos_Randomizer_hpp
46 #include "TsqrTypeAdaptor.hpp"
47 #include "TsqrCommFactory.hpp"
49 #include "Tsqr_ScalarTraits.hpp"
50 #include "Tsqr_Random_GlobalMatrix.hpp"
70 template<
class S,
class LO,
class GO,
class MV,
class Gen >
73 typedef S scalar_type;
74 typedef LO local_ordinal_type;
75 typedef GO global_ordinal_type;
76 typedef MV multivector_type;
77 typedef Gen normalgen_type;
79 typedef TSQR::Random::MatrixGenerator< S, LO, Gen > matgen_type;
81 typedef typename TSQR::ScalarTraits< S >::magnitude_type magnitude_type;
83 typedef TsqrTypeAdaptor< S, LO, GO, MV > type_adaptor;
84 typedef typename type_adaptor::comm_type comm_type;
85 typedef typename type_adaptor::comm_ptr comm_ptr;
102 const magnitude_type singularValues[])
104 using TSQR::Random::randomGlobalMatrix;
106 typedef MatView< local_ordinal_type, scalar_type > matview_type;
108 local_ordinal_type nrowsLocal, ncols, LDA;
109 fetchDims (A, nrowsLocal, ncols, LDA);
110 ArrayRCP< scalar_type > A_ptr = fetchNonConstView (A);
111 matview_type A_view (nrowsLocal, ncols, A_ptr.get(), LDA);
113 randomGlobalMatrix (pGen_.
get(), A_view, singularValues,
114 pOrdinalMessenger_.
get(), pScalarMessenger_.
get());
127 init (
const multivector_type& mv,
132 fetchMessengers (mv, pScalarMessenger_, pOrdinalMessenger_);
152 fetchDims (
const multivector_type& A,
153 local_ordinal_type& nrowsLocal,
154 local_ordinal_type& ncols,
155 local_ordinal_type& LDA)
const = 0;
165 fetchNonConstView (multivector_type& A)
const = 0;
170 fetchMessengers (
const multivector_type& mv,
171 scalar_messenger_ptr& pScalarMessenger,
172 ordinal_messenger_ptr& pOrdinalMessenger)
const = 0;
175 ordinal_messenger_ptr pOrdinalMessenger_;
176 scalar_messenger_ptr pScalarMessenger_;
182 #endif // __TSQR_Trilinos_Randomizer_hpp
Generates random test problems for TSQR.
Anasazi header file which uses auto-configuration information to include necessary C++ headers...
virtual void randomMultiVector(multivector_type &A, const magnitude_type singularValues[])
Fill A with a (pseudo)random (distributed) matrix.
void init(const multivector_type &mv, const normalgen_ptr &pGen)