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