1
1
This commit was SVN r7414.
Этот коммит содержится в:
Tim Woodall 2005-09-16 20:59:53 +00:00
родитель 41b6fc166e
Коммит f71abbf856
4 изменённых файлов: 24 добавлений и 88 удалений

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

@ -275,36 +275,6 @@ static void orte_pls_bproc_waitpid_cb(pid_t wpid, int status, void *data) {
opal_output(0, "in orte_pls_bproc_waitpid_cb, %d processes left\n",
mca_pls_bproc_component.num_procs);
}
if(0 == mca_pls_bproc_component.num_procs &&
mca_pls_bproc_component.done_launching) {
orte_buffer_t ack;
size_t i;
OBJ_CONSTRUCT(&ack, orte_buffer_t);
rc = orte_dps.pack(&ack, &i, 1, ORTE_BYTE);
if(rc != ORTE_SUCCESS) {
ORTE_ERROR_LOG(rc);
}
for(i = 0; i < mca_pls_bproc_component.num_daemons; i++) {
proc = orte_pointer_array_get_item(mca_pls_bproc_component.daemon_names, i);
if(NULL == proc) {
ORTE_ERROR_LOG(rc);
continue;
}
rc = mca_oob_send_packed(proc, &ack, MCA_OOB_TAG_BPROC, 0);
if (0 > rc) {
ORTE_ERROR_LOG(rc);
}
free(proc);
}
OBJ_DESTRUCT(&ack);
while(0 < mca_pls_bproc_component.num_daemons) {
opal_condition_wait(&mca_pls_bproc_component.condition,
&mca_pls_bproc_component.lock);
}
mca_pls_bproc_component.done_launching = false;
orte_pointer_array_clear(mca_pls_bproc_component.daemon_names);
}
OPAL_THREAD_UNLOCK(&mca_pls_bproc_component.lock);
}
@ -586,10 +556,12 @@ static int orte_pls_bproc_launch_daemons(orte_cellid_t cellid, char *** envp,
}
/* launch the daemons */
mca_pls_bproc_component.num_daemons = num_daemons;
rc = bproc_vexecmove(num_daemons, daemon_list, pids, orted_path, argv, *envp);
if(rc != num_daemons) {
opal_show_help("help-pls-bproc.txt", "daemon-launch-number", true,
num_daemons, rc, orted_path);
mca_pls_bproc_component.num_daemons = 0;
rc = ORTE_ERROR;
goto cleanup;
}
@ -637,7 +609,6 @@ static int orte_pls_bproc_launch_daemons(orte_cellid_t cellid, char *** envp,
}
}
}
mca_pls_bproc_component.num_daemons = num_daemons;
cleanup:
if(NULL != argv) {
@ -649,7 +620,6 @@ cleanup:
if(NULL != orted_path) {
free(orted_path);
}
return rc;
}
@ -798,7 +768,6 @@ cleanup:
int orte_pls_bproc_launch(orte_jobid_t jobid) {
opal_list_item_t* item;
opal_list_t mapping;
orte_buffer_t ack;
orte_cellid_t cellid;
orte_rmaps_base_map_t* map;
orte_vpid_t vpid_launch;
@ -812,8 +781,6 @@ int orte_pls_bproc_launch(orte_jobid_t jobid) {
int context = 0;
size_t idx, j;
OBJ_CONSTRUCT(&ack, orte_buffer_t);
/* query for the application context and allocated nodes */
OBJ_CONSTRUCT(&mapping, opal_list_t);
if(ORTE_SUCCESS != (rc = orte_rmaps_base_get_map(jobid, &mapping))) {
@ -871,9 +838,12 @@ int orte_pls_bproc_launch(orte_jobid_t jobid) {
* sucessfully set up the pty/pipes and IO forwarding which the user apps
* will use */
for(j = 0; j < mca_pls_bproc_component.num_daemons; j++) {
orte_buffer_t ack;
OBJ_CONSTRUCT(&ack, orte_buffer_t);
rc = mca_oob_recv_packed(MCA_OOB_NAME_ANY, &ack, MCA_OOB_TAG_BPROC);
if(0 > rc) {
ORTE_ERROR_LOG(rc);
OBJ_DESTRUCT(&ack);
goto cleanup;
}
idx = 4;
@ -881,6 +851,8 @@ int orte_pls_bproc_launch(orte_jobid_t jobid) {
if(ORTE_SUCCESS != rc) {
ORTE_ERROR_LOG(rc);
}
OBJ_DESTRUCT(&ack);
if(-1 == src[0]) {
/* one of the daemons has failed to properly launch. The error is sent
* by orte_pls_bproc_waitpid_daemon_cb */
@ -929,7 +901,6 @@ cleanup:
free(node_array_len);
}
OBJ_DESTRUCT(&mapping);
OBJ_DESTRUCT(&ack);
return rc;
}

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

@ -68,8 +68,6 @@ static int pls_bproc_orted_link_pipes(int proc_rank, orte_jobid_t jobid, int * f
bool connect_stdin, size_t app_context);
static void pls_bproc_orted_delete_dir_tree(char * path);
static int pls_bproc_orted_remove_dir(void);
static void pls_bproc_orted_kill_cb(int status, orte_process_name_t * peer,
orte_buffer_t* buffer, int tag, void* cbdata);
static void pls_bproc_orted_send_cb(int status, orte_process_name_t * peer,
orte_buffer_t* buffer, int tag, void* cbdata);
@ -357,22 +355,6 @@ static int pls_bproc_orted_remove_dir() {
return ORTE_SUCCESS;
}
/**
* Callback function for when mpirun sends us a message saying all the child
* procs are done.
* @param status
* @param peer
* @param buffer
* @param tag
* @param cbdata
*/
static void pls_bproc_orted_kill_cb(int status, orte_process_name_t * peer,
orte_buffer_t* buffer, int tag, void* cbdata) {
OPAL_THREAD_LOCK(&mca_pls_bproc_orted_component.lock);
opal_condition_signal(&mca_pls_bproc_orted_component.condition);
OPAL_THREAD_UNLOCK(&mca_pls_bproc_orted_component.lock);
}
/**
* Callback function for when we tell mpirun we are ready
* @param status
@ -382,7 +364,9 @@ static void pls_bproc_orted_kill_cb(int status, orte_process_name_t * peer,
* @param cbdata
*/
static void pls_bproc_orted_send_cb(int status, orte_process_name_t * peer,
orte_buffer_t* buffer, int tag, void* cbdata) {
orte_buffer_t* buffer, int tag, void* cbdata)
{
OBJ_RELEASE(buffer);
}
/**
@ -402,7 +386,7 @@ int orte_pls_bproc_orted_launch(orte_jobid_t jobid) {
int num_procs = 0;
size_t i;
int src = 0;
orte_buffer_t ack;
orte_buffer_t *ack;
char * param;
bool connect_stdin;
char * pty_name = NULL;
@ -413,7 +397,6 @@ int orte_pls_bproc_orted_launch(orte_jobid_t jobid) {
goto cleanup;
}
#endif
OBJ_CONSTRUCT(&ack, orte_buffer_t);
rc = bproc_currnode();
if(0 > rc) {
@ -503,20 +486,14 @@ int orte_pls_bproc_orted_launch(orte_jobid_t jobid) {
}
}
/* post recieve for termination signal */
rc = mca_oob_recv_packed_nb(MCA_OOB_NAME_SEED, MCA_OOB_TAG_BPROC, 0,
pls_bproc_orted_kill_cb, NULL);
if (0 > rc) {
ORTE_ERROR_LOG(rc);
goto cleanup;
}
/* do callback to say we are ready */
rc = orte_dps.pack(&ack, &src, 1, ORTE_INT);
/* message to indicate that we are ready */
ack = OBJ_NEW(orte_buffer_t);
rc = orte_dps.pack(ack, &src, 1, ORTE_INT);
if(ORTE_SUCCESS != rc) {
ORTE_ERROR_LOG(rc);
}
rc = mca_oob_send_packed_nb(MCA_OOB_NAME_SEED, &ack, MCA_OOB_TAG_BPROC, 0,
pls_bproc_orted_send_cb, NULL);
rc = mca_oob_send_packed_nb(MCA_OOB_NAME_SEED, ack, MCA_OOB_TAG_BPROC, 0,
pls_bproc_orted_send_cb, NULL);
if (0 > rc) {
ORTE_ERROR_LOG(rc);
goto cleanup;
@ -531,7 +508,6 @@ cleanup:
free(pty_name);
}
OBJ_DESTRUCT(&map);
OBJ_DESTRUCT(&ack);
return rc;
}
@ -542,7 +518,8 @@ cleanup:
* @param jobid The job to terminate
* @retval ORTE_SUCCESS
*/
int orte_pls_bproc_orted_terminate_job(orte_jobid_t jobid) {
int orte_pls_bproc_orted_terminate_job(orte_jobid_t jobid)
{
orte_iof.iof_flush();
return ORTE_SUCCESS;
}
@ -554,28 +531,21 @@ int orte_pls_bproc_orted_terminate_job(orte_jobid_t jobid) {
* @param proc the process's name
* @retval ORTE_SUCCESS
*/
int orte_pls_bproc_orted_terminate_proc(const orte_process_name_t* proc) {
int orte_pls_bproc_orted_terminate_proc(const orte_process_name_t* proc)
{
orte_iof.iof_flush();
return ORTE_SUCCESS;
}
/**
* Finalizes the bproc_orted module. This function simply blocks on a condition
* until we get a message from the seed telling us the user processes are done
* so we can now terminate.
* Finalizes the bproc_orted module. Cleanup tmp directory/files
* used for I/O forwarding.
* @retval ORTE_SUCCESS
*/
int orte_pls_bproc_orted_finalize(void) {
OPAL_THREAD_LOCK(&mca_pls_bproc_orted_component.lock);
opal_condition_wait(&mca_pls_bproc_orted_component.condition,
&mca_pls_bproc_orted_component.lock);
orte_iof.iof_flush();
int orte_pls_bproc_orted_finalize(void)
{
pls_bproc_orted_remove_dir();
orte_session_dir_finalize(orte_process_info.my_name);
if(mca_pls_bproc_orted_component.debug) {
opal_output(0, "pls_bproc_orted: all cleanup routines called\n");
}
OPAL_THREAD_UNLOCK(&mca_pls_bproc_orted_component.lock);
return ORTE_SUCCESS;
}

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

@ -67,9 +67,6 @@ struct orte_pls_bproc_orted_component_t {
* that bproc is available and running on this node, */
opal_mutex_t lock;
/**< Lock used to prevent some race conditions */
opal_condition_t condition;
/**< Condition that is signaled when we have recieved a message from
* the seed that it is time to terminate. */
};
/**
* Convenience typedef

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

@ -64,7 +64,6 @@ int orte_pls_bproc_orted_component_open(void)
{
/* initialize globals */
OBJ_CONSTRUCT(&mca_pls_bproc_orted_component.lock, opal_mutex_t);
OBJ_CONSTRUCT(&mca_pls_bproc_orted_component.condition, opal_condition_t);
/* lookup parameters */
mca_base_param_reg_int(&mca_pls_bproc_orted_component.super.pls_version,
@ -110,7 +109,6 @@ orte_pls_base_module_t *orte_pls_bproc_orted_init(int *priority)
int orte_pls_bproc_orted_component_close(void)
{
OBJ_DESTRUCT(&mca_pls_bproc_orted_component.lock);
OBJ_DESTRUCT(&mca_pls_bproc_orted_component.condition);
return ORTE_SUCCESS;
}