1#ifndef MPI_COMMUNICATION_PATTERNS_H
2#define MPI_COMMUNICATION_PATTERNS_H
60 static_assert(std::is_same<T, double>::value || std::is_same<T, float>::value
61 || std::is_same<T, int>::value || std::is_same<T, long>::value,
62 "commPatternAllDataToAll: unsupported T; extend mpi_type_of<T>()");
78 == sim->m_simulation_config.getIntParameters(
"global_number_of_facets"))
81 static_cast<int>(sim->global_array_split
82 / sim->m_simulation_config.getIntParameters(
"numerical_layers"));
91 std::cerr << static_cast<std::string>(
"[MpiCommunicationPatterns]: ")
92 <<
static_cast<std::string
>(
e.what()) <<
'\n';
93 throw BadInput(
static_cast<std::string
>(
"[MpiCommunicationPatterns]: ")
94 +
static_cast<std::string
>(
e.what()));
99 std::cerr <<
"[MpiCommunicationPatterns]: split_id out of bounds.\n";
100 throw std::runtime_error(
101 static_cast<std::string
>(
"[MpiCommunicationPatterns]: split_id out of bounds."));
108 if (
s >
static_cast<std::size_t
>(
INT_MAX))
110 std::cerr <<
"[MpiCommunicationPatterns]: count > INT_MAX\n";
111 throw std::overflow_error(
"[MpiCommunicationPatterns]: count > INT_MAX.");
113 return static_cast<int>(
s);
117 if (sim->my_color == 0)
127 dtype, sim->sub_comm);
131 if (sim->other_color_exists == 0)
139 if (sim->my_color == 0 && sim->my_sub_rank == 0)
144 else if (sim->my_color == 0)
156 if (sim->my_color == 1 && sim->my_sub_rank == 0)
161 else if (sim->my_color == 1)
192 static_assert(std::is_same<T, double>::value || std::is_same<T, float>::value
193 || std::is_same<T, int>::value || std::is_same<T, long>::value,
194 "commPatternAllDataToAll: unsupported T; extend mpi_type_of<T>()");
210 == sim->m_simulation_config.getIntParameters(
"global_number_of_facets"))
213 static_cast<int>(sim->global_array_split
214 / sim->m_simulation_config.getIntParameters(
"numerical_layers"));
223 std::cerr << static_cast<std::string>(
"[MpiCommunicationPatterns]: ")
224 <<
static_cast<std::string
>(
e.what()) <<
'\n';
225 throw BadInput(
static_cast<std::string
>(
"[MpiCommunicationPatterns]: ")
226 +
static_cast<std::string
>(
e.what()));
231 std::cerr <<
"[MpiCommunicationPatterns]: split_id out of bounds.\n";
232 throw std::runtime_error(
233 static_cast<std::string
>(
"[MpiCommunicationPatterns]: split_id out of bounds."));
236 if (sim->my_color == 0)
250 if (sim->other_color_exists == 0)
258 if (sim->my_color == 0 && sim->my_sub_rank == 0)
263 else if (sim->my_color == 0)
275 if (
s >
static_cast<std::size_t
>(
INT_MAX))
277 std::cerr <<
"[MpiCommunicationPatterns]: count > INT_MAX\n";
278 throw std::overflow_error(
"[MpiCommunicationPatterns]: count > INT_MAX.");
280 return static_cast<int>(
s);
284 if (sim->my_color == 1 && sim->my_sub_rank == 0)
289 else if (sim->my_color == 1)
320 static_assert(std::is_same<T, double>::value || std::is_same<T, float>::value
321 || std::is_same<T, int>::value || std::is_same<T, long>::value,
322 "commPatternAllDataToAll: unsupported T; extend mpi_type_of<T>()");
338 == sim->m_simulation_config.getIntParameters(
"global_number_of_facets"))
341 static_cast<int>(sim->global_array_split
342 / sim->m_simulation_config.getIntParameters(
"numerical_layers"));
351 std::cerr << static_cast<std::string>(
"[MpiCommunicationPatterns]: ")
352 <<
static_cast<std::string
>(
e.what()) <<
'\n';
353 throw BadInput(
static_cast<std::string
>(
"[MpiCommunicationPatterns]: ")
354 +
static_cast<std::string
>(
e.what()));
359 std::cerr <<
"[MpiCommunicationPatterns]: split_id out of bounds.\n";
360 throw std::runtime_error(
361 static_cast<std::string
>(
"[MpiCommunicationPatterns]: split_id out of bounds."));
364 if (sim->my_color == 0)
378 if (sim->other_color_exists == 0)
386 if (sim->my_color == 0 && sim->my_sub_rank == 0)
391 else if (sim->my_color == 0)
403 if (
s >
static_cast<std::size_t
>(
INT_MAX))
405 std::cerr <<
"[MpiCommunicationPatterns]: count > INT_MAX\n";
406 throw std::overflow_error(
"[MpiCommunicationPatterns]: count > INT_MAX.");
408 return static_cast<int>(
s);
412 if (sim->my_color == 1 && sim->my_sub_rank == 0)
417 else if (sim->my_color == 1)
Concrete implementation of a matrix class representing a Compressed Sparse Rows (CSR) matrix....
Definition CsrMatrix.h:37
std::pair< int, int > size() const
Function that returns the size of the matrix as a pair in (rows, columns) format.
Definition GenericMatrix.h:120