MPI.h¶
Note
The documentation on this page was automatically extracted from the DOLFIN C++ code and may need to be edited or expanded.
-
class
MPIInfo
¶
-
class
MPI
¶ This class provides utility functions for easy communication with MPI and handles cases when DOLFIN is not configured with MPI.
-
static unsigned int
process_number
()¶ Return process rank (uses MPI_COMM_WORLD) Warning: This function is deprecated. Use dolfin::MPI::rank
-
static unsigned int
num_processes
()¶ Return number of processes for MPI_COMM_WORLD. Warning: This function is deprecated. Use dolfin::MPI::size.
-
static unsigned int
rank
(const MPI_Comm comm)¶ Return process rank for the communicator
-
static unsigned int
size
(const MPI_Comm comm)¶ Return size of the group (number of processes) associated with the communicator
-
static bool
is_broadcaster
(const MPI_Comm comm)¶ Determine whether we should broadcast (based on current parallel policy)
-
static bool
is_receiver
(const MPI_Comm comm)¶ Determine whether we should receive (based on current parallel policy)
-
static void
barrier
(const MPI_Comm comm)¶ Set a barrier (synchronization point)
-
static void
all_to_all
(const MPI_Comm comm, std::vector<std::vector<T>> &in_values, std::vector<std::vector<T>> &out_values)¶ Send in_values[p0] to process p0 and receive values from process p1 in out_values[p1]
-
static void
broadcast
(const MPI_Comm comm, std::vector<T> &value, unsigned int broadcaster = 0)¶ Broadcast vector of value from broadcaster to all processes
-
static void
broadcast
(const MPI_Comm comm, T &value, unsigned int broadcaster = 0)¶ Broadcast single primitive from broadcaster to all processes
-
static void
scatter
(const MPI_Comm comm, const std::vector<std::vector<T>> &in_values, std::vector<T> &out_value, unsigned int sending_process = 0)¶ Scatter vector in_values[i] to process i
-
static void
scatter
(const MPI_Comm comm, const std::vector<T> &in_values, T &out_value, unsigned int sending_process = 0)¶ Scatter primitive in_values[i] to process i
-
static void
gather
(const MPI_Comm comm, const std::vector<T> &in_values, std::vector<T> &out_values, unsigned int receiving_process = 0)¶ Gather values on one process
-
static void
gather
(const MPI_Comm comm, const std::string &in_values, std::vector<std::string> &out_values, unsigned int receiving_process = 0)¶ Gather strings on one process
-
static void
all_gather
(const MPI_Comm comm, const std::vector<T> &in_values, std::vector<T> &out_values)¶ Gather values from all proceses. Same data count from each process (wrapper for MPI_Allgather)
-
static void
all_gather
(const MPI_Comm comm, const std::vector<T> &in_values, std::vector<std::vector<T>> &out_values)¶ Gather values from each process (variable count per process)
-
static void
all_gather
(const MPI_Comm comm, const T &in_value, std::vector<T> &out_values)¶ Gather values, one primitive from each process (MPI_Allgather)
-
static T
max
(const MPI_Comm comm, const T &value)¶ Return global max value
-
static T
min
(const MPI_Comm comm, const T &value)¶ Return global min value
-
static T
sum
(const MPI_Comm comm, const T &value)¶ Sum values and return sum
-
static T
all_reduce
(const MPI_Comm comm, const T &value, X op)¶ All reduce
-
static std::size_t
global_offset
(const MPI_Comm comm, std::size_t range, bool exclusive)¶ Find global offset (index) (wrapper for MPI_(Ex)Scan with MPI_SUM as reduction op)
-
static void
send_recv
(const MPI_Comm comm, const std::vector<T> &send_value, unsigned int dest, int send_tag, std::vector<T> &recv_value, unsigned int source, int recv_tag)¶ Send-receive data between processes (blocking)
-
static void
send_recv
(const MPI_Comm comm, const std::vector<T> &send_value, unsigned int dest, std::vector<T> &recv_value, unsigned int source)¶ Send-receive data between processes
-
static std::pair<std::size_t, std::size_t>
local_range
(const MPI_Comm comm, std::size_t N)¶ Return local range for local process, splitting [0, N - 1] into size() portions of almost equal size
-
static std::pair<std::size_t, std::size_t>
local_range
(const MPI_Comm comm, unsigned int process, std::size_t N)¶ Return local range for given process, splitting [0, N - 1] into size() portions of almost equal size
-
static std::pair<std::size_t, std::size_t>
compute_local_range
(unsigned int process, std::size_t N, unsigned int size)¶ Return local range for given process, splitting [0, N - 1] into size() portions of almost equal size
-
static unsigned int
index_owner
(const MPI_Comm comm, std::size_t index, std::size_t N)¶ Return which process owns index (inverse of local_range)
-
static unsigned int