1
1

* move ompi_event_fini() from mpirun/MPI_Finalize to ompi_rte_finalize to

match where ompi_event_init() lived
* initialize and shutdown the code to allow child process wait callbacks
* add comment about few() ussage in rte-enabled jobs (short answer:
  don't).

This commit was SVN r2864.
Этот коммит содержится в:
Brian Barrett 2004-09-27 19:38:23 +00:00
родитель 8bef16d214
Коммит 57ca18ce88
6 изменённых файлов: 18 добавлений и 11 удалений

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

@ -135,13 +135,6 @@ int ompi_mpi_finalize(void)
}
}
/* shutdown event library - note that this needs to
* occur after everything that uses the event library
*/
if (OMPI_SUCCESS != (ret = ompi_event_fini())) {
return ret;
}
/* cleanup */
if (OMPI_SUCCESS != (ret = mca_ptl_base_close())) {
return ret;

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

@ -9,6 +9,7 @@
#include "include/constants.h"
#include "runtime/runtime.h"
#include "runtime/runtime_internal.h"
#include "runtime/ompi_rte_wait.h"
#include "event/event.h"
#include "util/output.h"
#include "util/proc_info.h"
@ -41,6 +42,10 @@ int ompi_rte_finalize(void)
ompi_rte_internal_fini_spawn();
ompi_session_dir_finalize();
ompi_rte_wait_finalize();
ompi_event_fini();
/* All done */
return OMPI_SUCCESS;

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

@ -27,6 +27,7 @@
#include "runtime/runtime.h"
#include "runtime/runtime_internal.h"
#include "runtime/ompi_rte_wait.h"
/**
* Initialze and setup a process in the OMPI RTE.
@ -138,6 +139,11 @@ int ompi_rte_init_stage1(bool *allow_multi_user_threads, bool *have_hidden_threa
printf("show_help: ompi_rte_init failed in ompi_rte_internal_init_spawn\n");
return ret;
}
if (OMPI_SUCCESS != (ret = ompi_rte_wait_init())) {
/* JMS show_help */
printf("show_help: ompi_rte_init failed in ompi_rte_wait_init\n");
return ret;
}
/*

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

@ -17,7 +17,6 @@
#include "include/constants.h"
#include "threads/mutex.h"
#include "threads/condition.h"
#include "runtime/ompi_progress.h"
/*********************************************************************
@ -215,7 +214,7 @@ ompi_rte_waitpid(pid_t wpid, int *status, int options)
ompi_condition_timedwait(data->cond,
cond_mutex,
&spintime);
ompi_progress();
ompi_event_loop(OMPI_EVLOOP_NONBLOCK);
}
ompi_mutex_unlock(cond_mutex);
@ -428,7 +427,7 @@ register_sig_event(void)
/* it seems that the event is only added to the queue at the next
progress call. So push the event library (might as well push
the pml/ptl at the same time) */
ompi_progress();
ompi_event_loop(OMPI_EVLOOP_NONBLOCK);
cleanup:
OMPI_THREAD_UNLOCK(&ev_reg_mutex);

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

@ -403,7 +403,6 @@ main(int argc, char *argv[])
}
/* finalize the system */
ompi_event_fini();
ompi_rte_finalize();
mca_base_close();
ompi_finalize();

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

@ -32,6 +32,11 @@ extern "C" {
* process exited successfully -- it simply indicates that the child
* process exited. The WIF* macros (see waitpid(2)) should be used to
* examine the status to see hold the child exited.
*
* \warning This function should not be called if \c ompi_rte_init()
* or \c MPI_Init() have been called. This function is not
* safe in a multi-threaded environment in which a handler
* for \c SIGCHLD has been registered.
*/
int ompi_few(char *argv[], int *status);