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.