1
1

Merge pull request #1219 from matcabral/PSM2_tag_hashing

Support for PSM2 hashing lookup in message queue.
Этот коммит содержится в:
Matias Cabral 2015-12-14 12:01:55 -08:00
родитель 3e308f41f7 9a1f9be146
Коммит 7cfd7d50b9
3 изменённых файлов: 19 добавлений и 19 удалений

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

@ -419,9 +419,9 @@ int ompi_mtl_psm2_progress( void ) {
if (mtl_psm2_request->type == OMPI_mtl_psm2_IRECV) { if (mtl_psm2_request->type == OMPI_mtl_psm2_IRECV) {
mtl_psm2_request->super.ompi_req->req_status.MPI_SOURCE = mtl_psm2_request->super.ompi_req->req_status.MPI_SOURCE =
psm2_status.msg_tag.tag2; psm2_status.msg_tag.tag1;
mtl_psm2_request->super.ompi_req->req_status.MPI_TAG = mtl_psm2_request->super.ompi_req->req_status.MPI_TAG =
psm2_status.msg_tag.tag1; psm2_status.msg_tag.tag0;
mtl_psm2_request->super.ompi_req->req_status._ucount = mtl_psm2_request->super.ompi_req->req_status._ucount =
psm2_status.nbytes; psm2_status.nbytes;

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

@ -46,8 +46,8 @@ int ompi_mtl_psm2_iprobe(struct mca_mtl_base_module_t* mtl,
if (err == PSM2_OK) { if (err == PSM2_OK) {
*flag = 1; *flag = 1;
if(MPI_STATUS_IGNORE != status) { if(MPI_STATUS_IGNORE != status) {
status->MPI_SOURCE = mqstat.msg_tag.tag2; status->MPI_SOURCE = mqstat.msg_tag.tag1;
status->MPI_TAG = mqstat.msg_tag.tag1; status->MPI_TAG = mqstat.msg_tag.tag0;
status->_ucount = mqstat.nbytes; status->_ucount = mqstat.nbytes;
switch (mqstat.error_code) { switch (mqstat.error_code) {
@ -95,8 +95,8 @@ ompi_mtl_psm2_improbe(struct mca_mtl_base_module_t *mtl,
if (err == PSM2_OK) { if (err == PSM2_OK) {
if(MPI_STATUS_IGNORE != status) { if(MPI_STATUS_IGNORE != status) {
status->MPI_SOURCE = mqstat.msg_tag.tag2; status->MPI_SOURCE = mqstat.msg_tag.tag1;
status->MPI_TAG = mqstat.msg_tag.tag1; status->MPI_TAG = mqstat.msg_tag.tag0;
status->_ucount = mqstat.nbytes; status->_ucount = mqstat.nbytes;
switch (mqstat.error_code) { switch (mqstat.error_code) {
@ -118,7 +118,7 @@ ompi_mtl_psm2_improbe(struct mca_mtl_base_module_t *mtl,
msg->comm = comm; msg->comm = comm;
msg->req_ptr = mqreq; msg->req_ptr = mqreq;
msg->peer = mqstat.msg_tag.tag2; msg->peer = mqstat.msg_tag.tag1;
msg->count = mqstat.nbytes; msg->count = mqstat.nbytes;
*message = msg; *message = msg;

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

@ -62,29 +62,29 @@ typedef struct mca_mtl_psm2_component_t mca_mtl_psm2_component_t;
OMPI_DECLSPEC extern mca_mtl_psm2_component_t mca_mtl_psm2_component; OMPI_DECLSPEC extern mca_mtl_psm2_component_t mca_mtl_psm2_component;
#define PSM2_MAKE_MQTAG(ctxt,rank,utag,tag) \ #define PSM2_MAKE_MQTAG(ctxt,rank,utag,tag) \
do { \ do { \
(tag).tag0 = ctxt; \ (tag).tag0 = utag; \
(tag).tag1 = utag; \ (tag).tag1 = rank; \
(tag).tag2 = rank; \ (tag).tag2 = ctxt; \
} while (0) } while (0)
#define PSM2_MAKE_TAGSEL(user_rank, user_tag, user_ctxt, tag, _tagsel) \ #define PSM2_MAKE_TAGSEL(user_rank, user_tag, user_ctxt, tag, _tagsel) \
do { \ do { \
(tag).tag0 = user_ctxt; \ (tag).tag0 = user_tag; \
(tag).tag1 = user_tag; \ (tag).tag1 = user_rank; \
(tag).tag2 = user_rank; \ (tag).tag2 = user_ctxt; \
(_tagsel).tag0 = 0xffffffffULL; \ (_tagsel).tag0 = 0xffffffffULL; \
(_tagsel).tag1 = 0xffffffffULL; \ (_tagsel).tag1 = 0xffffffffULL; \
(_tagsel).tag2 = 0xffffffffULL; \ (_tagsel).tag2 = 0xffffffffULL; \
if((user_tag) == MPI_ANY_TAG) \ if((user_tag) == MPI_ANY_TAG) \
{ \ { \
(_tagsel).tag1 = 0x80000000ULL; \ (_tagsel).tag0 = 0x80000000ULL; \
(tag).tag1 = 0x00000000ULL; \ (tag).tag0 = 0x00000000ULL; \
} \ } \
if((user_rank) == MPI_ANY_SOURCE) \ if((user_rank) == MPI_ANY_SOURCE) \
{ \ { \
(_tagsel).tag2 = 0x00000000ULL; \ (_tagsel).tag1 = 0x00000000ULL; \
} \ } \
} while (0) } while (0)