1
1

A temporary fix, until we figure out a better approach. The problem

is that if one add "pml=" to the configuration file, really bad things
happen. All PMLs will get initialize, and each of them will initialize
all BTLs. This patch force the mca_pml_base_pml to get initialized in
all cases before we go out of the mca_pml_base_open function.

This commit was SVN r12527.
Этот коммит содержится в:
George Bosilca 2006-11-10 04:53:00 +00:00
родитель ab1655079d
Коммит 17405cd9c6

Просмотреть файл

@ -74,6 +74,8 @@ char *mca_pml_base_pml;
*/ */
int mca_pml_base_open(void) int mca_pml_base_open(void)
{ {
char* default_pml;
/* Open up all available components */ /* Open up all available components */
if (OMPI_SUCCESS != if (OMPI_SUCCESS !=
@ -88,18 +90,28 @@ int mca_pml_base_open(void)
mca_pml_base_selected_component.pmlm_finalize = NULL; mca_pml_base_selected_component.pmlm_finalize = NULL;
/**
* Right now our selection of BTLs is completely broken. If we have
* multiple PMLs we will open all BTLs several times, leading to
* undefined behaviors. The simplest solution, at least until we
* figure out the correct way to do it, is to force a default value
* in the mca_pml_base_pml global.
*/
#if MCA_pml_DIRECT_CALL
default_pml = stringify(MCA_pml_DIRECT_CALL_COMPONENT);
#else
default_pml = "ob1";
#endif
mca_base_param_lookup_string( mca_base_param_lookup_string(
mca_base_param_register_string("pml", mca_base_param_register_string("pml",
NULL, NULL,
NULL, NULL,
NULL, NULL,
#if MCA_pml_DIRECT_CALL default_pml),
stringify(MCA_pml_DIRECT_CALL_COMPONENT)
#else
"ob1"
#endif
),
&mca_pml_base_pml); &mca_pml_base_pml);
if( NULL == mca_pml_base_pml )
mca_pml_base_pml = default_pml;
return OMPI_SUCCESS; return OMPI_SUCCESS;
} }