Data members
The Operator that is represented is stored as a pointer in:
-
const Op *danceq::internal::ShellMatrix::operator_ptr
Pointer to the operator that is used represented.
The total dimension is:
-
const uint64_t danceq::internal::ShellMatrix::dim
Dimension.
Information required by MPI
The following members are only included if MPI is available. They contain the full communication pattern to ensure a fast computation without memory reallocation.
-
const MPI_Datatype danceq::internal::ShellMatrix::MPI_SCALAR
Datatype used by MPI.
-
const uint64_t danceq::internal::ShellMatrix::start
Start of local rows enumerated by the underlying basis in operator_ptr.
-
const uint64_t danceq::internal::ShellMatrix::end
End of local rows enumerated by the underlying basis in operator_ptr.
-
const uint64_t danceq::internal::ShellMatrix::mydim
Local dimension of rank.
-
const int32_t danceq::internal::ShellMatrix::myrank
MPI rank of this process.
-
const int32_t danceq::internal::ShellMatrix::world_size
Number of MPI processes.
-
const std::vector<uint64_t> danceq::internal::ShellMatrix::total_number_of_elements_to_send_per_step
Total number of elements that are sent in each communication step. It is of size number_of_communication_steps.
-
const std::vector<uint64_t> danceq::internal::ShellMatrix::total_number_of_elements_to_recv_per_step
Total number of elements that are received in each communication step. It is of size number_of_communication_steps.
-
const std::vector<uint64_t> danceq::internal::ShellMatrix::dim_per_step
The number of rows that are processed during each communications step. It is identical for each MPI process.
-
const uint64_t danceq::internal::ShellMatrix::maximal_number_of_elements_to_send
Maximal number of elements to send during the multiplication.
-
const uint64_t danceq::internal::ShellMatrix::maximal_number_of_elements_to_recv
Maximal number of elements to receive during the multiplication.
-
const uint64_t danceq::internal::ShellMatrix::number_of_communication_steps
Number of communication steps between all processes for matrix-vector multiplication.
-
const std::vector<uint64_t> danceq::internal::ShellMatrix::ownership_per_rank
Rows that mark the memory distribution per rank.
Rank i is in charge of rows ownership_per_rank[i-1] to (not including the last) ownership_per_rank[i]. Note that ownership_per_rank[-1] is zero. It is equivalent to the used Vector class.
-
const std::vector<std::vector<uint64_t>> danceq::internal::ShellMatrix::number_of_elements_to_recv_per_rank_per_step
Number of elements that are received in each communication step from each MPI rank.
Size is number_of_communication_steps times world_size. number_of_elements_to_recv_per_rank_per_step[i][j] refers to the number of elements that are received in the i th communication step from rank j.
-
const std::vector<std::vector<uint64_t>> danceq::internal::ShellMatrix::number_of_elements_to_send_per_rank_per_step
Number of elements that are sent in each communication step to each MPI rank.
Size is number_of_communication_steps times world_size. number_of_elements_to_send_per_rank_per_step[i][j] refers to the number of elements that are send in the i th communication step from rank j.