@@ -479,6 +479,56 @@ MPI Functionality and Features
479
479
480
480
- All MPI-3 functionality is supported.
481
481
482
+ - Note that starting with Open MPI v4.0.0, prototypes for several
483
+ legacy MPI-1 symbols that were deleted in the MPI-3.0 specification
484
+ (which was published in 2012) are no longer available by default in
485
+ mpi.h. Specifically, several MPI-1 symbols were deprecated in the
486
+ 1996 publishing of the MPI-2.0 specification. These deprecated
487
+ symbols were eventually removed from the MPI-3.0 specification in
488
+ 2012.
489
+
490
+ The symbols that now no longer appear by default in Open MPI's mpi.h
491
+ are:
492
+
493
+ - MPI_Address (replaced by MPI_Get_address)
494
+ - MPI_Errhandler_create (replaced by MPI_Comm_create_errhandler)
495
+ - MPI_Errhandler_get (replaced by MPI_Comm_get_errhandler)
496
+ - MPI_Errhandler_set (replaced by MPI_Comm_set_errhandler)
497
+ - MPI_Type_extent (replaced by MPI_Type_get_extent)
498
+ - MPI_Type_hindexed (replaced by MPI_Type_create_hindexed)
499
+ - MPI_Type_hvector (replaced by MPI_Type_create_hvector)
500
+ - MPI_Type_lb (replaced by MPI_Type_get_extent)
501
+ - MPI_Type_struct (replaced by MPI_Type_create_struct)
502
+ - MPI_Type_ub (replaced by MPI_Type_get_extent)
503
+ - MPI_LB (replaced by MPI_Type_create_resized)
504
+ - MPI_UB (replaced by MPI_Type_create_resized)
505
+ - MPI_COMBINER_HINDEXED_INTEGER
506
+ - MPI_COMBINER_HVECTOR_INTEGER
507
+ - MPI_COMBINER_STRUCT_INTEGER
508
+ - MPI_Handler_function (replaced by MPI_Comm_errhandler_function)
509
+
510
+ Although these symbols are no longer prototyped in mpi.h, they
511
+ are still present in the MPI library in Open MPI v4.0.x. This
512
+ enables legacy MPI applications to link and run successfully with
513
+ Open MPI v4.0.x, even though they will fail to compile.
514
+
515
+ *** Future releases of Open MPI beyond the v4.0.x series may
516
+ remove these symbols altogether.
517
+
518
+ *** The Open MPI team STRONGLY encourages all MPI application
519
+ developers to stop using these constructs that were first
520
+ deprecated over 20 years ago, and finally removed from the MPI
521
+ specification in MPI-3.0 (in 2012).
522
+
523
+ *** The Open MPI FAQ (https://www.open-mpi.org/faq/) contains
524
+ examples of how to update legacy MPI applications using these
525
+ deleted symbols to use the "new" symbols.
526
+
527
+ All that being said, if you are unable to immediately update your
528
+ application to stop using these legacy MPI-1 symbols, you can
529
+ re-enable them in mpi.h by configuring Open MPI with the
530
+ --enable-mpi-compatibility flag.
531
+
482
532
- Rank reordering support is available using the TreeMatch library. It
483
533
is activated for the graph and dist_graph topologies.
484
534
@@ -706,6 +756,32 @@ Network Support
706
756
mechanisms for Open MPI to utilize single-copy semantics for shared
707
757
memory.
708
758
759
+ - In prior versions of Open MPI, InfiniBand and RoCE support was
760
+ provided through the openib BTL and ob1 PML plugins. Starting with
761
+ Open MPI 4.0.0, InfiniBand support through the openib+ob1 plugins is
762
+ both deprecated and superseded by the UCX PML component.
763
+
764
+ UCX is an open-source optimized communication library which supports
765
+ multiple networks, including RoCE, InfiniBand, uGNI, TCP, shared
766
+ memory, and others.
767
+
768
+ While the openib BTL depended on libibverbs, the UCX PML depends on
769
+ the UCX library. The UCX library can be downloaded from
770
+ http://www.openucx.org/ or from various Linux distribution
771
+ repositories (e.g., Fedora/RedHat yum repositories). The UCX
772
+ library is also part of Mellanox OFED and Mellanox HPC-X binary
773
+ distributions.
774
+
775
+ Once installed, Open MPI can be built with UCX support by adding
776
+ --with-ucx to the Open MPI configure command. Once Open MPI is
777
+ configured to use UCX, the runtime will automatically select the UCX
778
+ PML if one of the supported networks is detected (e.g., InfiniBand).
779
+ It's possible to force using UCX in the mpirun or oshrun command
780
+ lines by specifying any or all of the following mca parameters:
781
+ "-mca pml ucx" for MPI point-to-point operations, "-mca spml ucx"
782
+ for OpenSHMEM support, and "-mca osc ucx" for MPI RMA (one-sided)
783
+ operations.
784
+
709
785
Open MPI Extensions
710
786
-------------------
711
787
@@ -1018,6 +1094,19 @@ NETWORKING SUPPORT / OPTIONS
1018
1094
covers most cases. This option is only needed for special
1019
1095
configurations.
1020
1096
1097
+ --with-ucx=<directory>
1098
+ Specify the directory where the UCX libraries and header files are
1099
+ located. This option is generally only necessary if the UCX headers
1100
+ and libraries are not in default compiler/linker search paths.
1101
+
1102
+ --with-ucx-libdir=<directory>
1103
+ Look in directory for the UCX libraries. By default, Open MPI will
1104
+ look in <ucx_directory>/lib and <ucx_ directory>/lib64, which covers
1105
+ most cases. This option is only needed for special configurations.
1106
+
1107
+ --with-usnic
1108
+ Abort configure if Cisco usNIC support cannot be built.
1109
+
1021
1110
--with-verbs=<directory>
1022
1111
Specify the directory where the verbs (also known as OpenFabrics
1023
1112
verbs, or Linux verbs, and previously known as OpenIB) libraries and
@@ -1063,8 +1152,6 @@ NETWORKING SUPPORT / OPTIONS
1063
1152
package, configure will safely abort with a helpful message telling
1064
1153
you that you should not use --with-verbs-usnic.
1065
1154
1066
- --with-usnic
1067
- Abort configure if Cisco usNIC support cannot be built.
1068
1155
1069
1156
RUN-TIME SYSTEM SUPPORT
1070
1157
@@ -2032,7 +2119,7 @@ timer - High-resolution timers
2032
2119
Each framework typically has one or more components that are used at
2033
2120
run-time. For example, the btl framework is used by the MPI layer to
2034
2121
send bytes across different types underlying networks. The tcp btl,
2035
- for example, sends messages across TCP-based networks; the openib btl
2122
+ for example, sends messages across TCP-based networks; the UCX PML
2036
2123
sends messages across OpenFabrics-based networks.
2037
2124
2038
2125
Each component typically has some tunable parameters that can be
0 commit comments