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.
Этот коммит содержится в:
родитель
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;
|
||||||
}
|
}
|
||||||
|
Загрузка…
Ссылка в новой задаче
Block a user