1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
5 <title>Mapping from C MPI to Boost.MPI</title>
6 <link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
7 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
8 <link rel="home" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
9 <link rel="up" href="../mpi.html" title="Chapter 26. Boost.MPI">
10 <link rel="prev" href="tutorial.html" title="Tutorial">
11 <link rel="next" href="reference.html" title="Reference">
13 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table cellpadding="2" width="100%"><tr>
15 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
16 <td align="center"><a href="../../../index.html">Home</a></td>
17 <td align="center"><a href="../../../libs/libraries.htm">Libraries</a></td>
18 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
19 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
20 <td align="center"><a href="../../../more/index.htm">More</a></td>
23 <div class="spirit-nav">
24 <a accesskey="p" href="tutorial.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../mpi.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
27 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
28 <a name="mpi.c_mapping"></a><a class="link" href="c_mapping.html" title="Mapping from C MPI to Boost.MPI">Mapping from C MPI to Boost.MPI</a>
29 </h2></div></div></div>
31 This section provides tables that map from the functions and constants of the
32 standard C MPI to their Boost.MPI equivalents. It will be most useful for users
33 that are already familiar with the C or Fortran interfaces to MPI, or for porting
34 existing parallel programs to Boost.MPI.
37 Note that this is not a perfect one to one mapping, the Boost.MPI will sometime
38 use function from the C API in a way that is transparent for the end user.
39 For example, <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node50.html#Node50" target="_top"><code class="computeroutput"><span class="identifier">MPI_Probe</span> <span class="keyword">and</span> <span class="identifier">friends</span></code></a> can be used to implement
40 asynchronous send/recv.
43 <a name="mpi.c_mapping.point_to_point_communication"></a><p class="title"><b>Table 26.1. Point-to-point communication</b></p>
44 <div class="table-contents"><table class="table" summary="Point-to-point communication">
65 <code class="computeroutput"><span class="identifier">MPI_ANY_SOURCE</span></code>
70 <code class="computeroutput"><span class="identifier">any_source</span></code>
77 <code class="computeroutput"><span class="identifier">MPI_ANY_TAG</span></code>
82 <code class="computeroutput"><span class="identifier">any_tag</span></code>
89 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node40.html#Node40" target="_top"><code class="computeroutput"><span class="identifier">MPI_Bsend</span></code></a>
101 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node51.html#Node51" target="_top"><code class="computeroutput"><span class="identifier">MPI_Bsend_init</span></code></a>
113 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node42.html#Node42" target="_top"><code class="computeroutput"><span class="identifier">MPI_Buffer_attach</span></code></a>
125 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node42.html#Node42" target="_top"><code class="computeroutput"><span class="identifier">MPI_Buffer_detach</span></code></a>
137 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node50.html#Node50" target="_top"><code class="computeroutput"><span class="identifier">MPI_Cancel</span></code></a>
142 <code class="computeroutput"><a class="link" href="../boost/mpi/request.html#id-1_3_27_7_21_2_1_1_7_3-bb">request::cancel</a></code>
149 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node35.html#Node35" target="_top"><code class="computeroutput"><span class="identifier">MPI_Get_count</span></code></a>
154 <code class="computeroutput"><a class="link" href="../boost/mpi/status.html#id-1_3_27_7_24_2_1_1_4_5-bb">status::count</a></code>
161 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node46.html#Node46" target="_top"><code class="computeroutput"><span class="identifier">MPI_Ibsend</span></code></a>
173 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node50.html#Node50" target="_top"><code class="computeroutput"><span class="identifier">MPI_Iprobe</span></code></a>
178 <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html#id-1_3_27_7_6_2_1_1_3_26-bb">communicator::iprobe</a></code>
185 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node46.html#Node46" target="_top"><code class="computeroutput"><span class="identifier">MPI_Irsend</span></code></a>
197 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node46.html#Node46" target="_top"><code class="computeroutput"><span class="identifier">MPI_Isend</span></code></a>
202 <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html#id-1_3_27_7_6_2_1_1_3_16-bb">communicator::isend</a></code>
209 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node46.html#Node46" target="_top"><code class="computeroutput"><span class="identifier">MPI_Issend</span></code></a>
221 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node46.html#Node46" target="_top"><code class="computeroutput"><span class="identifier">MPI_Irecv</span></code></a>
226 <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html#id-1_3_27_7_6_2_1_1_3_16-bb">communicator::irecv</a></code>
233 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node50.html#Node50" target="_top"><code class="computeroutput"><span class="identifier">MPI_Probe</span></code></a>
238 <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html#id-1_3_27_7_6_2_1_1_3_25-bb">communicator::probe</a></code>
245 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node53.html#Node53" target="_top"><code class="computeroutput"><span class="identifier">MPI_PROC_NULL</span></code></a>
257 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node34.html#Node34" target="_top"><code class="computeroutput"><span class="identifier">MPI_Recv</span></code></a>
262 <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html#id-1_3_27_7_6_2_1_1_3_9-bb">communicator::recv</a></code>
269 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node51.html#Node51" target="_top"><code class="computeroutput"><span class="identifier">MPI_Recv_init</span></code></a>
281 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node47.html#Node47" target="_top"><code class="computeroutput"><span class="identifier">MPI_Request_free</span></code></a>
293 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node40.html#Node40" target="_top"><code class="computeroutput"><span class="identifier">MPI_Rsend</span></code></a>
305 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node51.html#Node51" target="_top"><code class="computeroutput"><span class="identifier">MPI_Rsend_init</span></code></a>
317 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node31.html#Node31" target="_top"><code class="computeroutput"><span class="identifier">MPI_Send</span></code></a>
322 <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html#id-1_3_27_7_6_2_1_1_3_4-bb">communicator::send</a></code>
329 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node52.html#Node52" target="_top"><code class="computeroutput"><span class="identifier">MPI_Sendrecv</span></code></a>
334 <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html#id-1_3_27_7_6_2_1_1_3_15-bb">communicator::sendrecv</a></code>
341 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node52.html#Node52" target="_top"><code class="computeroutput"><span class="identifier">MPI_Sendrecv_replace</span></code></a>
353 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node51.html#Node51" target="_top"><code class="computeroutput"><span class="identifier">MPI_Send_init</span></code></a>
365 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node40.html#Node40" target="_top"><code class="computeroutput"><span class="identifier">MPI_Ssend</span></code></a>
377 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node51.html#Node51" target="_top"><code class="computeroutput"><span class="identifier">MPI_Ssend_init</span></code></a>
389 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node51.html#Node51" target="_top"><code class="computeroutput"><span class="identifier">MPI_Start</span></code></a>
401 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node51.html#Node51" target="_top"><code class="computeroutput"><span class="identifier">MPI_Startall</span></code></a>
413 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node47.html#Node47" target="_top"><code class="computeroutput"><span class="identifier">MPI_Test</span></code></a>
418 <code class="computeroutput"><a class="link" href="../boost/mpi/request.html#id-1_3_27_7_21_2_1_1_7_1-bb">request::test</a></code>
425 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node47.html#Node47" target="_top"><code class="computeroutput"><span class="identifier">MPI_Testall</span></code></a>
430 <code class="computeroutput"><a class="link" href="../boost/mpi/test_all.html" title="Function test_all">test_all</a></code>
437 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node47.html#Node47" target="_top"><code class="computeroutput"><span class="identifier">MPI_Testany</span></code></a>
442 <code class="computeroutput"><a class="link" href="../boost/mpi/test_any.html" title="Function template test_any">test_any</a></code>
449 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node47.html#Node47" target="_top"><code class="computeroutput"><span class="identifier">MPI_Testsome</span></code></a>
454 <code class="computeroutput"><a class="link" href="../boost/mpi/test_some.html" title="Function test_some">test_some</a></code>
461 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node50.html#Node50" target="_top"><code class="computeroutput"><span class="identifier">MPI_Test_cancelled</span></code></a>
466 <code class="computeroutput"><a class="link" href="../boost/mpi/status.html#id-1_3_27_7_24_2_1_1_4_4-bb">status::cancelled</a></code>
473 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node47.html#Node47" target="_top"><code class="computeroutput"><span class="identifier">MPI_Wait</span></code></a>
478 <code class="computeroutput"><a class="link" href="../boost/mpi/request.html#id-1_3_27_7_21_2_1_1_7_1-bb">request::wait</a></code>
485 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node47.html#Node47" target="_top"><code class="computeroutput"><span class="identifier">MPI_Waitall</span></code></a>
490 <code class="computeroutput"><a class="link" href="../boost/mpi/wait_all.html" title="Function wait_all">wait_all</a></code>
497 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node47.html#Node47" target="_top"><code class="computeroutput"><span class="identifier">MPI_Waitany</span></code></a>
502 <code class="computeroutput"><a class="link" href="../boost/mpi/wait_any.html" title="Function template wait_any">wait_any</a></code>
509 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node47.html#Node47" target="_top"><code class="computeroutput"><span class="identifier">MPI_Waitsome</span></code></a>
514 <code class="computeroutput"><a class="link" href="../boost/mpi/wait_some.html" title="Function wait_some">wait_some</a></code>
521 <br class="table-break"><p>
522 Boost.MPI automatically maps C and C++ data types to their MPI equivalents.
523 The following table illustrates the mappings between C++ types and MPI datatype
527 <a name="mpi.c_mapping.datatypes"></a><p class="title"><b>Table 26.2. Datatypes</b></p>
528 <div class="table-contents"><table class="table" summary="Datatypes">
549 <code class="computeroutput"><span class="identifier">MPI_CHAR</span></code>
554 <code class="computeroutput"><span class="keyword">signed</span> <span class="keyword">char</span></code>
561 <code class="computeroutput"><span class="identifier">MPI_SHORT</span></code>
566 <code class="computeroutput"><span class="keyword">signed</span> <span class="keyword">short</span>
567 <span class="keyword">int</span></code>
574 <code class="computeroutput"><span class="identifier">MPI_INT</span></code>
579 <code class="computeroutput"><span class="keyword">signed</span> <span class="keyword">int</span></code>
586 <code class="computeroutput"><span class="identifier">MPI_LONG</span></code>
591 <code class="computeroutput"><span class="keyword">signed</span> <span class="keyword">long</span>
592 <span class="keyword">int</span></code>
599 <code class="computeroutput"><span class="identifier">MPI_UNSIGNED_CHAR</span></code>
604 <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">char</span></code>
611 <code class="computeroutput"><span class="identifier">MPI_UNSIGNED_SHORT</span></code>
616 <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">short</span>
617 <span class="keyword">int</span></code>
624 <code class="computeroutput"><span class="identifier">MPI_UNSIGNED_INT</span></code>
629 <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">int</span></code>
636 <code class="computeroutput"><span class="identifier">MPI_UNSIGNED_LONG</span></code>
641 <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">long</span>
642 <span class="keyword">int</span></code>
649 <code class="computeroutput"><span class="identifier">MPI_FLOAT</span></code>
654 <code class="computeroutput"><span class="keyword">float</span></code>
661 <code class="computeroutput"><span class="identifier">MPI_DOUBLE</span></code>
666 <code class="computeroutput"><span class="keyword">double</span></code>
673 <code class="computeroutput"><span class="identifier">MPI_LONG_DOUBLE</span></code>
678 <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">double</span></code>
685 <code class="computeroutput"><span class="identifier">MPI_BYTE</span></code>
697 <code class="computeroutput"><span class="identifier">MPI_PACKED</span></code>
702 used internally for <a class="link" href="tutorial.html#mpi.tutorial.user_data_types" title="User-defined data types">serialized
710 <code class="computeroutput"><span class="identifier">MPI_LONG_LONG_INT</span></code>
715 <code class="computeroutput"><span class="keyword">long</span> <span class="keyword">long</span>
716 <span class="keyword">int</span></code>, if supported by compiler
723 <code class="computeroutput"><span class="identifier">MPI_UNSIGNED_LONG_LONG_INT</span></code>
728 <code class="computeroutput"><span class="keyword">unsigned</span> <span class="keyword">long</span>
729 <span class="keyword">long</span> <span class="keyword">int</span></code>,
730 if supported by compiler
737 <code class="computeroutput"><span class="identifier">MPI_FLOAT_INT</span></code>
742 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="keyword">float</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span></code>
749 <code class="computeroutput"><span class="identifier">MPI_DOUBLE_INT</span></code>
754 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="keyword">double</span><span class="special">,</span>
755 <span class="keyword">int</span><span class="special">></span></code>
762 <code class="computeroutput"><span class="identifier">MPI_LONG_INT</span></code>
767 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="keyword">long</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span></code>
774 <code class="computeroutput"><span class="identifier">MPI_2INT</span></code>
779 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="keyword">int</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span></code>
786 <code class="computeroutput"><span class="identifier">MPI_SHORT_INT</span></code>
791 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="keyword">short</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span></code>
798 <code class="computeroutput"><span class="identifier">MPI_LONG_DOUBLE_INT</span></code>
803 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="keyword">long</span> <span class="keyword">double</span><span class="special">,</span> <span class="keyword">int</span><span class="special">></span></code>
810 <br class="table-break"><p>
811 Boost.MPI does not provide direct wrappers to the MPI derived datatypes functionality.
812 Instead, Boost.MPI relies on the <a href="../../../libs/serialization/doc" target="_top">Boost.Serialization</a>
813 library to construct MPI datatypes for user-defined classes. The section on
814 <a class="link" href="tutorial.html#mpi.tutorial.user_data_types" title="User-defined data types">user-defined data types</a>
815 describes this mechanism, which is used for types that marked as "MPI
816 datatypes" using <code class="computeroutput"><a class="link" href="../boost/mpi/is_mpi_datatype.html" title="Struct template is_mpi_datatype">is_mpi_datatype</a></code>.
819 The derived datatypes table that follows describes which C++ types correspond
820 to the functionality of the C MPI's datatype constructor. Boost.MPI may not
821 actually use the C MPI function listed when building datatypes of a certain
822 form. Since the actual datatypes built by Boost.MPI are typically hidden from
823 the user, many of these operations are called internally by Boost.MPI.
826 <a name="mpi.c_mapping.derived_datatypes"></a><p class="title"><b>Table 26.3. Derived datatypes</b></p>
827 <div class="table-contents"><table class="table" summary="Derived datatypes">
848 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node56.html#Node56" target="_top"><code class="computeroutput"><span class="identifier">MPI_Address</span></code></a>
853 used automatically in Boost.MPI for MPI version 1.x
860 <a href="http://www.mpi-forum.org/docs/mpi-20-html/node76.htm#Node76" target="_top"><code class="computeroutput"><span class="identifier">MPI_Get_address</span></code></a>
865 used automatically in Boost.MPI for MPI version 2.0 and higher
872 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node58.html#Node58" target="_top"><code class="computeroutput"><span class="identifier">MPI_Type_commit</span></code></a>
877 used automatically in Boost.MPI
884 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node55.html#Node55" target="_top"><code class="computeroutput"><span class="identifier">MPI_Type_contiguous</span></code></a>
896 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node56.html#Node56" target="_top"><code class="computeroutput"><span class="identifier">MPI_Type_extent</span></code></a>
901 used automatically in Boost.MPI
908 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node58.html#Node58" target="_top"><code class="computeroutput"><span class="identifier">MPI_Type_free</span></code></a>
913 used automatically in Boost.MPI
920 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node55.html#Node55" target="_top"><code class="computeroutput"><span class="identifier">MPI_Type_hindexed</span></code></a>
925 any type used as a subobject
932 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node55.html#Node55" target="_top"><code class="computeroutput"><span class="identifier">MPI_Type_hvector</span></code></a>
944 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node55.html#Node55" target="_top"><code class="computeroutput"><span class="identifier">MPI_Type_indexed</span></code></a>
949 any type used as a subobject
956 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node57.html#Node57" target="_top"><code class="computeroutput"><span class="identifier">MPI_Type_lb</span></code></a>
968 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node56.html#Node56" target="_top"><code class="computeroutput"><span class="identifier">MPI_Type_size</span></code></a>
973 used automatically in Boost.MPI
980 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node55.html#Node55" target="_top"><code class="computeroutput"><span class="identifier">MPI_Type_struct</span></code></a>
985 user-defined classes and structs with MPI 1.x
992 <a href="http://www.mpi-forum.org/docs/mpi-20-html/node76.htm#Node76" target="_top"><code class="computeroutput"><span class="identifier">MPI_Type_create_struct</span></code></a>
997 user-defined classes and structs with MPI 2.0 and higher
1004 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node57.html#Node57" target="_top"><code class="computeroutput"><span class="identifier">MPI_Type_ub</span></code></a>
1016 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node55.html#Node55" target="_top"><code class="computeroutput"><span class="identifier">MPI_Type_vector</span></code></a>
1021 used automatically in Boost.MPI
1028 <br class="table-break"><p>
1029 MPI's packing facilities store values into a contiguous buffer, which can later
1030 be transmitted via MPI and unpacked into separate values via MPI's unpacking
1031 facilities. As with datatypes, Boost.MPI provides an abstract interface to
1032 MPI's packing and unpacking facilities. In particular, the two archive classes
1033 <code class="computeroutput"><a class="link" href="../boost/mpi/packed_oarchive.html" title="Class packed_oarchive">packed_oarchive</a></code>
1034 and <code class="computeroutput"><a class="link" href="../boost/mpi/packed_iarchive.html" title="Class packed_iarchive">packed_iarchive</a></code>
1035 can be used to pack or unpack a contiguous buffer using MPI's facilities.
1038 <a name="mpi.c_mapping.packing_and_unpacking"></a><p class="title"><b>Table 26.4. Packing and unpacking</b></p>
1039 <div class="table-contents"><table class="table" summary="Packing and unpacking">
1052 Boost.MPI Equivalent
1060 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node62.html#Node62" target="_top"><code class="computeroutput"><span class="identifier">MPI_Pack</span></code></a>
1065 <code class="computeroutput"><a class="link" href="../boost/mpi/packed_oarchive.html" title="Class packed_oarchive">packed_oarchive</a></code>
1072 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node62.html#Node62" target="_top"><code class="computeroutput"><span class="identifier">MPI_Pack_size</span></code></a>
1077 used internally by Boost.MPI
1084 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node62.html#Node62" target="_top"><code class="computeroutput"><span class="identifier">MPI_Unpack</span></code></a>
1089 <code class="computeroutput"><a class="link" href="../boost/mpi/packed_iarchive.html" title="Class packed_iarchive">packed_iarchive</a></code>
1096 <br class="table-break"><p>
1097 Boost.MPI supports a one-to-one mapping for most of the MPI collectives. For
1098 each collective provided by Boost.MPI, the underlying C MPI collective will
1099 be invoked when it is possible (and efficient) to do so.
1102 <a name="mpi.c_mapping.collectives"></a><p class="title"><b>Table 26.5. Collectives</b></p>
1103 <div class="table-contents"><table class="table" summary="Collectives">
1116 Boost.MPI Equivalent
1124 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node73.html#Node73" target="_top"><code class="computeroutput"><span class="identifier">MPI_Allgather</span></code></a>
1129 <code class="computeroutput"><a class="link" href="../boost/mpi/all_gather.html" title="Function all_gather">all_gather</a></code>
1136 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node73.html#Node73" target="_top"><code class="computeroutput"><span class="identifier">MPI_Allgatherv</span></code></a>
1141 most uses supported by <code class="computeroutput"><a class="link" href="../boost/mpi/all_gather.html" title="Function all_gather">all_gather</a></code>
1148 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node82.html#Node82" target="_top"><code class="computeroutput"><span class="identifier">MPI_Allreduce</span></code></a>
1153 <code class="computeroutput"><a class="link" href="../boost/mpi/all_reduce.html" title="Function all_reduce">all_reduce</a></code>
1160 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node75.html#Node75" target="_top"><code class="computeroutput"><span class="identifier">MPI_Alltoall</span></code></a>
1165 <code class="computeroutput"><a class="link" href="../boost/mpi/all_to_all.html" title="Function all_to_all">all_to_all</a></code>
1172 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node75.html#Node75" target="_top"><code class="computeroutput"><span class="identifier">MPI_Alltoallv</span></code></a>
1177 most uses supported by <code class="computeroutput"><a class="link" href="../boost/mpi/all_to_all.html" title="Function all_to_all">all_to_all</a></code>
1184 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node66.html#Node66" target="_top"><code class="computeroutput"><span class="identifier">MPI_Barrier</span></code></a>
1189 <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html#id-1_3_27_7_6_2_1_1_3_27-bb">communicator::barrier</a></code>
1196 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node67.html#Node67" target="_top"><code class="computeroutput"><span class="identifier">MPI_Bcast</span></code></a>
1201 <code class="computeroutput"><a class="link" href="../boost/mpi/broadcast.html" title="Function broadcast">broadcast</a></code>
1208 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node69.html#Node69" target="_top"><code class="computeroutput"><span class="identifier">MPI_Gather</span></code></a>
1213 <code class="computeroutput"><a class="link" href="../boost/mpi/gather.html" title="Function gather">gather</a></code>
1220 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node69.html#Node69" target="_top"><code class="computeroutput"><span class="identifier">MPI_Gatherv</span></code></a>
1225 most uses supported by <code class="computeroutput"><a class="link" href="../boost/mpi/gather.html" title="Function gather">gather</a></code>, other usages
1226 supported by <code class="computeroutput"><a class="link" href="../boost/mpi/gatherv.html" title="Function gatherv">gatherv</a></code>
1233 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node77.html#Node77" target="_top"><code class="computeroutput"><span class="identifier">MPI_Reduce</span></code></a>
1238 <code class="computeroutput"><a class="link" href="../boost/mpi/reduce.html" title="Function reduce">reduce</a></code>
1245 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node83.html#Node83" target="_top"><code class="computeroutput"><span class="identifier">MPI_Reduce_scatter</span></code></a>
1257 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node84.html#Node84" target="_top"><code class="computeroutput"><span class="identifier">MPI_Scan</span></code></a>
1262 <code class="computeroutput"><a class="link" href="../boost/mpi/scan.html" title="Function scan">scan</a></code>
1269 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node71.html#Node71" target="_top"><code class="computeroutput"><span class="identifier">MPI_Scatter</span></code></a>
1274 <code class="computeroutput"><a class="link" href="../boost/mpi/scatter.html" title="Function scatter">scatter</a></code>
1281 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node71.html#Node71" target="_top"><code class="computeroutput"><span class="identifier">MPI_Scatterv</span></code></a>
1286 most uses supported by <code class="computeroutput"><a class="link" href="../boost/mpi/scatter.html" title="Function scatter">scatter</a></code>, other uses
1287 supported by <code class="computeroutput"><a class="link" href="../boost/mpi/scatterv.html" title="Function scatterv">scatterv</a></code>
1294 <a href="http://www.mpi-forum.org/docs/mpi-20-html/node145.htm#Node145" target="_top"><code class="computeroutput"><span class="identifier">MPI_IN_PLACE</span></code></a>
1299 supported implicitly by <code class="computeroutput"><a class="link" href="../boost/mpi/all_reduce.html" title="Function all_reduce">all_reduce by omitting the output
1307 <br class="table-break"><p>
1308 Boost.MPI uses function objects to specify how reductions should occur in its
1309 equivalents to <code class="computeroutput"><span class="identifier">MPI_Allreduce</span></code>,
1310 <code class="computeroutput"><span class="identifier">MPI_Reduce</span></code>, and <code class="computeroutput"><span class="identifier">MPI_Scan</span></code>. The following table illustrates
1311 how <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node78.html#Node78" target="_top">predefined</a>
1312 and <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node80.html#Node80" target="_top">user-defined</a>
1313 reduction operations can be mapped between the C MPI and Boost.MPI.
1316 <a name="mpi.c_mapping.reduction_operations"></a><p class="title"><b>Table 26.6. Reduction operations</b></p>
1317 <div class="table-contents"><table class="table" summary="Reduction operations">
1330 Boost.MPI Equivalent
1338 <code class="computeroutput"><span class="identifier">MPI_BAND</span></code>
1343 <code class="computeroutput"><a class="link" href="../boost/mpi/bitwise_and.html" title="Struct template bitwise_and">bitwise_and</a></code>
1350 <code class="computeroutput"><span class="identifier">MPI_BOR</span></code>
1355 <code class="computeroutput"><a class="link" href="../boost/mpi/bitwise_or.html" title="Struct template bitwise_or">bitwise_or</a></code>
1362 <code class="computeroutput"><span class="identifier">MPI_BXOR</span></code>
1367 <code class="computeroutput"><a class="link" href="../boost/mpi/bitwise_xor.html" title="Struct template bitwise_xor">bitwise_xor</a></code>
1374 <code class="computeroutput"><span class="identifier">MPI_LAND</span></code>
1379 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">logical_and</span></code>
1386 <code class="computeroutput"><span class="identifier">MPI_LOR</span></code>
1391 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">logical_or</span></code>
1398 <code class="computeroutput"><span class="identifier">MPI_LXOR</span></code>
1403 <code class="computeroutput"><a class="link" href="../boost/mpi/logical_xor.html" title="Struct template logical_xor">logical_xor</a></code>
1410 <code class="computeroutput"><span class="identifier">MPI_MAX</span></code>
1415 <code class="computeroutput"><a class="link" href="../boost/mpi/maximum.html" title="Struct template maximum">maximum</a></code>
1422 <code class="computeroutput"><span class="identifier">MPI_MAXLOC</span></code>
1434 <code class="computeroutput"><span class="identifier">MPI_MIN</span></code>
1439 <code class="computeroutput"><a class="link" href="../boost/mpi/minimum.html" title="Struct template minimum">minimum</a></code>
1446 <code class="computeroutput"><span class="identifier">MPI_MINLOC</span></code>
1458 <code class="computeroutput"><span class="identifier">MPI_Op_create</span></code>
1463 used internally by Boost.MPI
1470 <code class="computeroutput"><span class="identifier">MPI_Op_free</span></code>
1475 used internally by Boost.MPI
1482 <code class="computeroutput"><span class="identifier">MPI_PROD</span></code>
1487 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">multiplies</span></code>
1494 <code class="computeroutput"><span class="identifier">MPI_SUM</span></code>
1499 <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">plus</span></code>
1506 <br class="table-break"><p>
1507 MPI defines several special communicators, including <code class="computeroutput"><span class="identifier">MPI_COMM_WORLD</span></code>
1508 (including all processes that the local process can communicate with), <code class="computeroutput"><span class="identifier">MPI_COMM_SELF</span></code> (including only the local process),
1509 and <code class="computeroutput"><span class="identifier">MPI_COMM_EMPTY</span></code> (including
1510 no processes). These special communicators are all instances of the <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html" title="Class communicator">communicator</a></code>
1514 <a name="mpi.c_mapping.predefined_communicators"></a><p class="title"><b>Table 26.7. Predefined communicators</b></p>
1515 <div class="table-contents"><table class="table" summary="Predefined communicators">
1528 Boost.MPI Equivalent
1536 <code class="computeroutput"><span class="identifier">MPI_COMM_WORLD</span></code>
1541 a default-constructed <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html" title="Class communicator">communicator</a></code>
1548 <code class="computeroutput"><span class="identifier">MPI_COMM_SELF</span></code>
1553 a <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html" title="Class communicator">communicator</a></code>
1554 that contains only the current process
1561 <code class="computeroutput"><span class="identifier">MPI_COMM_EMPTY</span></code>
1566 a <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html" title="Class communicator">communicator</a></code>
1567 that evaluates false
1574 <br class="table-break"><p>
1575 Boost.MPI supports groups of processes through its <code class="computeroutput"><a class="link" href="../boost/mpi/group.html" title="Class group">group</a></code> class.
1578 <a name="mpi.c_mapping.group_operations_and_constants"></a><p class="title"><b>Table 26.8. Group operations and constants</b></p>
1579 <div class="table-contents"><table class="table" summary="Group operations and constants">
1592 Boost.MPI Equivalent
1600 <code class="computeroutput"><span class="identifier">MPI_GROUP_EMPTY</span></code>
1605 a default-constructed <code class="computeroutput"><a class="link" href="../boost/mpi/group.html" title="Class group">group</a></code>
1612 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node97.html#Node97" target="_top"><code class="computeroutput"><span class="identifier">MPI_Group_size</span></code></a>
1617 <code class="computeroutput"><a class="link" href="../boost/mpi/group.html#id-1_3_27_7_13_2_1_1_3_2-bb">group::size</a></code>
1624 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node97.html#Node97" target="_top"><code class="computeroutput"><span class="identifier">MPI_Group_rank</span></code></a>
1629 memberref boost::mpi::group::rank <code class="computeroutput"><span class="identifier">group</span><span class="special">::</span><span class="identifier">rank</span></code>
1636 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node97.html#Node97" target="_top"><code class="computeroutput"><span class="identifier">MPI_Group_translate_ranks</span></code></a>
1641 memberref boost::mpi::group::translate_ranks <code class="computeroutput"><span class="identifier">group</span><span class="special">::</span><span class="identifier">translate_ranks</span></code>
1648 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node97.html#Node97" target="_top"><code class="computeroutput"><span class="identifier">MPI_Group_compare</span></code></a>
1653 operators <code class="computeroutput"><span class="special">==</span></code> and <code class="computeroutput"><span class="special">!=</span></code>
1660 <code class="computeroutput"><span class="identifier">MPI_IDENT</span></code>
1665 operators <code class="computeroutput"><span class="special">==</span></code> and <code class="computeroutput"><span class="special">!=</span></code>
1672 <code class="computeroutput"><span class="identifier">MPI_SIMILAR</span></code>
1677 operators <code class="computeroutput"><span class="special">==</span></code> and <code class="computeroutput"><span class="special">!=</span></code>
1684 <code class="computeroutput"><span class="identifier">MPI_UNEQUAL</span></code>
1689 operators <code class="computeroutput"><span class="special">==</span></code> and <code class="computeroutput"><span class="special">!=</span></code>
1696 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node98.html#Node98" target="_top"><code class="computeroutput"><span class="identifier">MPI_Comm_group</span></code></a>
1701 <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html#id-1_3_27_7_6_2_1_1_3_3-bb">communicator::group</a></code>
1708 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node98.html#Node98" target="_top"><code class="computeroutput"><span class="identifier">MPI_Group_union</span></code></a>
1713 operator <code class="computeroutput"><span class="special">|</span></code> for groups
1720 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node98.html#Node98" target="_top"><code class="computeroutput"><span class="identifier">MPI_Group_intersection</span></code></a>
1725 operator <code class="computeroutput"><span class="special">&</span></code> for groups
1732 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node98.html#Node98" target="_top"><code class="computeroutput"><span class="identifier">MPI_Group_difference</span></code></a>
1737 operator <code class="computeroutput"><span class="special">-</span></code> for groups
1744 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node98.html#Node98" target="_top"><code class="computeroutput"><span class="identifier">MPI_Group_incl</span></code></a>
1749 <code class="computeroutput"><a class="link" href="../boost/mpi/group.html#id-1_3_27_7_13_2_1_1_3_6-bb">group::include</a></code>
1756 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node98.html#Node98" target="_top"><code class="computeroutput"><span class="identifier">MPI_Group_excl</span></code></a>
1761 <code class="computeroutput"><a class="link" href="../boost/mpi/group.html#id-1_3_27_7_13_2_1_1_3_6-bb">group::exclude</a></code>
1768 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node98.html#Node98" target="_top"><code class="computeroutput"><span class="identifier">MPI_Group_range_incl</span></code></a>
1780 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node98.html#Node98" target="_top"><code class="computeroutput"><span class="identifier">MPI_Group_range_excl</span></code></a>
1792 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node99.html#Node99" target="_top"><code class="computeroutput"><span class="identifier">MPI_Group_free</span></code></a>
1797 used automatically in Boost.MPI
1804 <br class="table-break"><p>
1805 Boost.MPI provides manipulation of communicators through the <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html" title="Class communicator">communicator</a></code> class.
1808 <a name="mpi.c_mapping.communicator_operations"></a><p class="title"><b>Table 26.9. Communicator operations</b></p>
1809 <div class="table-contents"><table class="table" summary="Communicator operations">
1822 Boost.MPI Equivalent
1830 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node101.html#Node101" target="_top"><code class="computeroutput"><span class="identifier">MPI_Comm_size</span></code></a>
1835 <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html#id-1_3_27_7_6_2_1_1_3_2-bb">communicator::size</a></code>
1842 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node101.html#Node101" target="_top"><code class="computeroutput"><span class="identifier">MPI_Comm_rank</span></code></a>
1847 <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html#id-1_3_27_7_6_2_1_1_3_1-bb">communicator::rank</a></code>
1854 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node101.html#Node101" target="_top"><code class="computeroutput"><span class="identifier">MPI_Comm_compare</span></code></a>
1859 operators <code class="computeroutput"><span class="special">==</span></code> and <code class="computeroutput"><span class="special">!=</span></code>
1866 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node102.html#Node102" target="_top"><code class="computeroutput"><span class="identifier">MPI_Comm_dup</span></code></a>
1871 <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html" title="Class communicator">communicator</a></code>
1872 class constructor using <code class="computeroutput"><span class="identifier">comm_duplicate</span></code>
1879 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node102.html#Node102" target="_top"><code class="computeroutput"><span class="identifier">MPI_Comm_create</span></code></a>
1884 <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html" title="Class communicator">communicator</a></code>
1892 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node102.html#Node102" target="_top"><code class="computeroutput"><span class="identifier">MPI_Comm_split</span></code></a>
1897 <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html#id-1_3_27_7_6_2_1_1_3_30-bb">communicator::split</a></code>
1904 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node103.html#Node103" target="_top"><code class="computeroutput"><span class="identifier">MPI_Comm_free</span></code></a>
1909 used automatically in Boost.MPI
1916 <br class="table-break"><p>
1917 Boost.MPI currently provides support for inter-communicators via the <code class="computeroutput"><a class="link" href="../boost/mpi/intercommunicator.html" title="Class intercommunicator">intercommunicator</a></code>
1921 <a name="mpi.c_mapping.inter_communicator_operations"></a><p class="title"><b>Table 26.10. Inter-communicator operations</b></p>
1922 <div class="table-contents"><table class="table" summary="Inter-communicator operations">
1935 Boost.MPI Equivalent
1943 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node112.html#Node112" target="_top"><code class="computeroutput"><span class="identifier">MPI_Comm_test_inter</span></code></a>
1948 use <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html#id-1_3_27_7_6_2_1_1_3_32-bb">communicator::as_intercommunicator</a></code>
1955 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node112.html#Node112" target="_top"><code class="computeroutput"><span class="identifier">MPI_Comm_remote_size</span></code></a>
1960 <code class="computeroutput"><a class="link" href="../boost/mpi/intercommunicator.html#id-1_3_27_7_15_2_1_1_4_4-bb">boost::mpi::intercommunicator::remote_size</a></code>
1961 <code class="computeroutput"><span class="identifier">intercommunicator</span><span class="special">::</span><span class="identifier">remote_size</span></code>
1968 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node112.html#Node112" target="_top"><code class="computeroutput"><span class="identifier">MPI_Comm_remote_group</span></code></a>
1973 <code class="computeroutput"><a class="link" href="../boost/mpi/intercommunicator.html#id-1_3_27_7_15_2_1_1_4_5-bb">intercommunicator::remote_group</a></code>
1980 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node113.html#Node113" target="_top"><code class="computeroutput"><span class="identifier">MPI_Intercomm_create</span></code></a>
1985 <code class="computeroutput"><a class="link" href="../boost/mpi/intercommunicator.html" title="Class intercommunicator">intercommunicator</a></code>
1993 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node113.html#Node113" target="_top"><code class="computeroutput"><span class="identifier">MPI_Intercomm_merge</span></code></a>
1998 <code class="computeroutput"><a class="link" href="../boost/mpi/intercommunicator.html#id-1_3_27_7_15_2_1_1_4_6-bb">intercommunicator::merge</a></code>
2005 <br class="table-break"><p>
2006 Boost.MPI currently provides no support for attribute caching.
2009 <a name="mpi.c_mapping.attributes_and_caching"></a><p class="title"><b>Table 26.11. Attributes and caching</b></p>
2010 <div class="table-contents"><table class="table" summary="Attributes and caching">
2023 Boost.MPI Equivalent
2031 <code class="computeroutput"><span class="identifier">MPI_NULL_COPY_FN</span></code>
2043 <code class="computeroutput"><span class="identifier">MPI_NULL_DELETE_FN</span></code>
2055 <code class="computeroutput"><span class="identifier">MPI_KEYVAL_INVALID</span></code>
2067 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node119.html#Node119" target="_top"><code class="computeroutput"><span class="identifier">MPI_Keyval_create</span></code></a>
2079 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node119.html#Node119" target="_top"><code class="computeroutput"><span class="identifier">MPI_Copy_function</span></code></a>
2091 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node119.html#Node119" target="_top"><code class="computeroutput"><span class="identifier">MPI_Delete_function</span></code></a>
2103 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node119.html#Node119" target="_top"><code class="computeroutput"><span class="identifier">MPI_Keyval_free</span></code></a>
2115 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node119.html#Node119" target="_top"><code class="computeroutput"><span class="identifier">MPI_Attr_put</span></code></a>
2127 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node119.html#Node119" target="_top"><code class="computeroutput"><span class="identifier">MPI_Attr_get</span></code></a>
2139 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node119.html#Node119" target="_top"><code class="computeroutput"><span class="identifier">MPI_Attr_delete</span></code></a>
2151 <br class="table-break"><p>
2152 Boost.MPI will provide complete support for creating communicators with different
2153 topologies and later querying those topologies. Support for graph topologies
2154 is provided via an interface to the <a href="http://www.boost.org/libs/graph/doc/index.html" target="_top">Boost
2155 Graph Library (BGL)</a>, where a communicator can be created which matches
2156 the structure of any BGL graph, and the graph topology of a communicator can
2157 be viewed as a BGL graph for use in existing, generic graph algorithms.
2160 <a name="mpi.c_mapping.process_topologies"></a><p class="title"><b>Table 26.12. Process topologies</b></p>
2161 <div class="table-contents"><table class="table" summary="Process topologies">
2174 Boost.MPI Equivalent
2182 <code class="computeroutput"><span class="identifier">MPI_GRAPH</span></code>
2187 unnecessary; use <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html#id-1_3_27_7_6_2_1_1_3_33-bb">communicator::as_graph_communicator</a></code>
2194 <code class="computeroutput"><span class="identifier">MPI_CART</span></code>
2199 unnecessary; use <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html#id-1_3_27_7_6_2_1_1_3_36-bb">communicator::has_cartesian_topology</a></code>
2206 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node133.html#Node133" target="_top"><code class="computeroutput"><span class="identifier">MPI_Cart_create</span></code></a>
2211 <code class="computeroutput"><a class="link" href="../boost/mpi/cartesian_communicator.html" title="Class cartesian_communicator">cartesian_communicator</a></code>
2219 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node134.html#Node134" target="_top"><code class="computeroutput"><span class="identifier">MPI_Dims_create</span></code></a>
2224 <code class="computeroutput"><a class="link" href="../boost/mpi/cartesian_dimensions.html" title="Function cartesian_dimensions">cartesian_dimensions</a></code>
2231 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node135.html#Node135" target="_top"><code class="computeroutput"><span class="identifier">MPI_Graph_create</span></code></a>
2236 <code class="computeroutput"><a class="link" href="../boost/mpi/graph_communicator.html" title="Class graph_communicator">graph_communicator
2244 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node136.html#Node136" target="_top"><code class="computeroutput"><span class="identifier">MPI_Topo_test</span></code></a>
2249 <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html#id-1_3_27_7_6_2_1_1_3_33-bb">communicator::as_graph_communicator</a></code>,
2250 <code class="computeroutput"><a class="link" href="../boost/mpi/communicator.html#id-1_3_27_7_6_2_1_1_3_36-bb">communicator::has_cartesian_topology</a></code>
2257 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node136.html#Node136" target="_top"><code class="computeroutput"><span class="identifier">MPI_Graphdims_get</span></code></a>
2262 <code class="computeroutput"><a class="link" href="reference.html#boost.mpi.num_vertices">num_vertices</a></code>,
2263 <code class="computeroutput"><a class="link" href="reference.html#boost.mpi.num_edges">num_edges</a></code>
2270 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node136.html#Node136" target="_top"><code class="computeroutput"><span class="identifier">MPI_Graph_get</span></code></a>
2275 <code class="computeroutput"><a class="link" href="reference.html#boost.mpi.vertices">vertices</a></code>,
2276 <code class="computeroutput"><a class="link" href="reference.html#boost.mpi.edges">edges</a></code>
2283 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node136.html#Node136" target="_top"><code class="computeroutput"><span class="identifier">MPI_Cartdim_get</span></code></a>
2288 <code class="computeroutput"><a class="link" href="../boost/mpi/cartesian_communicator.html#id-1_3_27_7_3_2_1_1_4_1-bb">cartesian_communicator::ndims </a></code>
2295 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node136.html#Node136" target="_top"><code class="computeroutput"><span class="identifier">MPI_Cart_get</span></code></a>
2300 <code class="computeroutput"><a class="link" href="../boost/mpi/cartesian_communicator.html#id-1_3_27_7_3_2_1_1_4_5-bb">cartesian_communicator::topology </a></code>
2307 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node136.html#Node136" target="_top"><code class="computeroutput"><span class="identifier">MPI_Cart_rank</span></code></a>
2312 <code class="computeroutput"><a class="link" href="../boost/mpi/cartesian_communicator.html#id-1_3_27_7_3_2_1_1_4_2-bb">cartesian_communicator::rank </a></code>
2319 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node136.html#Node136" target="_top"><code class="computeroutput"><span class="identifier">MPI_Cart_coords</span></code></a>
2324 <code class="computeroutput"><a class="link" href="../boost/mpi/cartesian_communicator.html#id-1_3_27_7_3_2_1_1_4_4-bb">cartesian_communicator::coordinates </a></code>
2331 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node136.html#Node136" target="_top"><code class="computeroutput"><span class="identifier">MPI_Graph_neighbors_count</span></code></a>
2336 <code class="computeroutput"><a class="link" href="reference.html#boost.mpi.out_degree">out_degree</a></code>
2343 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node136.html#Node136" target="_top"><code class="computeroutput"><span class="identifier">MPI_Graph_neighbors</span></code></a>
2348 <code class="computeroutput"><a class="link" href="reference.html#boost.mpi.out_edges">out_edges</a></code>,
2349 <code class="computeroutput"><a class="link" href="reference.html#boost.mpi.adjacent_vertices">adjacent_vertices</a></code>
2356 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node137.html#Node137" target="_top"><code class="computeroutput"><span class="identifier">MPI_Cart_shift</span></code></a>
2361 <code class="computeroutput"><a class="link" href="../boost/mpi/cartesian_communicator.html#id-1_3_27_7_3_2_1_1_4_3-bb">cartesian_communicator::shifted_ranks </a></code>
2368 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node138.html#Node138" target="_top"><code class="computeroutput"><span class="identifier">MPI_Cart_sub</span></code></a>
2373 <code class="computeroutput"><a class="link" href="../boost/mpi/cartesian_communicator.html" title="Class cartesian_communicator">cartesian_communicator</a></code>
2381 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node139.html#Node139" target="_top"><code class="computeroutput"><span class="identifier">MPI_Cart_map</span></code></a>
2393 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node139.html#Node139" target="_top"><code class="computeroutput"><span class="identifier">MPI_Graph_map</span></code></a>
2405 <br class="table-break"><p>
2406 Boost.MPI supports environmental inquires through the <code class="computeroutput"><a class="link" href="../boost/mpi/environment.html" title="Class environment">environment</a></code> class.
2409 <a name="mpi.c_mapping.environmental_inquiries"></a><p class="title"><b>Table 26.13. Environmental inquiries</b></p>
2410 <div class="table-contents"><table class="table" summary="Environmental inquiries">
2423 Boost.MPI Equivalent
2431 <code class="computeroutput"><span class="identifier">MPI_TAG_UB</span></code>
2436 unnecessary; use <code class="computeroutput"><a class="link" href="../boost/mpi/environment.html#id-1_3_27_7_10_2_1_1_10_4-bb">environment::max_tag</a></code>
2443 <code class="computeroutput"><span class="identifier">MPI_HOST</span></code>
2448 unnecessary; use <code class="computeroutput"><a class="link" href="../boost/mpi/environment.html#id-1_3_27_7_10_2_1_1_10_6-bb">environment::host_rank</a></code>
2455 <code class="computeroutput"><span class="identifier">MPI_IO</span></code>
2460 unnecessary; use <code class="computeroutput"><a class="link" href="../boost/mpi/environment.html#id-1_3_27_7_10_2_1_1_10_7-bb">environment::io_rank</a></code>
2467 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node143.html#Node147" target="_top"><code class="computeroutput"><span class="identifier">MPI_Get_processor_name</span></code></a>
2472 <code class="computeroutput"><a class="link" href="../boost/mpi/environment.html#id-1_3_27_7_10_2_1_1_10_8-bb">environment::processor_name</a></code>
2479 <br class="table-break"><p>
2480 Boost.MPI translates MPI errors into exceptions, reported via the <code class="computeroutput"><a class="link" href="../boost/mpi/exception.html" title="Class exception">exception</a></code>
2484 <a name="mpi.c_mapping.error_handling"></a><p class="title"><b>Table 26.14. Error handling</b></p>
2485 <div class="table-contents"><table class="table" summary="Error handling">
2498 Boost.MPI Equivalent
2506 <code class="computeroutput"><span class="identifier">MPI_ERRORS_ARE_FATAL</span></code>
2511 unused; errors are translated into Boost.MPI exceptions
2518 <code class="computeroutput"><span class="identifier">MPI_ERRORS_RETURN</span></code>
2523 unused; errors are translated into Boost.MPI exceptions
2530 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node148.html#Node148" target="_top"><code class="computeroutput"><span class="identifier">MPI_errhandler_create</span></code></a>
2535 unused; errors are translated into Boost.MPI exceptions
2542 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node148.html#Node148" target="_top"><code class="computeroutput"><span class="identifier">MPI_errhandler_set</span></code></a>
2547 unused; errors are translated into Boost.MPI exceptions
2554 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node148.html#Node148" target="_top"><code class="computeroutput"><span class="identifier">MPI_errhandler_get</span></code></a>
2559 unused; errors are translated into Boost.MPI exceptions
2566 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node148.html#Node148" target="_top"><code class="computeroutput"><span class="identifier">MPI_errhandler_free</span></code></a>
2571 unused; errors are translated into Boost.MPI exceptions
2578 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node148.html#Node148" target="_top"><code class="computeroutput"><span class="identifier">MPI_Error_string</span></code></a>
2583 used internally by Boost.MPI
2590 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node149.html#Node149" target="_top"><code class="computeroutput"><span class="identifier">MPI_Error_class</span></code></a>
2595 <code class="computeroutput"><a class="link" href="../boost/mpi/exception.html#id-1_3_27_7_11_2_1_1_4_4-bb">exception::error_class</a></code>
2602 <br class="table-break"><p>
2603 The MPI timing facilities are exposed via the Boost.MPI <code class="computeroutput"><a class="link" href="../boost/mpi/timer.html" title="Class timer">timer</a></code> class, which provides an
2604 interface compatible with the <a href="http://www.boost.org/libs/timer/index.html" target="_top">Boost
2608 <a name="mpi.c_mapping.timing_facilities"></a><p class="title"><b>Table 26.15. Timing facilities</b></p>
2609 <div class="table-contents"><table class="table" summary="Timing facilities">
2622 Boost.MPI Equivalent
2630 <code class="computeroutput"><span class="identifier">MPI_WTIME_IS_GLOBAL</span></code>
2635 unnecessary; use <code class="computeroutput"><a class="link" href="../boost/mpi/timer.html#id-1_3_27_7_25_2_1_1_5_1-bb">timer::time_is_global</a></code>
2642 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node150.html#Node150" target="_top"><code class="computeroutput"><span class="identifier">MPI_Wtime</span></code></a>
2647 use <code class="computeroutput"><a class="link" href="../boost/mpi/timer.html#id-1_3_27_7_25_2_1_1_3_2-bb">timer::elapsed</a></code>
2648 to determine the time elapsed from some specific starting point
2655 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node150.html#Node150" target="_top"><code class="computeroutput"><span class="identifier">MPI_Wtick</span></code></a>
2660 <code class="computeroutput"><a class="link" href="../boost/mpi/timer.html#id-1_3_27_7_25_2_1_1_3_4-bb">timer::elapsed_min</a></code>
2667 <br class="table-break"><p>
2668 MPI startup and shutdown are managed by the construction and destruction of
2669 the Boost.MPI <code class="computeroutput"><a class="link" href="../boost/mpi/environment.html" title="Class environment">environment</a></code>
2673 <a name="mpi.c_mapping.startup_shutdown_facilities"></a><p class="title"><b>Table 26.16. Startup/shutdown facilities</b></p>
2674 <div class="table-contents"><table class="table" summary="Startup/shutdown facilities">
2687 Boost.MPI Equivalent
2695 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node151.html#Node151" target="_top"><code class="computeroutput"><span class="identifier">MPI_Init</span></code></a>
2700 <code class="computeroutput"><a class="link" href="../boost/mpi/environment.html" title="Class environment">environment</a></code>
2708 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node151.html#Node151" target="_top"><code class="computeroutput"><span class="identifier">MPI_Finalize</span></code></a>
2713 <code class="computeroutput"><a class="link" href="../boost/mpi/environment.html" title="Class environment">environment</a></code>
2721 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node151.html#Node151" target="_top"><code class="computeroutput"><span class="identifier">MPI_Initialized</span></code></a>
2726 <code class="computeroutput"><a class="link" href="../boost/mpi/environment.html#id-1_3_27_7_10_2_1_1_10_2-bb">environment::initialized</a></code>
2733 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node151.html#Node151" target="_top"><code class="computeroutput"><span class="identifier">MPI_Abort</span></code></a>
2738 <code class="computeroutput"><a class="link" href="../boost/mpi/environment.html#id-1_3_27_7_10_2_1_1_10_1-bb">environment::abort</a></code>
2745 <br class="table-break"><p>
2746 Boost.MPI does not provide any support for the profiling facilities in MPI
2750 <a name="mpi.c_mapping.profiling_interface"></a><p class="title"><b>Table 26.17. Profiling interface</b></p>
2751 <div class="table-contents"><table class="table" summary="Profiling interface">
2764 Boost.MPI Equivalent
2772 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node153.html#Node153" target="_top"><code class="computeroutput"><span class="identifier">PMPI_</span><span class="special">*</span></code>
2785 <a href="http://www.mpi-forum.org/docs/mpi-1.1/mpi-11-html/node156.html#Node156" target="_top"><code class="computeroutput"><span class="identifier">MPI_Pcontrol</span></code></a>
2797 <br class="table-break">
2799 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
2800 <td align="left"></td>
2801 <td align="right"><div class="copyright-footer">Copyright © 2005-2007 Douglas Gregor,
2802 Matthias Troyer, Trustees of Indiana University<p>
2803 Distributed under the Boost Software License, Version 1.0. (See accompanying
2804 file LICENSE_1_0.txt or copy at <ulink url="http://www.boost.org/LICENSE_1_0.txt">
2805 http://www.boost.org/LICENSE_1_0.txt </ulink>)
2810 <div class="spirit-nav">
2811 <a accesskey="p" href="tutorial.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../mpi.html"><img src="../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>