19 #ifndef MTL_PORTALS_H_HAS_BEEN_INCLUDED
20 #define MTL_PORTALS_H_HAS_BEEN_INCLUDED
22 #include "ompi_config.h"
24 #include "ompi/class/ompi_free_list.h"
26 #include "ompi/mca/mtl/base/base.h"
27 #include "opal/datatype/opal_convertor.h"
29 #include "ompi/mca/common/portals/common_portals.h"
37 ptl_handle_ni_t ptl_ni_h;
40 ptl_handle_eq_t ptl_eq_h;
42 ptl_handle_eq_t ptl_unex_eq_h;
45 ptl_handle_me_t ptl_unex_long_me_h;
48 ptl_handle_me_t ptl_send_catchall_me_h;
51 ptl_handle_me_t ptl_ack_catchall_me_h;
54 ptl_handle_me_t ptl_read_catchall_me_h;
57 ptl_handle_md_t ptl_zero_md_h;
61 int ptl_recv_short_mds_num;
62 int ptl_recv_short_mds_size;
67 int ptl_expected_queue_size;
68 int ptl_unexpected_queue_size;
71 ptl_md_t ptl_short_md;
72 ptl_handle_md_t ptl_short_md_h;
74 int ptl_num_copy_blocks;
75 ptl_size_t ptl_copy_block_len;
77 int *ptl_copy_block_free_list;
78 int ptl_copy_block_first_free;
81 ptl_handle_eq_t ptl_empty_eq_h;
84 bool ptl_aggressive_polling;
87 bool ptl_use_rendezvous;
118 #define PTL_PROTOCOL_MASK 0xF000000000000000ULL
119 #define PTL_CONTEXT_MASK 0x0FFF000000000000ULL
120 #define PTL_SOURCE_MASK 0x0000FFFF00000000ULL
121 #define PTL_TAG_MASK 0x00000000FFFFFFFFULL
123 #define PTL_PROTOCOL_IGNR PTL_PROTOCOL_MASK
124 #define PTL_CONTEXT_IGNR PTL_CONTEXT_MASK
125 #define PTL_SOURCE_IGNR PTL_SOURCE_MASK
126 #define PTL_TAG_IGNR 0x000000007FFFFFFFULL
128 #define PTL_SHORT_MSG 0x1000000000000000ULL
129 #define PTL_LONG_MSG 0x2000000000000000ULL
130 #define PTL_READY_MSG 0x4000000000000000ULL
133 #define PTL_SET_SEND_BITS(match_bits, contextid, source, tag, type) \
135 match_bits = contextid; \
136 match_bits = (match_bits << 16); \
137 match_bits |= source; \
138 match_bits = (match_bits << 32); \
139 match_bits |= (PTL_TAG_MASK & tag) | type; \
143 #define PTL_SET_RECV_BITS(match_bits, ignore_bits, contextid, source, tag) \
146 ignore_bits = PTL_PROTOCOL_IGNR; \
148 match_bits = contextid; \
149 match_bits = (match_bits << 16); \
151 if (MPI_ANY_SOURCE == source) { \
152 match_bits = (match_bits << 32); \
153 ignore_bits |= PTL_SOURCE_IGNR; \
155 match_bits |= source; \
156 match_bits = (match_bits << 32); \
159 if (MPI_ANY_TAG == tag) { \
160 ignore_bits |= PTL_TAG_IGNR; \
162 match_bits |= (PTL_TAG_MASK & tag); \
166 #define PTL_IS_SHORT_MSG(match_bits) \
167 (0 != (PTL_SHORT_MSG & match_bits))
168 #define PTL_IS_LONG_MSG(match_bits) \
169 (0 != (PTL_LONG_MSG & match_bits))
170 #define PTL_IS_READY_MSG(match_bits) \
171 (0 != (PTL_READY_MSG & match_bits))
172 #define PTL_IS_SYNC_MSG(event) \
173 (0 != event.hdr_data)
175 #define PTL_GET_TAG(match_bits) ((int)(match_bits & PTL_TAG_MASK))
176 #define PTL_GET_SOURCE(match_bits) ((int)((match_bits & PTL_SOURCE_MASK) >> 32))
196 mca_pml_base_send_mode_t mode);
203 mca_pml_base_send_mode_t mode,
244 extern int ompi_mtl_portals_progress(
void);
The opal_list_t interface is used to provide a generic doubly-linked list container for Open MPI...
Definition: mtl_portals.h:100
Remote Open MPI process structure.
Definition: proc.h:56
Definition: ompi_free_list.h:39
Definition: ompi_free_list.h:62
An abstraction that represents a connection to a endpoint process.
Definition: mtl_mx_endpoint.h:50
Definition: opal_convertor.h:90
Matching Transport Layer.
Definition: opal_list.h:147
MTL module interface functions and attributes.
Definition: mtl.h:399
Definition: mtl_portals.h:34
Definition: communicator.h:118
#define OBJ_CLASS_DECLARATION(NAME)
Declaration for class descriptor.
Definition: opal_object.h:236