1
1

change mask bits and don't call convertor if we received directly into the

user buffer.. 

This commit was SVN r10665.
Этот коммит содержится в:
Galen Shipman 2006-07-05 21:10:09 +00:00
родитель 429c25095e
Коммит fe480cd003
3 изменённых файлов: 13 добавлений и 11 удалений

Просмотреть файл

@ -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,