@@ -21,22 +21,25 @@ namespace KokkosComm {
21
21
// Scoped enumeration to specify the communication mode of a sending operation.
22
22
// See section 3.4 of the MPI standard for a complete specification.
23
23
enum class CommMode {
24
- // Default mode: lets the user override the send operations behavior at
25
- // compile-time. E.g., this can be set to mode "Synchronous" for debug
26
- // builds by defining KOKKOSCOMM_FORCE_SYNCHRONOUS_MODE.
24
+ // Default mode: lets the user override the send operations behavior at compile-time. E.g. this can be set to mode
25
+ // "Synchronous" for debug builds by defining KOKKOSCOMM_FORCE_SYNCHRONOUS_MODE.
27
26
Default,
28
- // Standard mode: MPI implementation decides whether outgoing messages will
29
- // be buffered. Send operations can be started whether or not a matching
30
- // receive has been started. They may complete before a matching receive is
31
- // started. Standard mode is non-local: successful completion of the send
32
- // operation may depend on the occurrence of a matching receive.
27
+ // Standard mode: MPI implementation decides whether outgoing messages will be buffered. Send operations can be
28
+ // started whether or not a matching receive has been started. They may complete before a matching receive is started.
29
+ // Standard mode is non-local: successful completion of the send operation may depend on the occurrence of a matching
30
+ // receive.
33
31
Standard,
34
- // Ready mode: Send operations may be started only if the matching receive is
35
- // already started.
32
+ // Buffered mode: Send operation can be started whether or not a matching receive has been started. It may complete
33
+ // before a matching receive is started. However, unlike the standard send, this operation is local, and its
34
+ // completion does not depend on the occurrence of a matching receive. Thus, if a send is executed and no matching
35
+ // receive is started, then MPI must buffer the outgoing message, so as to allow the send call to complete. An error
36
+ // will occur if there is insufficient buffer space. The amount of available buffer space is controlled by the user
37
+ // (see Section 3.6). Buffer allocation by the user may be required for the buffered mode to be effective.
38
+ Buffered,
39
+ // Ready mode: Send operations may be started only if the matching receive is already started.
36
40
Ready,
37
- // Synchronous mode: Send operations complete successfully only if a matching
38
- // receive is started, and the receive operation has started to receive the
39
- // message sent.
41
+ // Synchronous mode: Send operations complete successfully only if a matching receive is started, and the receive
42
+ // operation has started to receive the message sent.
40
43
Synchronous,
41
44
};
42
45
0 commit comments