int orte_ess_base_app_finalize(void) { orte_notifier_base_close(); orte_cr_finalize(); #if OPAL_ENABLE_FT_CR == 1 orte_snapc_base_close(); #endif orte_filem_base_close(); orte_wait_finalize(); /* close the multicast */ #if ORTE_ENABLE_MULTICAST orte_rmcast_base_close(); #endif /* now can close the rml and its friendly group comm */ orte_grpcomm_base_close(); orte_routed_base_close(); orte_rml_base_close(); orte_session_dir_finalize(ORTE_PROC_MY_NAME); return ORTE_SUCCESS; }
static void local_fin(void) { orte_wait_finalize(); /* close pnp */ orcm_leader_base_close(); orcm_pnp_base_close(); orte_rmcast_base_close(); orte_routed_base_close(); orte_rml_base_close(); }
static void local_fin(void) { int i; orte_node_t *node; orte_job_t *job; /* stop the local sensors */ orte_sensor.stop(ORTE_PROC_MY_NAME->jobid); orte_sensor_base_close(); orte_odls_base_close(); orte_wait_finalize(); /* finalize selected modules */ orte_errmgr_base_close(); /* close the orcm-related frameworks */ orcm_leader_base_close(); orcm_pnp_base_close(); /* close the multicast */ orte_rmcast_base_close(); orte_routed_base_close(); orte_rml_base_close(); /* cleanup the job and node info arrays */ if (NULL != orte_node_pool) { for (i=0; i < orte_node_pool->size; i++) { if (NULL != (node = (orte_node_t*)opal_pointer_array_get_item(orte_node_pool,i))) { OBJ_RELEASE(node); } } OBJ_RELEASE(orte_node_pool); } if (NULL != orte_job_data) { for (i=0; i < orte_job_data->size; i++) { if (NULL != (job = (orte_job_t*)opal_pointer_array_get_item(orte_job_data,i))) { OBJ_RELEASE(job); } } OBJ_RELEASE(orte_job_data); } /* handle the orcm-specific OPAL stuff */ opal_sysinfo_base_close(); opal_pstat_base_close(); }
static int rte_finalize(void) { char *contact_path; opal_list_item_t *item; orte_node_t *node; orte_job_t *job; int i; /* remove my contact info file */ contact_path = opal_os_path(false, orte_process_info.top_session_dir, "contact.txt", NULL); unlink(contact_path); free(contact_path); orte_notifier_base_close(); orte_cr_finalize(); #if OPAL_ENABLE_FT_CR == 1 orte_snapc_base_close(); #endif orte_filem_base_close(); orte_odls_base_close(); orte_wait_finalize(); orte_iof_base_close(); /* finalize selected modules so they can de-register * any receives */ orte_ras_base_close(); orte_rmaps_base_close(); orte_plm_base_close(); orte_errmgr_base_close(); /* close the multicast */ #if ORTE_ENABLE_MULTICAST orte_rmcast_base_close(); #endif /* now can close the rml and its friendly group comm */ orte_grpcomm_base_close(); orte_routed_base_close(); orte_rml_base_close(); /* if we were doing timing studies, close the timing file */ if (orte_timing) { if (stdout != orte_timing_output && stderr != orte_timing_output) { fclose(orte_timing_output); } } /* cleanup the global list of local children and job data */ while (NULL != (item = opal_list_remove_first(&orte_local_children))) { OBJ_RELEASE(item); } OBJ_DESTRUCT(&orte_local_children); while (NULL != (item = opal_list_remove_first(&orte_local_jobdata))) { OBJ_RELEASE(item); } OBJ_DESTRUCT(&orte_local_jobdata); /* cleanup the job and node info arrays */ if (NULL != orte_node_pool) { for (i=0; i < orte_node_pool->size; i++) { if (NULL != (node = (orte_node_t*)opal_pointer_array_get_item(orte_node_pool,i))) { OBJ_RELEASE(node); } } OBJ_RELEASE(orte_node_pool); } if (NULL != orte_job_data) { for (i=0; i < orte_job_data->size; i++) { if (NULL != (job = (orte_job_t*)opal_pointer_array_get_item(orte_job_data,i))) { OBJ_RELEASE(job); } } OBJ_RELEASE(orte_job_data); } /* finalize the session directory tree */ orte_session_dir_finalize(ORTE_PROC_MY_NAME); /* clean out the global structures */ orte_proc_info_finalize(); if (NULL != orte_job_ident) { free(orte_job_ident); } /* close the xml output file, if open */ if (orte_xml_output) { fprintf(orte_xml_fp, "</mpirun>\n"); fflush(orte_xml_fp); if (stdout != orte_xml_fp) { fclose(orte_xml_fp); } } /* handle the orted-specific OPAL stuff */ opal_sysinfo_base_close(); opal_pstat_base_close(); return ORTE_SUCCESS; }