3 #ifndef DISTNMF_DISTMU_HPP_ 4 #define DISTNMF_DISTMU_HPP_ 15 template <
class INPUTMATTYPE>
32 WHtH = (this->W * this->HtH) +
EPSILON;
35 #endif // ifdef MPI_VERBOSE 36 this->W = (this->W % this->AHtij.t()) / WHtH;
42 << norm(this->HtH,
"fro") <<
"::WHtH::" << norm(WHtH,
"fro")
43 <<
"::AHtij::" << norm(this->AHtij,
"fro")
44 <<
"::W::" << norm(this->W,
"fro"));
59 this->Wt = this->W.t();
70 HWtW = this->H * this->WtW +
EPSILON;
71 this->H = (this->H % this->WtAij.t()) / HWtW;
74 #endif // ifdef MPI_VERBOSE 82 << norm(this->WtW,
"fro") <<
"::HWtW::" << norm(HWtW,
"fro")
83 <<
"::WtAij::" << norm(this->WtAij,
"fro")
84 <<
"::H::" << norm(this->H,
"fro"));
85 this->Ht = this->H.t();
89 DistMU(
const INPUTMATTYPE& input,
const MAT& leftlowrankfactor,
92 :
DistAUNMF<INPUTMATTYPE>(input, leftlowrankfactor, rightlowrankfactor,
93 communicator, numkblks) {
94 WHtH.zeros(this->
globalm() / this->m_mpicomm.size(), this->k);
95 HWtW.zeros(this->
globaln() / this->m_mpicomm.size(), this->k);
96 localWnorm.zeros(this->k);
98 PRINTROOT(
"DistMU() constructor successful");
104 #endif // DISTNMF_DISTMU_HPP_ const int globaln() const
returns globaln
DistMU(const INPUTMATTYPE &input, const MAT &leftlowrankfactor, const MAT &rightlowrankfactor, const MPICommunicator &communicator, const int numkblks)
const int globalm() const
returns globalm
#define DISTPRINTINFO(MSG)
ncp_factors contains the factors of the ncp every ith factor is of size n_i * k number of factors is ...