if (smpi_enabled() && !smpi_privatize_global_variables) {
#if HAVE_PRIVATIZATION
fprintf(stderr,
- "Try to enable SMPI variable privatization with --cfg=smpi/privatize_global_variables:yes.\n");
+ "Try to enable SMPI variable privatization with --cfg=smpi/privatize-global-variables:yes.\n");
#else
fprintf(stderr,
- "Sadly, your system does not support --cfg=smpi/privatize_global_variables:yes (yet).\n");
+ "Sadly, your system does not support --cfg=smpi/privatize-global-variables:yes (yet).\n");
#endif /* HAVE_PRIVATIZATION */
}
#endif /* HAVE_SMPI */
void SIMIX_global_init(int *argc, char **argv)
{
#if HAVE_MC
- _sg_do_model_check = getenv(MC_ENV_VARIABLE) != NULL;
+ // The communication initialization is done ASAP.
+ // We need to communicate initialization of the different layers to the model-checker.
+ simgrid::mc::Client::initialize();
#endif
s_smx_process_t proc;
if (!simix_global) {
simix_global = xbt_new0(s_smx_global_t, 1);
-#ifdef TIME_BENCH_AMDAHL
- simix_global->timer_seq = xbt_os_timer_new();
- simix_global->timer_par = xbt_os_timer_new();
- xbt_os_cputimer_start(simix_global->timer_seq);
-#endif
simix_global->process_to_run = xbt_dynar_new(sizeof(smx_process_t), NULL);
simix_global->process_that_ran = xbt_dynar_new(sizeof(smx_process_t), NULL);
simix_global->process_list = xbt_swag_new(xbt_swag_offset(proc, process_hookup));
__xbt_running_ctx_fetch = SIMIX_process_get_running_context;
__xbt_ex_terminate = SIMIX_process_exception_terminate;
- SIMIX_network_init();
-
/* Prepare to display some more info when dying on Ctrl-C pressing */
signal(SIGINT, inthandler);
simix_timers = xbt_heap_new(8, &free);
}
- if (sg_cfg_get_boolean("clean_atexit"))
+ if (xbt_cfg_get_boolean("clean-atexit"))
atexit(SIMIX_clean);
-#if HAVE_MC
- // The communication initialization is done ASAP.
- // We need to communicate initialization of the different layers to the model-checker.
- simgrid::mc::Client::initialize();
-#endif
-
if (_sg_cfg_exit_asap)
exit(0);
}
SIMIX_process_killall(simix_global->maestro_process, 1);
/* Exit the SIMIX network module */
- SIMIX_network_exit();
+ SIMIX_mailbox_exit();
xbt_heap_free(simix_timers);
simix_timers = NULL;
surf_exit();
-#ifdef TIME_BENCH_AMDAHL
- xbt_os_cputimer_stop(simix_global->timer_seq);
- XBT_INFO("Amdahl timing informations. Sequential time: %f; Parallel time: %f",
- xbt_os_timer_elapsed(simix_global->timer_seq),
- xbt_os_timer_elapsed(simix_global->timer_par));
- xbt_os_timer_free(simix_global->timer_seq);
- xbt_os_timer_free(simix_global->timer_par);
-#endif
-
xbt_mallocator_free(simix_global->synchro_mallocator);
xbt_free(simix_global);
simix_global = NULL;
void SIMIX_run(void)
{
if (MC_record_path) {
- MC_record_replay_from_string(MC_record_path);
+ simgrid::mc::replay(MC_record_path);
return;
}
do {
XBT_DEBUG("New Schedule Round; size(queue)=%lu",
xbt_dynar_length(simix_global->process_to_run));
-#ifdef TIME_BENCH_PER_SR
- smx_ctx_raw_new_sr();
-#endif
while (!xbt_dynar_is_empty(simix_global->process_to_run)) {
XBT_DEBUG("New Sub-Schedule Round; size(queue)=%lu",
xbt_dynar_length(simix_global->process_to_run));
/* Run all processes that are ready to run, possibly in parallel */
-#ifdef TIME_BENCH_AMDAHL
- xbt_os_cputimer_stop(simix_global->timer_seq);
- xbt_os_cputimer_resume(simix_global->timer_par);
-#endif
SIMIX_process_runall();
-#ifdef TIME_BENCH_AMDAHL
- xbt_os_cputimer_stop(simix_global->timer_par);
- xbt_os_cputimer_resume(simix_global->timer_seq);
-#endif
/* Move all killer processes to the end of the list, because killing a process that have an ongoing simcall is a bad idea */
xbt_dynar_three_way_partition(simix_global->process_that_ran, process_syscall_color);