Skip to content

Commit 2bc432d

Browse files
author
Francois WELLENREITER
committed
MTL portals4 : fix around triggered rndv operations
1 parent 6d7ada9 commit 2bc432d

File tree

4 files changed

+181
-158
lines changed

4 files changed

+181
-158
lines changed

ompi/mca/mtl/portals4/mtl_portals4.h

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,8 @@ extern mca_mtl_portals4_module_t ompi_mtl_portals4;
158158
/* send posting */
159159
#define MTL_PORTALS4_SET_SEND_BITS(match_bits, contextid, source, tag, type) \
160160
{ \
161-
match_bits = contextid; \
161+
match_bits = 0; \
162+
match_bits |= contextid; \
162163
match_bits = (match_bits << 24); \
163164
match_bits |= source; \
164165
match_bits = (match_bits << 24); \
@@ -171,7 +172,7 @@ extern mca_mtl_portals4_module_t ompi_mtl_portals4;
171172
match_bits = 0; \
172173
ignore_bits = MTL_PORTALS4_PROTOCOL_IGNR; \
173174
\
174-
match_bits = contextid; \
175+
match_bits |= contextid; \
175176
match_bits = (match_bits << 24); \
176177
\
177178
if (MPI_ANY_SOURCE == source) { \
@@ -193,38 +194,38 @@ extern mca_mtl_portals4_module_t ompi_mtl_portals4;
193194
(0 != (MTL_PORTALS4_SHORT_MSG & match_bits))
194195
#define MTL_PORTALS4_IS_LONG_MSG(match_bits) \
195196
(0 != (MTL_PORTALS4_LONG_MSG & match_bits))
196-
#define MTL_PORTALS4_IS_READY_MSG(match_bits) \
197-
(0 != (MTL_PORTALS4_READY_MSG & match_bits))
198197

199198
#define MTL_PORTALS4_GET_TAG(match_bits) \
200199
((int)(match_bits & MTL_PORTALS4_TAG_MASK))
201200
#define MTL_PORTALS4_GET_SOURCE(match_bits) \
202201
((int)((match_bits & MTL_PORTALS4_SOURCE_MASK) >> 24))
202+
#define MTL_PORTALS4_GET_CONTEXT(match_bits) \
203+
((int)((match_bits & MTL_PORTALS4_CONTEXT_MASK) >> 48))
203204

204205

205-
/* hda_data bit manipulation
206-
*
207-
* 0 1234567 01234567 01234567 0123 4567 01234567 01234567 01234567 01234567
208-
* | | |
209-
* ^| | context id | message tag
210-
* || | |
211-
* +---- is_sync
212-
*/
213-
214206
#define MTL_PORTALS4_SYNC_MSG 0x8000000000000000ULL
215207

216-
#define MTL_PORTALS4_SET_HDR_DATA(hdr_data, tag, contextid, sync) \
208+
#define MTL_PORTALS4_SET_HDR_DATA(hdr_data, opcount, length, sync) \
217209
{ \
218-
hdr_data = (sync) ? 1 : 0; \
219-
hdr_data = (hdr_data << 39); \
220-
hdr_data |= contextid; \
221-
hdr_data = (hdr_data << 24); \
222-
hdr_data |= (MTL_PORTALS4_TAG_MASK & tag); \
210+
hdr_data = 0; \
211+
hdr_data |= opcount & 0x7FFFULL; \
212+
hdr_data = (hdr_data << 48); \
213+
hdr_data |= (length & 0xFFFFFFFFFFFFULL); \
214+
hdr_data |= (sync ? MTL_PORTALS4_SYNC_MSG : 0); \
223215
}
224216

217+
#define MTL_PORTALS4_GET_LENGTH(hdr_data) ((size_t)(hdr_data & 0xFFFFFFFFFFFFULL))
225218
#define MTL_PORTALS4_IS_SYNC_MSG(hdr_data) \
226219
(0 != (MTL_PORTALS4_SYNC_MSG & hdr_data))
227220

221+
#define MTL_PORTALS4_SET_READ_BITS(match_bits, contextid, tag) \
222+
{ \
223+
match_bits = 0; \
224+
match_bits |= (contextid & 0x0000000000FFFFFFULL); \
225+
match_bits = (match_bits << 24); \
226+
match_bits |= (tag & 0x0000000000FFFFFFULL); \
227+
}
228+
228229
/* mtl-portals4 helpers */
229230
OMPI_DECLSPEC ompi_proc_t *
230231
ompi_mtl_portals4_get_proc_group(struct ompi_group_t *group, int rank);

ompi/mca/mtl/portals4/mtl_portals4_probe.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ completion_fn(ptl_event_t *ev, ompi_mtl_portals4_base_request_t *ptl_base_reques
4141
ptl_request->status.MPI_SOURCE = MTL_PORTALS4_GET_SOURCE(ev->match_bits);
4242
ptl_request->status.MPI_TAG = MTL_PORTALS4_GET_TAG(ev->match_bits);
4343
ptl_request->status.MPI_ERROR = MPI_SUCCESS;
44-
ptl_request->status._ucount += ev->mlength;
44+
ptl_request->status._ucount =MTL_PORTALS4_GET_LENGTH(ev->hdr_data);
4545
if (ev->type != PTL_EVENT_SEARCH) {
4646
ptl_request->message = ompi_mtl_portals4_message_alloc(ev);
4747
}

0 commit comments

Comments
 (0)