Repartitioning¶
RepartitionUp¶
Given the partition
and a blocksize, \(n_b\), turn the two-way partition into the three-way partition
where \(A_1\) is of height \(n_b\) and \(A_2 = A_B\).
- void RepartitionUp( Matrix<T>& AT, Matrix<T>& A0, Matrix<T>& A1, Matrix<T>& AB, Matrix<T>& A2, int bsize=Blocksize() )
- void LockedRepartitionUp( const Matrix<T>& AT, Matrix<T>& A0, Matrix<T>& A1, const Matrix<T>& AB, Matrix<T>& A2, int bsize=Blocksize() )
Templated over the datatype, T.
- void RepartitionUp( DistMatrix<T,U,V>& AT, DistMatrix<T,U,V>& A0, DistMatrix<T,U,V>& A1, DistMatrix<T,U,V>& AB, DistMatrix<T,U,V>& A2, int bsize=Blocksize() )
- void LockedRepartitionUp( const DistMatrix<T,U,V>& AT, DistMatrix<T,U,V>& A0, DistMatrix<T,U,V>& A1, const DistMatrix<T,U,V>& AB, DistMatrix<T,U,V>& A2, int bsize=Blocksize() )
Templated over the datatype, T, and distribution scheme, (U,V).
Note that each of the above routines is meant to be used in a manner similar to the following:
RepartitionUp( AT, A0,
A1,
/**/ /**/
AB, A2, blocksize );
RepartitionDown¶
Given the partition
and a blocksize, \(n_b\), turn the two-way partition into the three-way partition
where \(A_1\) is of height \(n_b\) and \(A_0 = A_T\).
- void RepartitionDown( Matrix<T>& AT, Matrix<T>& A0, Matrix<T>& A1, Matrix<T>& AB, Matrix<T>& A2, int bsize=Blocksize() )
- void LockedRepartitionDown( const Matrix<T>& AT, Matrix<T>& A0, Matrix<T>& A1, const Matrix<T>& AB, Matrix<T>& A2, int bsize=Blocksize() )
Templated over the datatype, T.
- void RepartitionDown( DistMatrix<T,U,V>& AT, DistMatrix<T,U,V>& A0, DistMatrix<T,U,V>& A1, DistMatrix<T,U,V>& AB, DistMatrix<T,U,V>& A2, int bsize=Blocksize() )
- void LockedRepartitionDown( const DistMatrix<T,U,V>& AT, DistMatrix<T,U,V>& A0, DistMatrix<T,U,V>& A1, const DistMatrix<T,U,V>& AB, DistMatrix<T,U,V>& A2, int bsize=Blocksize() )
Templated over the datatype, T, and distribution scheme, (U,V).
Note that each of the above routines is meant to be used in a manner similar to the following:
RepartitionDown( AT, A0,
/**/ /**/
A1,
AB, A2, blocksize );
RepartitionLeft¶
Given the partition
and a blocksize, \(n_b\), turn the two-way partition into the three-way partition
where \(A_1\) is of width \(n_b\) and \(A_2=A_R\).
- void RepartitionLeft( Matrix<T>& AL, Matrix<T>& AR, Matrix<T>& A0, Matrix<T>& A1, Matrix<T>& A2, int bsize=Blocksize() )
- void LockedRepartitionLeft( const Matrix<T>& AL, const Matrix<T>& AR, Matrix<T>& A0, Matrix<T>& A1, Matrix<T>& A2, int bsize=Blocksize() )
Templated over the datatype, T.
- void RepartitionLeft( DistMatrix<T,U,V>& AL, DistMatrix<T,U,V>& AR, DistMatrix<T,U,V>& A0, DistMatrix<T,U,V>& A1, DistMatrix<T,U,V>& A2, int bsize=Blocksize() )
- void LockedRepartitionLeft( const DistMatrix<T,U,V>& AL, const DistMatrix<T,U,V>& AR, DistMatrix<T,U,V>& A0, DistMatrix<T,U,V>& A1, DistMatrix<T,U,V>& A2, int bsize=Blocksize() )
Templated over the datatype, T, and distribution scheme, (U,V).
Note that each of the above routines is meant to be used in a manner similar to the following:
RepartitionLeft( AL, /**/ AR,
A0, A1, /**/ A2, blocksize );
RepartitionRight¶
Given the partition
and a blocksize, \(n_b\), turn the two-way partition into the three-way partition
where \(A_1\) is of width \(n_b\) and \(A_0=A_L\).
- void RepartitionRight( Matrix<T>& AL, Matrix<T>& AR, Matrix<T>& A0, Matrix<T>& A1, Matrix<T>& A2, int bsize=Blocksize() )
- void LockedRepartitionRight( const Matrix<T>& AL, const Matrix<T>& AR, Matrix<T>& A0, Matrix<T>& A1, Matrix<T>& A2, int bsize=Blocksize() )
Templated over the datatype, T.
- void RepartitionRight( DistMatrix<T,U,V>& AL, DistMatrix<T,U,V>& AR, DistMatrix<T,U,V>& A0, DistMatrix<T,U,V>& A1, DistMatrix<T,U,V>& A2, int bsize=Blocksize() )
- void LockedRepartitionRight( const DistMatrix<T,U,V>& AL, const DistMatrix<T,U,V>& AR, DistMatrix<T,U,V>& A0, DistMatrix<T,U,V>& A1, DistMatrix<T,U,V>& A2, int bsize=Blocksize() )
Templated over the datatype, T, and distribution scheme, (U,V).
Note that each of the above routines is meant to be used in a manner similar to the following:
RepartitionRight( AL, /**/ AR,
A0, /**/ A1, A2, blocksize );
RepartitionUpDiagonal¶
Given the partition
turn the two-by-two partition into the three-by-three partition
where \(A_{11}\) is \(n_b \times n_b\) and the corresponding quadrants are equivalent.
- void RepartitionUpDiagonal( Matrix<T>& ATL, Matrix<T>& ATR, Matrix<T>& A00, Matrix<T>& A01, Matrix<T>& A02, Matrix<T>& A10, Matrix<T>& A11, Matrix<T>& A12, Matrix<T>& ABL, Matrix<T>& ABR, Matrix<T>& A20, Matrix<T>& A21, Matrix<T>& A22, int bsize=Blocksize() )
- void LockedRepartitionUpDiagonal( const Matrix<T>& ATL, const Matrix<T>& ATR, Matrix<T>& A00, Matrix<T>& A01, Matrix<T>& A02, Matrix<T>& A10, Matrix<T>& A11, Matrix<T>& A12, const Matrix<T>& ABL, const Matrix<T>& ABR, Matrix<T>& A20, Matrix<T>& A21, Matrix<T>& A22, int bsize=Blocksize() )
Templated over the datatype, T.
- void RepartitionUpDiagonal( DistMatrix<T,U,V>& ATL, DistMatrix<T,U,V>& ATR, DistMatrix<T,U,V>& A00, DistMatrix<T,U,V>& A01, DistMatrix<T,U,V>& A02, DistMatrix<T,U,V>& A10, DistMatrix<T,U,V>& A11, DistMatrix<T,U,V>& A12, DistMatrix<T,U,V>& ABL, DistMatrix<T,U,V>& ABR, DistMatrix<T,U,V>& A20, DistMatrix<T,U,V>& A21, DistMatrix<T,U,V>& A22, int bsize=Blocksize() )
- void LockedRepartitionUpDiagonal( const DistMatrix<T,U,V>& ATL, const DistMatrix<T,U,V>& ATR, DistMatrix<T,U,V>& A00, DistMatrix<T,U,V>& A01, DistMatrix<T,U,V>& A02, DistMatrix<T,U,V>& A10, DistMatrix<T,U,V>& A11, DistMatrix<T,U,V>& A12, const DistMatrix<T,U,V>& ABL, const DistMatrix<T,U,V>& ABR, DistMatrix<T,U,V>& A20, DistMatrix<T,U,V>& A21, DistMatrix<T,U,V>& A22, int bsize=Blocksize() )
Templated over the datatype, T, and distribution scheme, (U,V).
Note that each of the above routines is meant to be used in a manner similar to the following:
RepartitionUpDiagonal( ATL, /**/ ATR, A00, A01, /**/ A02,
/**/ A10, A11, /**/ A12,
/*************/ /******************/
ABL, /**/ ABR, A20, A21, /**/ A22, blocksize );
RepartitionDownDiagonal¶
Given the partition
turn the two-by-two partition into the three-by-three partition
where \(A_{11}\) is \(n_b \times n_b\) and the corresponding quadrants are equivalent.
- void RepartitionDownDiagonal( Matrix<T>& ATL, Matrix<T>& ATR, Matrix<T>& A00, Matrix<T>& A01, Matrix<T>& A02, Matrix<T>& A10, Matrix<T>& A11, Matrix<T>& A12, Matrix<T>& ABL, Matrix<T>& ABR, Matrix<T>& A20, Matrix<T>& A21, Matrix<T>& A22, int bsize=Blocksize() )
- void LockedRepartitionDownDiagonal( const Matrix<T>& ATL, const Matrix<T>& ATR, Matrix<T>& A00, Matrix<T>& A01, Matrix<T>& A02, Matrix<T>& A10, Matrix<T>& A11, Matrix<T>& A12, const Matrix<T>& ABL, const Matrix<T>& ABR, Matrix<T>& A20, Matrix<T>& A21, Matrix<T>& A22, int bsize=Blocksize() )
Templated over the datatype, T.
- void RepartitionDownDiagonal( DistMatrix<T,U,V>& ATL, DistMatrix<T,U,V>& ATR, DistMatrix<T,U,V>& A00, DistMatrix<T,U,V>& A01, DistMatrix<T,U,V>& A02, DistMatrix<T,U,V>& A10, DistMatrix<T,U,V>& A11, DistMatrix<T,U,V>& A12, DistMatrix<T,U,V>& ABL, DistMatrix<T,U,V>& ABR, DistMatrix<T,U,V>& A20, DistMatrix<T,U,V>& A21, DistMatrix<T,U,V>& A22, int bsize=Blocksize() )
- void LockedRepartitionDownDiagonal( const DistMatrix<T,U,V>& ATL, const DistMatrix<T,U,V>& ATR, DistMatrix<T,U,V>& A00, DistMatrix<T,U,V>& A01, DistMatrix<T,U,V>& A02, DistMatrix<T,U,V>& A10, DistMatrix<T,U,V>& A11, DistMatrix<T,U,V>& A12, const DistMatrix<T,U,V>& ABL, const DistMatrix<T,U,V>& ABR, DistMatrix<T,U,V>& A20, DistMatrix<T,U,V>& A21, DistMatrix<T,U,V>& A22, int bsize=Blocksize() )
Templated over the datatype, T, and distribution scheme, (U,V).
Note that each of the above routines is meant to be used in a manner similar to the following:
RepartitionDownDiagonal( ATL, /**/ ATR, A00, /**/ A01, A02,
/*************/ /******************/
/**/ A10, /**/ A11, A12,
ABL, /**/ ABR, A20, /**/ A21, A22, blocksize );