X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a85110a0cc574b70238ac058937989e573434f88..693f30b46244c152cd79cdf3ad35d4a79b866c9c:/src/smpi/smpi_global.c diff --git a/src/smpi/smpi_global.c b/src/smpi/smpi_global.c index 6fa73d2ef6..f1570122eb 100644 --- a/src/smpi/smpi_global.c +++ b/src/smpi/smpi_global.c @@ -50,7 +50,7 @@ void smpi_process_init(int *argc, char ***argv) proc = SIMIX_process_self(); index = atoi((*argv)[1]); data = smpi_process_remote_data(index); - SIMIX_req_process_set_data(proc, data); + simcall_process_set_data(proc, data); if (*argc > 2) { free((*argv)[1]); memmove(&(*argv)[1], &(*argv)[2], sizeof(char *) * (*argc - 2)); @@ -70,6 +70,17 @@ void smpi_process_destroy(void) XBT_DEBUG("<%d> Process left the game", index); } +/** + * @brief Prepares the current process for termination. + */ +void smpi_process_finalize(void) +{ + // wait for all pending asynchronous comms to finish + while (SIMIX_process_has_pending_comms(SIMIX_process_self())) { + simcall_process_sleep(1); + } +} + int smpi_process_argc(void) { smpi_process_data_t data = smpi_process_data(); @@ -188,7 +199,7 @@ void smpi_global_init(void) process_data[i]->index = i; process_data[i]->argc = NULL; process_data[i]->argv = NULL; - process_data[i]->mailbox = SIMIX_req_rdv_create(get_mailbox_name(name, i)); + process_data[i]->mailbox = simcall_rdv_create(get_mailbox_name(name, i)); process_data[i]->timer = xbt_os_timer_new(); group = smpi_group_new(1); process_data[i]->comm_self = smpi_comm_new(group); @@ -212,11 +223,13 @@ void smpi_global_destroy(void) for (i = 0; i < count; i++) { smpi_comm_destroy(process_data[i]->comm_self); xbt_os_timer_free(process_data[i]->timer); - SIMIX_req_rdv_destroy(process_data[i]->mailbox); + simcall_rdv_destroy(process_data[i]->mailbox); xbt_free(process_data[i]); } xbt_free(process_data); process_data = NULL; + + smpi_free_static(); } /* Fortran specific stuff */ @@ -235,29 +248,23 @@ int MAIN__(void) { srand(SMPI_RAND_SEED); - double default_reference_speed = 20000.0; - xbt_cfg_register(&_surf_cfg_set, "smpi/running_power", - "Power of the host running the simulation (in flop/s). Used to bench the operations.", - xbt_cfgelm_double, &default_reference_speed, 1, 1, NULL, - NULL); - - int default_display_timing = 0; - xbt_cfg_register(&_surf_cfg_set, "smpi/display_timing", - "Boolean indicating whether we should display the timing after simulation.", - xbt_cfgelm_int, &default_display_timing, 1, 1, NULL, - NULL); - - double default_threshold = 1e-6; - xbt_cfg_register(&_surf_cfg_set, "smpi/cpu_threshold", - "Minimal computation time (in seconds) not discarded.", - xbt_cfgelm_double, &default_threshold, 1, 1, NULL, - NULL); - if(getenv("SMPI_PRETEND_CC") != NULL) { - /* Hack to ensure that smpicc can pretend to be a simple compiler. Particularly handy to pass it to the configuration tools */ + /* Hack to ensure that smpicc can pretend to be a simple compiler. Particularly handy to pass it to the configuration tools */ return 0; } + /* Connect log categories. See xbt/log.c */ + XBT_LOG_CONNECT(smpi); + XBT_LOG_CONNECT(smpi_base); + XBT_LOG_CONNECT(smpi_bench); + XBT_LOG_CONNECT(smpi_coll); + XBT_LOG_CONNECT(smpi_comm); + XBT_LOG_CONNECT(smpi_group); + XBT_LOG_CONNECT(smpi_kernel); + XBT_LOG_CONNECT(smpi_mpi); + XBT_LOG_CONNECT(smpi_mpi_dt); + XBT_LOG_CONNECT(smpi_pmpi); + #ifdef HAVE_TRACING TRACE_global_init(&xargc, xargv); #endif @@ -265,7 +272,7 @@ int MAIN__(void) SIMIX_global_init(&xargc, xargv); #ifdef HAVE_TRACING - TRACE_smpi_start(); + TRACE_start(); #endif // parse the platform file: get the host list @@ -291,7 +298,7 @@ int MAIN__(void) smpi_global_destroy(); #ifdef HAVE_TRACING - TRACE_smpi_release(); + TRACE_end(); #endif SIMIX_clean();