cuLite v0.3.1
A lite CUDA C++ Interface
Loading...
Searching...
No Matches
ex08a_sv_decomposition.cpp
#include <iostream>
#include <cla3p/dense.hpp>
#include <culite/dense.hpp>
#include <culite/svd.hpp>
int main()
{
/*
* Create a random (5x3) dense matrix on host and transfer to device
*/
HostA >> A;
std::cout << "A:\n" << A;
/*
* Set a simple svd object for A
*/
/*
* Decompose A into USV* product
*/
svdA.decompose(A);
std::cout << "SVD Decomposition of A\n";
std::cout << "----------------------\n";
std::cout
<< "S:\n" << svdA.singularValues()
<< "U:\n" << svdA.leftSingularVectors()
<< "V:\n" << svdA.rightSingularVectors();
/*
* Set a svd object with no calculation for V
*/
culite::svdPolicy_t policyU = culite::svdPolicy_t::Economy;
culite::svdPolicy_t policyV = culite::svdPolicy_t::NoCalculation;
svdB.decompose(A);
std::cout << "SVD Decomposition of A (no V)\n";
std::cout << "-----------------------------\n";
std::cout
<< "S:\n" << svdB.singularValues()
<< "U:\n" << svdB.leftSingularVectors()
<< "V(empty):\n" << svdB.rightSingularVectors();
return 0;
}
static XxMatrix< T_Scalar > random(int_t nr, int_t nc, const Property &pr=Property::General(), T_RScalar lo=T_RScalar(0), T_RScalar hi=T_RScalar(1))
Singular Value Decomposition (SVD) solver using cuSOLVER.
Definition default_svd.hpp:66
const T_Matrix & rightSingularVectors() const
Gets the computed right singular vectors.
Definition default_svd.hpp:185
const T_Matrix & leftSingularVectors() const
Gets the computed left singular vectors.
Definition default_svd.hpp:176
const T_RVector & singularValues() const
Gets the computed singular values.
Definition default_svd.hpp:167
void decompose(const T_Matrix &mat)
Performs singular value decomposition on the input matrix.
XxMatrix< real_t > RdMatrix
::cla3p::svdPolicy_t svdPolicy_t
Singular vector computation policy enumeration.
Definition enums.hpp:95
XxMatrix< real_t > RdMatrix
Double precision real matrix.
Definition dense.hpp:55