Fix direct and linear xcast modes
This commit was SVN r18359.
Этот коммит содержится в:
родитель
8e846bf7f2
Коммит
519c15f8af
@ -360,19 +360,18 @@ static int xcast_linear(orte_jobid_t job,
|
||||
* and rattling messages around the system if daemons are not
|
||||
* fully connected
|
||||
*/
|
||||
if (!orte_process_info.hnp) {
|
||||
/* tell the HNP to relay */
|
||||
command = ORTE_DAEMON_PROCESS_AND_RELAY_CMD;
|
||||
if (ORTE_SUCCESS != (rc = opal_dss.pack(buf, &command, 1, ORTE_DAEMON_CMD))) {
|
||||
ORTE_ERROR_LOG(rc);
|
||||
goto CLEANUP;
|
||||
}
|
||||
/* tell the HNP the routing algorithm this xmission is using */
|
||||
mode = ORTE_GRPCOMM_LINEAR;
|
||||
if (ORTE_SUCCESS != (rc = opal_dss.pack(buf, &mode, 1, ORTE_GRPCOMM_MODE))) {
|
||||
ORTE_ERROR_LOG(rc);
|
||||
goto CLEANUP;
|
||||
}
|
||||
|
||||
/* tell the HNP to relay */
|
||||
command = ORTE_DAEMON_PROCESS_AND_RELAY_CMD;
|
||||
if (ORTE_SUCCESS != (rc = opal_dss.pack(buf, &command, 1, ORTE_DAEMON_CMD))) {
|
||||
ORTE_ERROR_LOG(rc);
|
||||
goto CLEANUP;
|
||||
}
|
||||
/* tell the HNP the routing algorithm this xmission is using */
|
||||
mode = ORTE_GRPCOMM_LINEAR;
|
||||
if (ORTE_SUCCESS != (rc = opal_dss.pack(buf, &mode, 1, ORTE_GRPCOMM_MODE))) {
|
||||
ORTE_ERROR_LOG(rc);
|
||||
goto CLEANUP;
|
||||
}
|
||||
|
||||
/* if this isn't intended for the daemon command tag, then we better
|
||||
@ -542,8 +541,8 @@ static int xcast_direct(orte_jobid_t job,
|
||||
if (ORTE_PROC_MY_NAME->jobid != job) {
|
||||
if (ORTE_SUCCESS != (rc = relay_via_hnp(job, buffer, tag))) {
|
||||
ORTE_ERROR_LOG(rc);
|
||||
goto CLEANUP;
|
||||
}
|
||||
goto CLEANUP;
|
||||
}
|
||||
/* if it is my jobid, then we can just send this ourselves -
|
||||
* set the target tag
|
||||
@ -566,8 +565,8 @@ static int xcast_direct(orte_jobid_t job,
|
||||
if (ORTE_PROC_MY_NAME->jobid != job) {
|
||||
if (ORTE_SUCCESS != (rc = relay_via_hnp(job, buffer, tag))) {
|
||||
ORTE_ERROR_LOG(rc);
|
||||
goto CLEANUP;
|
||||
}
|
||||
goto CLEANUP;
|
||||
}
|
||||
/* if this is going to the daemon job to
|
||||
* someplace other than the daemon cmd processor, then I need to add
|
||||
|
@ -125,6 +125,11 @@ static void send_relay(int fd, short event, void *data)
|
||||
if (!orte_process_info.hnp) {
|
||||
goto CLEANUP;
|
||||
}
|
||||
|
||||
OPAL_OUTPUT_VERBOSE((1, orte_debug_output,
|
||||
"%s orte:daemon:send_relay linear mode with %d procs",
|
||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME), (int)orte_process_info.num_procs));
|
||||
|
||||
/* if the mode is linear and we are the HNP, don't ask for
|
||||
* next recipients as this will generate a potentially very
|
||||
* long list! Instead, just send the message to each daemon
|
||||
@ -133,6 +138,12 @@ static void send_relay(int fd, short event, void *data)
|
||||
dummy.jobid = ORTE_PROC_MY_HNP->jobid;
|
||||
for (i=1; i < orte_process_info.num_procs; i++) {
|
||||
dummy.vpid = i;
|
||||
|
||||
OPAL_OUTPUT_VERBOSE((1, orte_debug_output,
|
||||
"%s orte:daemon:send_relay sending relay msg to %s",
|
||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
|
||||
ORTE_NAME_PRINT(&dummy)));
|
||||
|
||||
if (0 > (ret = orte_rml.send_buffer(&dummy, buffer, ORTE_RML_TAG_DAEMON, 0))) {
|
||||
ORTE_ERROR_LOG(ret);
|
||||
goto CLEANUP;
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user