void orte_info_close_components() { int i; orte_info_component_map_t *map; if (opened_components) { /* Note that the order of shutdown here doesn't matter because * we aren't *using* any components -- none were selected, so * there are no dependencies between the frameworks. We list * them generally "in order", but it doesn't really matter. * We also explicitly ignore the return values from the * close() functions -- what would we do if there was an * error? */ (void) orte_grpcomm_base_close(); (void) orte_db_base_close(); (void) orte_ess_base_close(); (void) orte_show_help_finalize(); #if !ORTE_DISABLE_FULL_SUPPORT #if OPAL_ENABLE_FT_CR == 1 (void) orte_snapc_base_close(); #endif (void) orte_filem_base_close(); (void) orte_iof_base_close(); (void) orte_plm_base_close(); (void) orte_odls_base_close(); (void) orte_rmaps_base_close(); (void) orte_ras_base_close(); (void) orte_rml_base_close(); (void) orte_routed_base_close(); (void) mca_oob_base_close(); #endif (void) orte_errmgr_base_close(); (void) orte_state_base_close(); (void) opal_backtrace_base_close(); (void) opal_memory_base_close(); (void) opal_memchecker_base_close(); (void) opal_timer_base_close(); #if OPAL_HAVE_HWLOC (void) opal_hwloc_base_close(); #endif #if OPAL_ENABLE_FT_CR == 1 (void) opal_crs_base_close(); #endif (void) opal_event_base_close(); /* Do not call OPAL's installdirs close; it will be handled in * opal_finalize_util(). */ for (i=0; i < component_map.size; i++) { if (NULL != (map = (orte_info_component_map_t*)opal_pointer_array_get_item(&component_map, i))) { OBJ_RELEASE(map); } } OBJ_DESTRUCT(&component_map); /* close the OPAL components */ (void) opal_info_close_components(); } opened_components = false; }
static int rte_finalize(void) { char *contact_path; opal_list_item_t *item; /* 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 == 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(); /* now can close the rml and its friendly group comm */ orte_grpcomm_base_close(); orte_routed_base_close(); orte_rml_base_close(); /* 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); /* 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, "</%s>\n", orte_cmd_basename); fflush(orte_xml_fp); if (stdout != orte_xml_fp) { fclose(orte_xml_fp); } } return ORTE_SUCCESS; }
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; }