diff --git a/ompi/mca/btl/gm/btl_gm_component.c b/ompi/mca/btl/gm/btl_gm_component.c index f1b42e6360..22a1d2c1ce 100644 --- a/ompi/mca/btl/gm/btl_gm_component.c +++ b/ompi/mca/btl/gm/btl_gm_component.c @@ -422,6 +422,7 @@ mca_btl_gm_modex_send(void) for (i = 0; i < mca_btl_gm_component.gm_num_btls; i++) { mca_btl_gm_module_t *btl = mca_btl_gm_component.gm_btls[i]; addrs[i] = btl->gm_addr; + MCA_BTL_GM_ADDR_HTON(addrs[i]); } } rc = mca_pml_base_modex_send (&mca_btl_gm_component.super.btl_version, addrs, size); diff --git a/ompi/mca/btl/gm/btl_gm_endpoint.h b/ompi/mca/btl/gm/btl_gm_endpoint.h index ed508cec72..c3ed3793fa 100644 --- a/ompi/mca/btl/gm/btl_gm_endpoint.h +++ b/ompi/mca/btl/gm/btl_gm_endpoint.h @@ -25,6 +25,11 @@ #include "ompi/mca/btl/btl.h" #include "btl_gm_frag.h" #include "btl_gm.h" + +#ifdef HAVE_ARPA_INET_H +#include +#endif + #if defined(c_plusplus) || defined(__cplusplus) extern "C" { #endif @@ -43,7 +48,26 @@ struct mca_btl_gm_addr_t { unsigned int port_id; }; typedef struct mca_btl_gm_addr_t mca_btl_gm_addr_t; - + +#if GM_API_VERSION > 0x200 +#define MCA_BTL_GM_ADDR_HTON(addr) \ + addr.global_id = htonl(addr.global_id); \ + addr.node_id = htonl(addr.node_id); \ + addr.port_id = htonl(addr.port_id); + +#define MCA_BTL_GM_ADDR_NTOH(addr) \ + addr.global_id = ntohl(addr.global_id); \ + addr.node_id = ntohl(addr.node_id); \ + addr.port_id = ntohl(addr.port_id); +#else +#define MCA_BTL_GM_ADDR_HTON(addr) \ + addr.node_id = htonl(addr.node_id); \ + addr.port_id = htonl(addr.port_id); + +#define MCA_BTL_GM_ADDR_NTOH(addr) \ + addr.node_id = ntohl(addr.node_id); \ + addr.port_id = ntohl(addr.port_id); +#endif /** * An abstraction that represents a connection to a endpoint process. diff --git a/ompi/mca/btl/gm/btl_gm_proc.c b/ompi/mca/btl/gm/btl_gm_proc.c index d1f45f9b9c..4a6de265fb 100644 --- a/ompi/mca/btl/gm/btl_gm_proc.c +++ b/ompi/mca/btl/gm/btl_gm_proc.c @@ -102,7 +102,7 @@ mca_btl_gm_proc_t* mca_btl_gm_proc_create(ompi_proc_t* ompi_proc) { mca_btl_gm_proc_t* gm_proc = NULL; size_t size; - int rc; + int rc, i; /* Check if we have already created a GM proc * structure for this ompi process */ @@ -148,6 +148,11 @@ mca_btl_gm_proc_t* mca_btl_gm_proc_create(ompi_proc_t* ompi_proc) OBJ_RELEASE(gm_proc); return NULL; } + + for (i = 0 ; i < gm_proc->proc_addr_count; ++i) { + MCA_BTL_GM_ADDR_NTOH(gm_proc->proc_addrs[i]); + } + return gm_proc; }