Enable MX wireup in heterogeneous situations.
Refs trac:587 This commit was SVN r13095. The following Trac tickets were found above: Ticket 587 --> https://svn.open-mpi.org/trac/ompi/ticket/587
Этот коммит содержится в:
родитель
ed097d17c1
Коммит
075161afa9
@ -471,6 +471,10 @@ mca_btl_base_module_t** mca_btl_mx_component_init(int *num_btl_modules,
|
||||
OBJ_RELEASE( btl );
|
||||
continue;
|
||||
}
|
||||
|
||||
#if OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
BTL_MX_ADDR_HTON(mx_addrs[i]);
|
||||
#endif
|
||||
mca_btl_mx_component.mx_btls[count++] = btl;
|
||||
}
|
||||
size = sizeof(mca_btl_mx_addr_t) * count;
|
||||
|
@ -43,9 +43,25 @@ extern "C" {
|
||||
struct mca_btl_mx_addr_t {
|
||||
uint64_t nic_id;
|
||||
uint32_t endpoint_id;
|
||||
#if OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
uint8_t padding[4];
|
||||
#endif
|
||||
};
|
||||
typedef struct mca_btl_mx_addr_t mca_btl_mx_addr_t;
|
||||
|
||||
#define BTL_MX_ADDR_HTON(h) \
|
||||
do { \
|
||||
h.nic_id = hton64(h.nic_id); \
|
||||
h.endpoint_id = htonl(h.endpoint_id); \
|
||||
} while (0)
|
||||
|
||||
#define BTL_MX_ADDR_NTOH(h) \
|
||||
do { \
|
||||
h.nic_id = ntoh64(h.nic_id); \
|
||||
h.endpoint_id = ntohl(h.endpoint_id); \
|
||||
} while (0)
|
||||
|
||||
|
||||
/**
|
||||
* An abstraction that represents a connection to a endpoint process.
|
||||
* An instance of mca_btl_base_endpoint_t is associated w/ each process
|
||||
|
@ -136,7 +136,7 @@ int mca_btl_mx_proc_insert( mca_btl_mx_proc_t* module_proc,
|
||||
{
|
||||
mca_btl_mx_addr_t *mx_peers;
|
||||
int rc;
|
||||
size_t size;
|
||||
size_t size, i;
|
||||
|
||||
/* query for the peer address info */
|
||||
rc = mca_pml_base_modex_recv( &mca_btl_mx_component.super.btl_version,
|
||||
@ -159,6 +159,12 @@ int mca_btl_mx_proc_insert( mca_btl_mx_proc_t* module_proc,
|
||||
return OMPI_ERROR;
|
||||
}
|
||||
|
||||
#if OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
for (i = 0 ; i < module_proc->mx_peers_count ; ++i) {
|
||||
BTL_MX_ADDR_NTOH(mx_peers[i]);
|
||||
}
|
||||
#endif
|
||||
|
||||
module_proc->mx_peers = mx_peers;
|
||||
|
||||
if( NULL == module_proc->proc_endpoints ) {
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user