Yes, but look at orte/mca/plm/rsh/plm_rsh_module.c:

   
    /* ensure that only the ssh plm is selected on the remote daemon */
    var = mca_base_param_environ_variable("plm", NULL, NULL);
    opal_setenv(var, "rsh", true, &env);
    free(var);
   
This is done in "ssh_child", right before we fork_exec the ssh command to launch the remote daemon. This is why slave spawn works, for example.

I agree that tree_spawn doesn't seem to work right now, but it is not due to the plm not being selected. There are other factors involved.

Ralph



On Mon, Jun 22, 2009 at 9:58 AM, Iain Bason <Iain.Bason@sun.com> wrote:
Ralph Castain wrote:
I'm sorry, but this change is incorrect.

If you look in orte/mca/ess/base/ess_base_std_orted.c, you will see that -all- orteds, regardless of how they are launched, open and select the PLM.

I believe you are mistaken.  Look in plm_base_launch_support.c:

          /* The daemon will attempt to open the PLM on the remote
           * end. Only a few environments allow this, so the daemon
           * only opens the PLM -if- it is specifically told to do
           * so by giving it a specific PLM module. To ensure we avoid
           * confusion, do not include any directives here
           */
          if (0 == strcmp(orted_cmd_line[i+1], "plm")) {
              continue;
          }

That code strips out anything like "-mca plm rsh" from the command
line passed to a remote daemon.

Meanwhile, over in ess_base_std_orted.c:

  /* some environments allow remote launches - e.g., ssh - so
   * open the PLM and select something -only- if we are given
   * a specific module to use
   */
  mca_base_param_reg_string_name("plm", NULL,
                                 "Which plm component to use (empty = none)",
                                 false, false,
                                 NULL, &plm_to_use);
    if (NULL == plm_to_use) {
      plm_in_use = false;
  } else {
      plm_in_use = true;
            if (ORTE_SUCCESS != (ret = orte_plm_base_open())) {
          ORTE_ERROR_LOG(ret);
          error = "orte_plm_base_open";
          goto error;
      }
            if (ORTE_SUCCESS != (ret = orte_plm_base_select())) {
          ORTE_ERROR_LOG(ret);
          error = "orte_plm_base_select";
          goto error;
      }
  }

So a PLM is loaded only if specified with "-mca plm foo", but that -mca
flag is stripped out when launching the remote daemon.

I also ran into this issue with tree spawning.  (I didn't putback a fix because
I couldn't get tree spawning actually to improve performance.  My fix was
not to strip out the "-mca plm foo" parameters if tree spawning had been
requested.)

Iain

_______________________________________________
devel mailing list
devel@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel