change mask bits and don't call convertor if we received directly into the
user buffer.. This commit was SVN r10665.
Этот коммит содержится в:
родитель
429c25095e
Коммит
fe480cd003
@ -97,10 +97,11 @@ ompi_mtl_datatype_unpack(struct ompi_convertor_t *convertor,
|
||||
iov.iov_base = buffer;
|
||||
max_data = iov.iov_len;
|
||||
|
||||
ompi_convertor_unpack(convertor, &iov, &iov_count,
|
||||
&max_data, &free_after);
|
||||
|
||||
|
||||
if (max_data > 0 && ompi_convertor_need_buffers(convertor)) {
|
||||
ompi_convertor_unpack(convertor, &iov, &iov_count,
|
||||
&max_data, &free_after);
|
||||
free(buffer);
|
||||
}
|
||||
|
||||
|
@ -115,13 +115,13 @@ extern mca_mtl_mx_component_t mca_mtl_mx_component;
|
||||
* | |
|
||||
*/
|
||||
|
||||
#define MX_CONTEXT_MASK 0xFFFF000000000000
|
||||
#define MX_SOURCE_MASK 0x0000FFFF00000000
|
||||
#define MX_TAG_MASK 0x00000000FFFFFFFF
|
||||
|
||||
#define MX_CONTEXT_IGNR MX_CONTEXT_MASK
|
||||
#define MX_SOURCE_IGNR MX_SOURCE_MASK
|
||||
#define MX_TAG_IGNR 0x00000000EFFFFFFF
|
||||
#define MX_SOURCE_IGNR ~MX_SOURCE_MASK
|
||||
/* we need to keep top bit (sign bit) of the tag
|
||||
collectives use this to distinguish the message */
|
||||
#define MX_TAG_IGNR 0xFFFFFFFF80000000
|
||||
|
||||
/* get the tag from the bits */
|
||||
#define MX_GET_TAG(match_bits, tag) \
|
||||
@ -149,25 +149,26 @@ extern mca_mtl_mx_component_t mca_mtl_mx_component;
|
||||
/* receive posting */
|
||||
#define MX_SET_RECV_BITS(match_bits, mask_bits, contextid, source, tag) \
|
||||
{ \
|
||||
match_bits = mask_bits = 0; \
|
||||
match_bits = 0; \
|
||||
mask_bits = ~match_bits; \
|
||||
match_bits = contextid; \
|
||||
match_bits = (match_bits << 16); \
|
||||
\
|
||||
if (MPI_ANY_SOURCE == source) { \
|
||||
match_bits = (match_bits << 32); \
|
||||
mask_bits |= MX_SOURCE_IGNR; \
|
||||
mask_bits &= MX_SOURCE_IGNR; \
|
||||
} else { \
|
||||
match_bits |= source; \
|
||||
match_bits = (match_bits << 32); \
|
||||
} \
|
||||
\
|
||||
if (MPI_ANY_TAG == tag) { \
|
||||
mask_bits |= MX_TAG_IGNR; \
|
||||
mask_bits &= MX_TAG_IGNR; \
|
||||
} else { \
|
||||
match_bits |= (MX_TAG_MASK & tag); \
|
||||
} \
|
||||
\
|
||||
mask_bits = ~mask_bits; \
|
||||
mask_bits = mask_bits; \
|
||||
}
|
||||
|
||||
|
||||
|
@ -59,7 +59,7 @@ ompi_mtl_mx_irecv(struct mca_mtl_base_module_t* mtl,
|
||||
src,
|
||||
tag);
|
||||
|
||||
#if 0
|
||||
#if 0
|
||||
printf("recv bits: 0x%016llx 0x%016llx\n", match_bits, mask_bits);
|
||||
#endif
|
||||
mx_return = mx_irecv( ompi_mtl_mx.mx_endpoint,
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user