Merge branch 'master' into topic/modex
Этот коммит содержится в:
Коммит
e02c39385a
@ -39,7 +39,7 @@
|
||||
#include "coll_basic.h"
|
||||
#include "ompi/op/op.h"
|
||||
|
||||
#define COMMUTATIVE_LONG_MSG 8 * 1024 * 1024
|
||||
#define COMMUTATIVE_LONG_MSG (8 * 1024 * 1024)
|
||||
|
||||
/*
|
||||
* reduce_scatter
|
||||
@ -60,7 +60,7 @@
|
||||
* usage for the recusive halving is msg_size + 2 * comm_size greater
|
||||
* for the recursive halving, so I've limited where the recursive
|
||||
* halving is used to be nice to the app memory wise. There are much
|
||||
* better algorithms for large messages with cummutative operations,
|
||||
* better algorithms for large messages with commutative operations,
|
||||
* so this should be investigated further.
|
||||
*/
|
||||
int
|
||||
|
@ -57,7 +57,6 @@ static inline void mca_common_monitoring_coll_check_name(mca_monitoring_coll_dat
|
||||
|
||||
static inline void mca_common_monitoring_coll_cache(mca_monitoring_coll_data_t*data)
|
||||
{
|
||||
int world_rank;
|
||||
if( NULL == data->comm_name && 0 < strlen(data->p_comm->c_name) ) {
|
||||
data->comm_name = strdup(data->p_comm->c_name);
|
||||
} else {
|
||||
@ -70,7 +69,7 @@ static inline void mca_common_monitoring_coll_cache(mca_monitoring_coll_data_t*d
|
||||
}
|
||||
/* Only list procs if the hashtable is already initialized, ie if the previous call worked */
|
||||
if( (-1 != data->world_rank) && (NULL == data->procs || 0 == strlen(data->procs)) ) {
|
||||
int i, pos = 0, size, world_size = -1, max_length;
|
||||
int i, pos = 0, size, world_size = -1, max_length, world_rank;
|
||||
char*tmp_procs;
|
||||
size = ompi_comm_size(data->p_comm);
|
||||
world_size = ompi_comm_size((ompi_communicator_t*)&ompi_mpi_comm_world) - 1;
|
||||
@ -84,8 +83,8 @@ static inline void mca_common_monitoring_coll_cache(mca_monitoring_coll_data_t*d
|
||||
tmp_procs[0] = '\0';
|
||||
/* Build procs list */
|
||||
for(i = 0; i < size; ++i) {
|
||||
mca_common_monitoring_get_world_rank(i, data->p_comm, &world_rank);
|
||||
pos += sprintf(&tmp_procs[pos], "%d,", world_rank);
|
||||
if( OPAL_SUCCESS == mca_common_monitoring_get_world_rank(i, data->p_comm, &world_rank) )
|
||||
pos += sprintf(&tmp_procs[pos], "%d,", world_rank);
|
||||
}
|
||||
tmp_procs[pos - 1] = '\0'; /* Remove final coma */
|
||||
data->procs = realloc(tmp_procs, pos * sizeof(char)); /* Adjust to size required */
|
||||
|
@ -352,6 +352,7 @@ opal_datatype_span( const opal_datatype_t* pData, int64_t count,
|
||||
ptrdiff_t extent = (pData->ub - pData->lb);
|
||||
ptrdiff_t true_extent = (pData->true_ub - pData->true_lb);
|
||||
if (OPAL_UNLIKELY(0 == pData->size) || (0 == count)) {
|
||||
*gap = 0;
|
||||
return 0;
|
||||
}
|
||||
*gap = pData->true_lb;
|
||||
|
@ -872,7 +872,7 @@ static int mca_btl_tcp_component_create_listen(uint16_t af_family)
|
||||
int flg = 1;
|
||||
if (setsockopt (sd, IPPROTO_IPV6, IPV6_V6ONLY,
|
||||
(char *) &flg, sizeof (flg)) < 0) {
|
||||
BTL_ERROR((0, "mca_btl_tcp_create_listen: unable to set IPV6_V6ONLY\n"));
|
||||
BTL_ERROR(("mca_btl_tcp_create_listen: unable to set IPV6_V6ONLY\n"));
|
||||
}
|
||||
}
|
||||
#endif /* IPV6_V6ONLY */
|
||||
@ -1358,27 +1358,27 @@ static void mca_btl_tcp_component_recv_handler(int sd, short flags, void* user)
|
||||
if (ENOPROTOOPT == errno) {
|
||||
sockopt = false;
|
||||
} else {
|
||||
opal_output_verbose(20, opal_btl_base_framework.framework_output,
|
||||
"Cannot get current recv timeout value of the socket"
|
||||
"Local_host:%s PID:%d",
|
||||
opal_process_info.nodename, getpid());
|
||||
return;
|
||||
opal_output_verbose(20, opal_btl_base_framework.framework_output,
|
||||
"Cannot get current recv timeout value of the socket"
|
||||
"Local_host:%s PID:%d",
|
||||
opal_process_info.nodename, getpid());
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
tv.tv_sec = 2;
|
||||
tv.tv_usec = 0;
|
||||
if (0 != setsockopt(sd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv))) {
|
||||
opal_output_verbose(20, opal_btl_base_framework.framework_output,
|
||||
"Cannot set new recv timeout value of the socket"
|
||||
"Local_host:%s PID:%d",
|
||||
opal_process_info.nodename, getpid());
|
||||
"Cannot set new recv timeout value of the socket"
|
||||
"Local_host:%s PID:%d",
|
||||
opal_process_info.nodename, getpid());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
OBJ_RELEASE(event);
|
||||
retval = mca_btl_tcp_recv_blocking(sd, (void *)&hs_msg, sizeof(hs_msg));
|
||||
guid = hs_msg.guid;
|
||||
guid = hs_msg.guid;
|
||||
|
||||
/* An unknown process attempted to connect to Open MPI via TCP.
|
||||
* Open MPI uses a "magic" string to trivially verify that the connecting
|
||||
@ -1393,11 +1393,11 @@ static void mca_btl_tcp_component_recv_handler(int sd, short flags, void* user)
|
||||
*/
|
||||
if (sizeof(hs_msg) != retval) {
|
||||
opal_output_verbose(20, opal_btl_base_framework.framework_output,
|
||||
"server did not receive entire connect ACK "
|
||||
"Local_host:%s PID:%d Role:%s String_received:%s Test_fail:%s",
|
||||
"process did not receive full connect ACK "
|
||||
"Local_host:%s PID:%d String_received:%s Test_fail:%s",
|
||||
opal_process_info.nodename,
|
||||
getpid(), "server",
|
||||
(retval > 0) ? hs_msg.magic_id : "<nothing>",
|
||||
getpid(),
|
||||
(retval > 0) ? hs_msg.magic_id : "<nothing>",
|
||||
"handshake message length");
|
||||
|
||||
/* The other side probably isn't OMPI, so just hang up */
|
||||
@ -1406,16 +1406,16 @@ static void mca_btl_tcp_component_recv_handler(int sd, short flags, void* user)
|
||||
}
|
||||
if (0 != strncmp(hs_msg.magic_id, mca_btl_tcp_magic_id_string, len)) {
|
||||
opal_output_verbose(20, opal_btl_base_framework.framework_output,
|
||||
"server did not receive right magic string. "
|
||||
"Local_host:%s PID:%d Role:%s String_received:%s Test_fail:%s",
|
||||
"process did not receive right magic string. "
|
||||
"Local_host:%s PID:%d String_received:%s Test_fail:%s",
|
||||
opal_process_info.nodename,
|
||||
getpid(), "server", hs_msg.magic_id,
|
||||
getpid(), hs_msg.magic_id,
|
||||
"string value");
|
||||
/* The other side probably isn't OMPI, so just hang up */
|
||||
CLOSE_THE_SOCKET(sd);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (sockopt) {
|
||||
/* reset RECVTIMEO option to its original state */
|
||||
if (0 != setsockopt(sd, SOL_SOCKET, SO_RCVTIMEO, &save, sizeof(save))) {
|
||||
@ -1425,8 +1425,8 @@ static void mca_btl_tcp_component_recv_handler(int sd, short flags, void* user)
|
||||
opal_process_info.nodename, getpid());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
OPAL_PROCESS_NAME_NTOH(guid);
|
||||
|
||||
/* now set socket up to be non-blocking */
|
||||
|
@ -315,6 +315,7 @@ int opal_hwloc_base_get_topology(void)
|
||||
if (file) {
|
||||
char line[256];
|
||||
opal_output(0, "Dumping /proc/self/maps");
|
||||
|
||||
while (fgets(line, sizeof(line), file) != NULL) {
|
||||
char *end = strchr(line, '\n');
|
||||
if (end) {
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user