This header contains MPI collective operations, which implement various parallel algorithms that require the coordination of all processes within a communicator. The header collectives_fwd.hpp provides forward declarations for each of these operations. To include only specific collective algorithms, use the headers boost/mpi/collectives/algorithm_name.hpp.

This header defines facilities to support MPI communicators with graph topologies, using the graph interface defined by the Boost Graph Library. One can construct a communicator whose topology is described by any graph meeting the requirements of the Boost Graph Library's graph concepts. Likewise, any communicator that has a graph topology can be viewed as a graph by the Boost Graph Library, permitting one to use the BGL's graph algorithms on the process topology.

namespaceboost{template<>structgraph_traits<mpi::graph_communicator>;namespacempi{classgraph_communicator;// Returns the source vertex from an edge in the graph topology of a communicator. intsource(conststd::pair<int,int>& edge,constgraph_communicator&);// Returns the target vertex from an edge in the graph topology of a communicator. inttarget(conststd::pair<int,int>& edge,constgraph_communicator&);// Returns an iterator range containing all of the edges outgoing from the given vertex in a graph topology of a communicator. unspecifiedout_edges(int vertex,constgraph_communicator& comm);// Returns the out-degree of a vertex in the graph topology of a communicator. intout_degree(int vertex,constgraph_communicator& comm);// Returns an iterator range containing all of the neighbors of the given vertex in the communicator's graph topology. unspecifiedadjacent_vertices(int vertex,constgraph_communicator& comm);// Returns an iterator range that contains all of the vertices with the communicator's graph topology, i.e., all of the process ranks in the communicator. std::pair<counting_iterator<int>,counting_iterator<int>>vertices(constgraph_communicator& comm);// Returns the number of vertices within the graph topology of the communicator, i.e., the number of processes in the communicator. intnum_vertices(constgraph_communicator& comm);// Returns an iterator range that contains all of the edges with the communicator's graph topology. unspecifiededges(constgraph_communicator& comm);// Returns the number of edges in the communicator's graph topology. intnum_edges(constgraph_communicator& comm);identity_property_mapget(vertex_index_t,constgraph_communicator&);intget(vertex_index_t,constgraph_communicator&,int);}}

This header provides a mapping from function objects to MPI_Op constants used in MPI collective operations. It also provides several new function object types not present in the standard <functional> header that have direct mappings to MPI_Op.

This header provides the facilities for packing Serializable data types into a buffer using MPI_Pack. The buffers can then be transmitted via MPI and then be unpacked either via the facilities in packed_oarchive.hpp or MPI_Unpack.

This header provides the facilities for unpacking Serializable data types from a buffer using MPI_Unpack. The buffers are typically received via MPI and have been packed either by via the facilities in packed_iarchive.hpp or MPI_Pack.

This header interacts with the Python bindings for Boost.MPI. The routines in this header can be used to register user-defined and library-defined data types with Boost.MPI for efficient (de-)serialization and separate transmission of skeletons and content.

This header provides facilities that allow the structure of data types (called the "skeleton") to be transmitted and received separately from the content stored in those data types. These facilities are useful when the data in a stable data structure (e.g., a mesh or a graph) will need to be transmitted repeatedly. In this case, transmitting the skeleton only once saves both communication effort (it need not be sent again) and local computation (serialization need only be performed once for the content).

This header contains all of the forward declarations required to use transmit skeletons of data structures and the content of data structures separately. To actually transmit skeletons or content, include the header boost/mpi/skeleton_and_content.hpp.