DM& DM::operator=( const DistMatrix<T,VR,STAR>& A ) { DEBUG_ONLY(CSE cse("[STAR,VC] = [VR,STAR]")) DistMatrix<T,MR,MC> A_MR_MC( A ); *this = A_MR_MC; return *this; }
DM& DM::operator=( const DistMatrix<T,STAR,MC>& A ) { DEBUG_CSE DistMatrix<T,MR,MC> A_MR_MC( A ); *this = A_MR_MC; return *this; }
BDM& BDM::operator=( const DistMatrix<T,MR,STAR,BLOCK>& A ) { DEBUG_ONLY(CSE cse("[STAR,MC] = [MR,STAR]")) DistMatrix<T,MR,MC,BLOCK> A_MR_MC( A ); *this = A_MR_MC; return *this; }
BDM& BDM::operator=( const DistMatrix<T,VR,STAR,BLOCK>& A ) { DEBUG_CSE DistMatrix<T,MR,MC,BLOCK> A_MR_MC( A ); *this = A_MR_MC; return *this; }
const DM& DM::operator=( const DistMatrix<T,STAR,MC>& A ) { DEBUG_ONLY(CallStackEntry cse("[VR,* ] = [* ,MC]")) DistMatrix<T,MR,MC> A_MR_MC( A ); *this = A_MR_MC; return *this; }
BDM& BDM::operator=( const BlockDistMatrix<T,STAR,MC>& A ) { DEBUG_ONLY(CallStackEntry cse("[VR,STAR] = [STAR,MC]")) BlockDistMatrix<T,MR,MC> A_MR_MC( A ); *this = A_MR_MC; return *this; }
DM& DM::operator=( const DistMatrix<T,MR,STAR>& A ) { DEBUG_CSE DistMatrix<T,MR,MC> A_MR_MC( A ); DistMatrix<T,STAR,VC> A_STAR_VC( A_MR_MC ); A_MR_MC.Empty(); *this = A_STAR_VC; return *this; }
BDM& BDM::operator=( const DistMatrix<T,CIRC,CIRC,BLOCK>& A ) { DEBUG_CSE DistMatrix<T,MR,MC,BLOCK> A_MR_MC( A.Grid() ); A_MR_MC.AlignWith( *this ); A_MR_MC = A; *this = A_MR_MC; return *this; }
DM& DM::operator=( const DistMatrix<T,MR,STAR>& A ) { DEBUG_ONLY(CSE cse("[STAR,VR] = [MR,STAR]")) DistMatrix<T,MR,MC> A_MR_MC( A ); DistMatrix<T,STAR,VC> A_STAR_VC( A_MR_MC ); A_MR_MC.Empty(); *this = A_STAR_VC; return *this; }
BDM& BDM::operator=( const DistMatrix<T,STAR,MC,BLOCK>& A ) { EL_DEBUG_CSE DistMatrix<T,MR,MC,BLOCK> A_MR_MC( A ); DistMatrix<T,VR,STAR,BLOCK> A_VR_STAR( A_MR_MC ); A_MR_MC.Empty(); *this = A_VR_STAR; return *this; }
DM& DM::operator=( const DistMatrix<T,STAR,VC>& A ) { DEBUG_ONLY(CSE cse("[VC,STAR] = [STAR,VC]")) DistMatrix<T,MR,MC> A_MR_MC( A ); DistMatrix<T,VR,STAR> A_VR_STAR( A_MR_MC ); A_MR_MC.Empty(); *this = A_VR_STAR; return *this; }
BDM& BDM::operator=( const DistMatrix<T,CIRC,CIRC,BLOCK>& A ) { DEBUG_ONLY(CSE cse("[STAR,MC] = [CIRC,CIRC]")) DistMatrix<T,MR,MC,BLOCK> A_MR_MC( A.Grid() ); A_MR_MC.AlignWith( *this ); A_MR_MC = A; *this = A_MR_MC; return *this; }
DM& DM::operator=( const DistMatrix<T,MR,STAR>& A ) { DEBUG_ONLY(CallStackEntry cse("[STAR,VR] = [MR,STAR]")) std::unique_ptr<DistMatrix<T,MR,MC>> A_MR_MC( new DistMatrix<T,MR,MC>(A) ); std::unique_ptr<DistMatrix<T,STAR,VC>> A_STAR_VC( new DistMatrix<T,STAR,VC>(*A_MR_MC) ); delete A_MR_MC.release(); // lowers memory highwater *this = *A_STAR_VC; return *this; }
BDM& BDM::operator=( const DistMatrix<T,STAR,VR,BLOCK>& A ) { EL_DEBUG_CSE DistMatrix<T,STAR,VC,BLOCK> A_STAR_VC( A ); DistMatrix<T,MR, MC,BLOCK> A_MR_MC( this->Grid() ); A_MR_MC.AlignColsWith(*this); A_MR_MC = A_STAR_VC; A_STAR_VC.Empty(); *this = A_MR_MC; return *this; }
BDM& BDM::operator=( const DistMatrix<T,STAR,VR,BLOCK>& A ) { DEBUG_ONLY(CSE cse("[MR,STAR] = [STAR,VR]")) DistMatrix<T,STAR,VC,BLOCK> A_STAR_VC( A ); DistMatrix<T,MR, MC,BLOCK> A_MR_MC( this->Grid() ); A_MR_MC.AlignColsWith(*this); A_MR_MC = A_STAR_VC; A_STAR_VC.Empty(); *this = A_MR_MC; return *this; }
BDM& BDM::operator=( const BlockDistMatrix<T,STAR,MC>& A ) { DEBUG_ONLY(CallStackEntry cse("[VC,STAR] = [STAR,MC]")) std::unique_ptr<BlockDistMatrix<T,MR,MC>> A_MR_MC( new BlockDistMatrix<T,MR,MC>(A) ); std::unique_ptr<BlockDistMatrix<T,VR,STAR>> A_VR_STAR( new BlockDistMatrix<T,VR,STAR>(*A_MR_MC) ); delete A_MR_MC.release(); // lowers memory highwater *this = *A_VR_STAR; return *this; }
BDM& BDM::operator=( const DistMatrix<T,VC,STAR,BLOCK>& A ) { DEBUG_CSE DistMatrix<T,VR,STAR,BLOCK> A_VR_STAR( A ); DistMatrix<T,MR,MC,BLOCK> A_MR_MC( this->Grid() ); A_MR_MC.AlignRowsWith(*this); A_MR_MC = A_VR_STAR; A_VR_STAR.Empty(); *this = A_MR_MC; return *this; }
BDM& BDM::operator=( const DistMatrix<T,STAR,MC,BLOCK>& A ) { DEBUG_ONLY(CSE cse("[MC,STAR] = [STAR,MC]")) DistMatrix<T,MR,MC,BLOCK> A_MR_MC( A ); DistMatrix<T,VR,STAR,BLOCK> A_VR_STAR( A_MR_MC ); A_MR_MC.Empty(); DistMatrix<T,VC,STAR,BLOCK> A_VC_STAR( this->Grid() ); A_VC_STAR.AlignColsWith(*this); A_VC_STAR = A_VR_STAR; A_VR_STAR.Empty(); *this = A_VC_STAR; return *this; }
DM& DM::operator=( const DistMatrix<T,STAR,MC>& A ) { DEBUG_ONLY(CallStackEntry cse("[MC,STAR] = [STAR,MC]")) std::unique_ptr<DistMatrix<T,MR,MC>> A_MR_MC( new DistMatrix<T,MR,MC>(A) ); std::unique_ptr<DistMatrix<T,VR,STAR>> A_VR_STAR( new DistMatrix<T,VR,STAR>(*A_MR_MC) ); delete A_MR_MC.release(); // lowers memory highwater std::unique_ptr<DistMatrix<T,VC,STAR>> A_VC_STAR( new DistMatrix<T,VC,STAR>(this->Grid()) ); A_VC_STAR->AlignColsWith(*this); *A_VC_STAR = *A_VR_STAR; delete A_VR_STAR.release(); // lowers memory highwater *this = *A_VC_STAR; return *this; }