1#ifndef MPI_COMMUNICATION_PATTERNS_H
2#define MPI_COMMUNICATION_PATTERNS_H
61 static_assert(std::is_same<T, double>::value || std::is_same<T, float>::value
62 || std::is_same<T, int>::value || std::is_same<T, long>::value,
63 "commPatternAllDataToAll: unsupported T; extend mpi_type_of<T>()");
79 == sim->m_simulation_config.getIntParameters(
"global_number_of_facets"))
82 static_cast<int>(sim->global_array_split
83 / sim->m_simulation_config.getIntParameters(
"numerical_layers"));
92 std::cerr << static_cast<std::string>(
"[MpiCommunicationPatterns]: ")
93 <<
static_cast<std::string
>(
e.what()) <<
'\n';
94 throw BadInput(
static_cast<std::string
>(
"[MpiCommunicationPatterns]: ")
95 +
static_cast<std::string
>(
e.what()));
100 std::cerr <<
"[MpiCommunicationPatterns]: split_id out of bounds.\n";
101 throw std::runtime_error(
102 static_cast<std::string
>(
"[MpiCommunicationPatterns]: split_id out of bounds."));
109 if (
s >
static_cast<std::size_t
>(
INT_MAX))
111 std::cerr <<
"[MpiCommunicationPatterns]: count > INT_MAX\n";
112 throw std::overflow_error(
"[MpiCommunicationPatterns]: count > INT_MAX.");
114 return static_cast<int>(
s);
118 if (sim->my_color == 0)
128 dtype, sim->sub_comm);
132 if (sim->other_color_exists == 0)
140 if (sim->my_color == 0 && sim->my_sub_rank == 0)
145 else if (sim->my_color == 0)
157 if (sim->my_color == 1 && sim->my_sub_rank == 0)
162 else if (sim->my_color == 1)
193 static_assert(std::is_same<T, double>::value || std::is_same<T, float>::value
194 || std::is_same<T, int>::value || std::is_same<T, long>::value,
195 "commPatternAllDataToAll: unsupported T; extend mpi_type_of<T>()");
211 == sim->m_simulation_config.getIntParameters(
"global_number_of_facets"))
214 static_cast<int>(sim->global_array_split
215 / sim->m_simulation_config.getIntParameters(
"numerical_layers"));
224 std::cerr << static_cast<std::string>(
"[MpiCommunicationPatterns]: ")
225 <<
static_cast<std::string
>(
e.what()) <<
'\n';
226 throw BadInput(
static_cast<std::string
>(
"[MpiCommunicationPatterns]: ")
227 +
static_cast<std::string
>(
e.what()));
232 std::cerr <<
"[MpiCommunicationPatterns]: split_id out of bounds.\n";
233 throw std::runtime_error(
234 static_cast<std::string
>(
"[MpiCommunicationPatterns]: split_id out of bounds."));
237 if (sim->my_color == 0)
251 if (sim->other_color_exists == 0)
259 if (sim->my_color == 0 && sim->my_sub_rank == 0)
264 else if (sim->my_color == 0)
276 if (
s >
static_cast<std::size_t
>(
INT_MAX))
278 std::cerr <<
"[MpiCommunicationPatterns]: count > INT_MAX\n";
279 throw std::overflow_error(
"[MpiCommunicationPatterns]: count > INT_MAX.");
281 return static_cast<int>(
s);
285 if (sim->my_color == 1 && sim->my_sub_rank == 0)
290 else if (sim->my_color == 1)
321 static_assert(std::is_same<T, double>::value || std::is_same<T, float>::value
322 || std::is_same<T, int>::value || std::is_same<T, long>::value,
323 "commPatternAllDataToAll: unsupported T; extend mpi_type_of<T>()");
339 == sim->m_simulation_config.getIntParameters(
"global_number_of_facets"))
342 static_cast<int>(sim->global_array_split
343 / sim->m_simulation_config.getIntParameters(
"numerical_layers"));
352 std::cerr << static_cast<std::string>(
"[MpiCommunicationPatterns]: ")
353 <<
static_cast<std::string
>(
e.what()) <<
'\n';
354 throw BadInput(
static_cast<std::string
>(
"[MpiCommunicationPatterns]: ")
355 +
static_cast<std::string
>(
e.what()));
360 std::cerr <<
"[MpiCommunicationPatterns]: split_id out of bounds.\n";
361 throw std::runtime_error(
362 static_cast<std::string
>(
"[MpiCommunicationPatterns]: split_id out of bounds."));
365 if (sim->my_color == 0)
379 if (sim->other_color_exists == 0)
387 if (sim->my_color == 0 && sim->my_sub_rank == 0)
392 else if (sim->my_color == 0)
404 if (
s >
static_cast<std::size_t
>(
INT_MAX))
406 std::cerr <<
"[MpiCommunicationPatterns]: count > INT_MAX\n";
407 throw std::overflow_error(
"[MpiCommunicationPatterns]: count > INT_MAX.");
409 return static_cast<int>(
s);
413 if (sim->my_color == 1 && sim->my_sub_rank == 0)
418 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