Skip to content

modified mpirun to longer fork/exec prterun but now to instead call t… #42

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: uofl_branch
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[submodule "prrte"]
path = 3rd-party/prrte
url = ../../open-mpi/prrte
branch = master
url = ../../uofl-capstone-open-mpi/prrte
branch = capstone-devel
[submodule "openpmix"]
path = 3rd-party/openpmix
url = ../../openpmix/openpmix.git
Expand Down
2 changes: 1 addition & 1 deletion 3rd-party/prrte
Submodule prrte updated 106 files
5 changes: 4 additions & 1 deletion ompi/dpm/dpm.c
Original file line number Diff line number Diff line change
Expand Up @@ -1991,7 +1991,10 @@ static char *find_prte(void)
#if OMPI_USING_INTERNAL_PRRTE
/* 2) If using internal PRRTE, use our bindir. Note that this
* will obey OPAL_PREFIX and OPAL_DESTDIR */
opal_asprintf(&filename, "%s%sprte", opal_install_dirs.bindir, OPAL_PATH_SEP);
/*
* TODO: HPP replace hard-wired prrte prefix with something configurable
*/
opal_asprintf(&filename, "%s%sompi-prte", opal_install_dirs.bindir, OPAL_PATH_SEP);
return filename;
#else

Expand Down
6 changes: 5 additions & 1 deletion ompi/tools/mpirun/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,12 @@ dist_ompidata_DATA = help-mpirun.txt
mpirun_SOURCES = \
main.c

#
# TODO: HPP replace hard-wired prrte prefix with something configurable
#
mpirun_LDADD = \
$(top_builddir)/opal/libopen-pal_core.la
$(top_builddir)/opal/libopen-pal_core.la \
$(top_builddir)/3rd-party/prrte/src/libompi-prrte.la

mpirun_CPPFLAGS = \
-DMCA_oshmem_FRAMEWORKS="\"$(MCA_oshmem_FRAMEWORKS)\"" \
Expand Down
14 changes: 4 additions & 10 deletions ompi/tools/mpirun/help-mpirun.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,8 @@
# This is the US/English help file for Open MPI wrapper compiler error
# messages.
#
[no-prterun-found]
Open MPI's mpirun command was unable to find an underlying prterun
command to execute. Consider setting the OMPI_PRTERUN environment
variable to help mpirun find the correct underlying prterun.
[prterun-exec-failed]
Open MPI's mpirun command could not execute the underlying prterun
command. The prterun command we tried to execute and the error
message from exec() are below:
[prte-launch-failed]
Open MPI's mpirun command was unable to launch the user's application.
This may indicate an issue with the environment or incorrect configuration.

Command: %s
Error Message: %s
Error Message: %s
73 changes: 8 additions & 65 deletions ompi/tools/mpirun/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,46 +28,8 @@
#include "opal/util/printf.h"
#include "opal/util/show_help.h"
#include "ompi/constants.h"
#include "3rd-party/prrte/include/prte.h"

static char *find_prterun(void)
{
char *filename = NULL;
#if !OMPI_USING_INTERNAL_PRRTE
char *prrte_prefix = NULL;
#endif

/* 1) Did the user tell us exactly where to find prterun? */
filename = getenv("OMPI_PRTERUN");
if (NULL != filename) {
return filename;
}

#if OMPI_USING_INTERNAL_PRRTE
/* 2) If using internal PRRTE, use our bindir. Note that this
* will obey OPAL_PREFIX and OPAL_DESTDIR */
opal_asprintf(&filename, "%s%sprterun", opal_install_dirs.bindir, OPAL_PATH_SEP);
return filename;
#else

/* 3) Look in ${PRTE_PREFIX}/bin */
prrte_prefix = getenv("PRTE_PREFIX");
if (NULL != prrte_prefix) {
opal_asprintf(&filename, "%s%sbin%sprterun", prrte_prefix, OPAL_PATH_SEP, OPAL_PATH_SEP);
return filename;
}

/* 4) See if configure told us where to look, if set */
#if defined(OMPI_PRTERUN_PATH)
return strdup(OMPI_PRTERUN_PATH);
#else

/* 5) Use path search */
filename = opal_find_absolute_path("prterun");

return filename;
#endif
#endif
}

static void append_prefixes(char ***out, const char *in)
{
Expand Down Expand Up @@ -119,10 +81,7 @@ static void setup_mca_prefixes(void)
int main(int argc, char *argv[])
{
char *opal_prefix = getenv("OPAL_PREFIX");
char *full_prterun_path = NULL;
char **prterun_args = NULL;
int ret;
size_t i;

ret = opal_init_util(&argc, &argv);
if (OMPI_SUCCESS != ret) {
Expand Down Expand Up @@ -154,12 +113,6 @@ int main(int argc, char *argv[])
#endif
}

full_prterun_path = find_prterun();
if (NULL == full_prterun_path) {
opal_show_help("help-mpirun.txt", "no-prterun-found", 1);
exit(1);
}

/*
* set environment variable for our install location
* used within the OMPI prrte schizo component
Expand All @@ -171,24 +124,14 @@ int main(int argc, char *argv[])
// to Open MPI.
setup_mca_prefixes();

/* calling mpirun (and now prterun) with a full path has a special
* meaning in terms of -prefix behavior, so copy that behavior
* into prterun */
if (opal_path_is_absolute(argv[0])) {
opal_argv_append_nosize(&prterun_args, full_prterun_path);
} else {
opal_argv_append_nosize(&prterun_args, "prterun");

ret = prte_launch(argc, argv);
if (OMPI_SUCCESS != ret) {
opal_show_help("help-mpirun.txt", "prte-launch-failed", 1, strerror(errno));
exit(1);
}

/* Copy all the mpirun arguments to prterun.
* TODO: Need to handle --prefix rationally here. */
for (i = 1; NULL != argv[i]; i++) {
opal_argv_append_nosize(&prterun_args, argv[i]);
}
ret = execv(full_prterun_path, prterun_args);
opal_show_help("help-mpirun.txt", "prterun-exec-failed",
1, full_prterun_path, strerror(errno));
exit(1);
return 0;
}

/*
Expand All @@ -214,4 +157,4 @@ int main(int argc, char *argv[])
* Additional copyrights may follow
*
* $HEADER$
*/
*/