-
Notifications
You must be signed in to change notification settings - Fork 908
uofl: changes to Open MPI and move prrte/pmix shas #13299
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
base: main
Are you sure you want to change the base?
Changes from all commits
9bc5ca5
6e4665f
90b3f48
f6efdbb
3c0d3ac
b652fa0
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,6 +10,12 @@ | |
# This is the US/English help file for Open MPI wrapper compiler error | ||
# messages. | ||
# | ||
[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. | ||
|
||
Error Message: %s | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nit: Remove blank line (because it will be emitted in the error message). If you want an effectively-blank line before the next |
||
[no-prterun-found] | ||
Open MPI's mpirun command was unable to find an underlying prterun | ||
command to execute. Consider setting the OMPI_PRTERUN environment | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -28,46 +28,10 @@ | |
#include "opal/util/printf.h" | ||
#include "opal/util/show_help.h" | ||
#include "ompi/constants.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 | ||
#include "3rd-party/prrte/include/prte.h" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Are we only supporting |
||
#endif | ||
} | ||
|
||
|
||
static void append_prefixes(char ***out, const char *in) | ||
{ | ||
|
@@ -116,6 +80,98 @@ static void setup_mca_prefixes(void) | |
} | ||
|
||
|
||
#if OMPI_HAVE_PRTE_LAUNCH | ||
|
||
/* we can use prte_launch */ | ||
|
||
int main(int argc, char *argv[]) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There's a lot of code duplication between this |
||
{ | ||
char *opal_prefix = getenv("OPAL_PREFIX"); | ||
int ret; | ||
|
||
ret = opal_init_util(&argc, &argv); | ||
if (OMPI_SUCCESS != ret) { | ||
fprintf(stderr, "Failed initializing opal: %d\n", ret); | ||
exit(1); | ||
} | ||
|
||
/* note that we just modify our environment rather than create a | ||
* child environment because it is easier and we're not going to | ||
* be around long enough for it to matter (since we exec prterun | ||
* asap */ | ||
setenv("PRTE_MCA_schizo_proxy", "ompi", 1); | ||
setenv("OMPI_VERSION", OMPI_VERSION, 1); | ||
char *base_tool_name = opal_basename(argv[0]); | ||
setenv("OMPI_TOOL_NAME", base_tool_name, 1); | ||
free(base_tool_name); | ||
|
||
/* TODO: look for --prefix and compare with OPAL_PREFIX and pick | ||
* one */ | ||
|
||
/* as a special case, if OPAL_PREFIX was set and either PRRTE or | ||
* PMIx are internal builds, set their prefix variables as well */ | ||
if (NULL != opal_prefix) { | ||
#if OMPI_USING_INTERNAL_PRRTE | ||
setenv("PRTE_PREFIX", opal_prefix, 1); | ||
#endif | ||
#if OPAL_USING_INTERNAL_PMIX | ||
setenv("PMIX_PREFIX", opal_prefix, 1); | ||
#endif | ||
} | ||
|
||
/* | ||
* set environment variable for our install location | ||
* used within the OMPI prrte schizo component | ||
*/ | ||
|
||
setenv("OMPI_LIBDIR_LOC", opal_install_dirs.libdir, 1); | ||
|
||
// Set environment variable to tell PRTE what MCA prefixes belong | ||
// to Open MPI. | ||
setup_mca_prefixes(); | ||
|
||
|
||
ret = prte_launch(argc, argv); | ||
if (OMPI_SUCCESS != ret) { | ||
opal_show_help("help-mpirun.txt", "prte-launch-failed", 1, strerror(errno)); | ||
exit(1); | ||
} | ||
|
||
return 0; | ||
} | ||
|
||
#else | ||
|
||
static char *find_prterun(void) | ||
{ | ||
char *filename = NULL; | ||
char *prrte_prefix = NULL; | ||
|
||
/* 1) Did the user tell us exactly where to find prterun? */ | ||
filename = getenv("OMPI_PRTERUN"); | ||
if (NULL != filename) { | ||
return filename; | ||
} | ||
|
||
/* 2) 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 | ||
} | ||
|
||
int main(int argc, char *argv[]) | ||
{ | ||
char *opal_prefix = getenv("OPAL_PREFIX"); | ||
|
@@ -188,30 +244,7 @@ int main(int argc, char *argv[]) | |
ret = execv(full_prterun_path, prterun_args); | ||
opal_show_help("help-mpirun.txt", "prterun-exec-failed", | ||
1, full_prterun_path, strerror(errno)); | ||
exit(1); | ||
} | ||
exit(1); | ||
} | ||
#endif /* OMPI_HAVE_PRTE_LAUNCH */ | ||
|
||
/* | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think you want to remove these copyrghts. I think they're at the bottom of the file because MPI-enabled debuggers would default to opening the source code for mpirun.c upon attach, so we wanted to show the specific banner at the top of this file (vs. all the copyrights). But we still need the copyrights. |
||
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana | ||
* University Research and Technology | ||
* Corporation. All rights reserved. | ||
* Copyright (c) 2004-2005 The University of Tennessee and The University | ||
* of Tennessee Research Foundation. All rights | ||
* reserved. | ||
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, | ||
* University of Stuttgart. All rights reserved. | ||
* Copyright (c) 2004-2005 The Regents of the University of California. | ||
* All rights reserved. | ||
* Copyright (c) 2017-2020 Intel, Inc. All rights reserved. | ||
* Copyright (c) 2020-2022 Cisco Systems, Inc. All rights reserved | ||
* Copyright (c) 2021 Nanook Consulting. All rights reserved. | ||
* Copyright (c) 2022 Amazon.com, Inc. or its affiliates. All Rights reserved. | ||
* Copyright (c) 2022 Triad National Security, LLC. All rights | ||
* reserved. | ||
|
||
* $COPYRIGHT$ | ||
* | ||
* Additional copyrights may follow | ||
* | ||
* $HEADER$ | ||
*/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a second, seemingly redundant, AC_DEFINE_UNQUOTED for
OMPI_HAVE_PRTE_LAUNCH
.Also, is the comment correct -- is prte_launch only available in internal prte? It looks like you're testing for
prte_launch
in the external case, too.