|
FEAT 3
Finite Element Analysis Toolbox
|
Ticket class for asynchronous global matrix conversion. More...
#include <synch_mat.hpp>
Public Types | |
| typedef LAFEM::MatrixMirrorBuffer< typename MT_::DataType, typename MT_::IndexType > | BufferMatrixType |
| the buffer matrix type More... | |
| typedef LAFEM::MatrixMirror< typename MT_::DataType, typename MT_::IndexType > | MatrixMirrorType |
| the matrix mirror type More... | |
Public Member Functions | |
| SynchMatrix (const Dist::Comm &comm, const std::vector< int > &ranks, const std::vector< VMT_ > &mirrors_row, const std::vector< VMT_ > &mirrors_col) | |
| Constructor. More... | |
| SynchMatrix (const SynchMatrix &)=delete | |
| deleted copy constructor | |
| void | exec (MT_ &matrix) |
| Converts a type-0 matrix to a type-1 matrix. More... | |
| void | init (const MT_ &matrix) |
| Initializes the internal buffers for synchronization. More... | |
| SynchMatrix & | operator= (const SynchMatrix &)=delete |
| deleted copy assignment operator | |
Protected Attributes | |
| const Dist::Comm & | _comm |
| our communicator More... | |
| bool | _initialized |
| std::vector< MatrixMirrorType > | _mirrors |
| the matrix mirrors More... | |
| std::vector< int > | _ranks |
| the neighbor ranks More... | |
| std::vector< BufferMatrixType > | _recv_bufs |
| Dist::RequestVector | _recv_reqs |
| std::vector< BufferMatrixType > | _send_bufs |
| send and receive buffers More... | |
| Dist::RequestVector | _send_reqs |
| send and receive request vectors More... | |
Ticket class for asynchronous global matrix conversion.
| MT_ | The matrix type |
| VMT_ | The vector mirror type |
Definition at line 36 of file synch_mat.hpp.
| typedef LAFEM::MatrixMirrorBuffer<typename MT_::DataType, typename MT_::IndexType> FEAT::Global::SynchMatrix< MT_, VMT_ >::BufferMatrixType |
the buffer matrix type
Definition at line 42 of file synch_mat.hpp.
| typedef LAFEM::MatrixMirror<typename MT_::DataType, typename MT_::IndexType> FEAT::Global::SynchMatrix< MT_, VMT_ >::MatrixMirrorType |
the matrix mirror type
Definition at line 40 of file synch_mat.hpp.
|
inline |
Constructor.
| [in] | comm | The communicator |
| [in] | ranks | The neighbor ranks within the communicator |
| [in] | mirrors_row | The row vector mirrors to be used for synchronization |
| [in] | mirrors_col | The column vector mirrors to be used for synchronization |
Definition at line 76 of file synch_mat.hpp.
References FEAT::Global::SynchMatrix< MT_, VMT_ >::_mirrors, and XASSERTM.
|
inline |
Converts a type-0 matrix to a type-1 matrix.
| [in,out] | matrix | The type-0 matrix that is to be converted to type-1. |
Definition at line 226 of file synch_mat.hpp.
References FEAT::Global::SynchMatrix< MT_, VMT_ >::_comm, FEAT::Global::SynchMatrix< MT_, VMT_ >::_mirrors, FEAT::Global::SynchMatrix< MT_, VMT_ >::_ranks, FEAT::Global::SynchMatrix< MT_, VMT_ >::_send_bufs, FEAT::Global::SynchMatrix< MT_, VMT_ >::_send_reqs, FEAT::Dist::RequestVector::get_request(), FEAT::Dist::Comm::irecv(), FEAT::Dist::Comm::isend(), FEAT::LAFEM::MatrixMirrorBuffer< DT_, IT_ >::val(), FEAT::LAFEM::MatrixMirrorBuffer< DT_, IT_ >::val_size(), FEAT::Dist::RequestVector::wait_all(), FEAT::Dist::RequestVector::wait_any(), and XASSERTM.
Referenced by FEAT::Global::Matrix< LocalMatrix_, RowMirror_, ColMirror_ >::convert_to_1(), and FEAT::Global::synch_matrix().
|
inline |
Initializes the internal buffers for synchronization.
| [in] | matrix | The matrix to be used as a template for the buffers. The structure must be initialized, but the numerical content of the matrix is ignored. |
Definition at line 124 of file synch_mat.hpp.
References FEAT::Global::SynchMatrix< MT_, VMT_ >::_comm, FEAT::Global::SynchMatrix< MT_, VMT_ >::_mirrors, FEAT::Global::SynchMatrix< MT_, VMT_ >::_ranks, FEAT::Global::SynchMatrix< MT_, VMT_ >::_send_bufs, FEAT::Global::SynchMatrix< MT_, VMT_ >::_send_reqs, FEAT::LAFEM::MatrixMirrorBuffer< DT_, IT_ >::columns(), FEAT::LAFEM::MatrixMirrorBuffer< DT_, IT_ >::entries_per_nonzero(), FEAT::Dist::Comm::irecv(), FEAT::Dist::Comm::isend(), FEAT::LAFEM::MatrixMirrorBuffer< DT_, IT_ >::rows(), FEAT::LAFEM::MatrixMirrorBuffer< DT_, IT_ >::used_elements(), FEAT::Dist::RequestVector::wait_all(), and XASSERTM.
Referenced by FEAT::Global::Matrix< LocalMatrix_, RowMirror_, ColMirror_ >::convert_to_1(), and FEAT::Global::synch_matrix().
|
protected |
our communicator
Definition at line 48 of file synch_mat.hpp.
Referenced by FEAT::Global::SynchMatrix< MT_, VMT_ >::exec(), and FEAT::Global::SynchMatrix< MT_, VMT_ >::init().
|
protected |
Definition at line 45 of file synch_mat.hpp.
|
protected |
the matrix mirrors
Definition at line 52 of file synch_mat.hpp.
Referenced by FEAT::Global::SynchMatrix< MT_, VMT_ >::SynchMatrix(), FEAT::Global::SynchMatrix< MT_, VMT_ >::exec(), and FEAT::Global::SynchMatrix< MT_, VMT_ >::init().
|
protected |
the neighbor ranks
Definition at line 50 of file synch_mat.hpp.
Referenced by FEAT::Global::SynchMatrix< MT_, VMT_ >::exec(), and FEAT::Global::SynchMatrix< MT_, VMT_ >::init().
|
protected |
Definition at line 56 of file synch_mat.hpp.
|
protected |
Definition at line 54 of file synch_mat.hpp.
|
protected |
send and receive buffers
Definition at line 56 of file synch_mat.hpp.
Referenced by FEAT::Global::SynchMatrix< MT_, VMT_ >::exec(), and FEAT::Global::SynchMatrix< MT_, VMT_ >::init().
|
protected |
send and receive request vectors
Definition at line 54 of file synch_mat.hpp.
Referenced by FEAT::Global::SynchMatrix< MT_, VMT_ >::exec(), and FEAT::Global::SynchMatrix< MT_, VMT_ >::init().