X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/c8880fd8bfe302109bdec0629929499479d714b0..638d55dcb8d944f7c74127725f1acb7b8e1449de:/src/simix/libsmx.c diff --git a/src/simix/libsmx.c b/src/simix/libsmx.c index 199f085502..9a182a1525 100644 --- a/src/simix/libsmx.c +++ b/src/simix/libsmx.c @@ -10,10 +10,12 @@ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ +#include "mc/mc_replay.h" #include "smx_private.h" -#include "mc/mc_interface.h" +#include "mc/mc_forward.h" #include "xbt/ex.h" #include /* isfinite() */ +#include "mc/mc.h" XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix); @@ -223,21 +225,21 @@ double simcall_host_get_consumed_energy(smx_host_t host) * * \param name Name of the execution synchro to create * \param host SIMIX host where the synchro will be executed - * \param computation_amount amount Computation amount (in bytes) + * \param flops_amount amount Computation amount (in flops) * \param priority computation priority * \param bound * \param affinity_mask * \return A new SIMIX execution synchronization */ smx_synchro_t simcall_host_execute(const char *name, smx_host_t host, - double computation_amount, + double flops_amount, double priority, double bound, unsigned long affinity_mask) { /* checking for infinite values */ - xbt_assert(isfinite(computation_amount), "computation_amount is not finite!"); + xbt_assert(isfinite(flops_amount), "flops_amount is not finite!"); xbt_assert(isfinite(priority), "priority is not finite!"); - return simcall_BODY_host_execute(name, host, computation_amount, priority, bound, affinity_mask); + return simcall_BODY_host_execute(name, host, flops_amount, priority, bound, affinity_mask); } /** @@ -248,8 +250,8 @@ smx_synchro_t simcall_host_execute(const char *name, smx_host_t host, * \param name Name of the execution synchro to create * \param host_nb Number of hosts where the synchro will be executed * \param host_list Array (of size host_nb) of hosts where the synchro will be executed - * \param computation_amount Array (of size host_nb) of computation amount of hosts (in bytes) - * \param communication_amount Array (of size host_nb * host_nb) representing the communication + * \param flops_amount Array (of size host_nb) of computation amount of hosts (in bytes) + * \param bytes_amount Array (of size host_nb * host_nb) representing the communication * amount between each pair of hosts * \param amount the SURF action amount * \param rate the SURF action rate @@ -258,18 +260,18 @@ smx_synchro_t simcall_host_execute(const char *name, smx_host_t host, smx_synchro_t simcall_host_parallel_execute(const char *name, int host_nb, smx_host_t *host_list, - double *computation_amount, - double *communication_amount, + double *flops_amount, + double *bytes_amount, double amount, double rate) { int i,j; /* checking for infinite values */ for (i = 0 ; i < host_nb ; ++i) { - xbt_assert(isfinite(computation_amount[i]), "computation_amount[%d] is not finite!", i); + xbt_assert(isfinite(flops_amount[i]), "flops_amount[%d] is not finite!", i); for (j = 0 ; j < host_nb ; ++j) { - xbt_assert(isfinite(communication_amount[i + host_nb * j]), - "communication_amount[%d+%d*%d] is not finite!", i, host_nb, j); + xbt_assert(isfinite(bytes_amount[i + host_nb * j]), + "bytes_amount[%d+%d*%d] is not finite!", i, host_nb, j); } } @@ -277,8 +279,8 @@ smx_synchro_t simcall_host_parallel_execute(const char *name, xbt_assert(isfinite(rate), "rate is not finite!"); return simcall_BODY_host_parallel_execute(name, host_nb, host_list, - computation_amount, - communication_amount, + flops_amount, + bytes_amount, amount, rate); } @@ -737,7 +739,7 @@ void simcall_process_set_kill_time(smx_process_t process, double kill_time) if (simix_global->kill_process_function) { XBT_DEBUG("Set kill time %f for process %s(%s)",kill_time, process->name, sg_host_name(process->smx_host)); - SIMIX_timer_set(kill_time, simix_global->kill_process_function, process); + process->kill_timer = SIMIX_timer_set(kill_time, simix_global->kill_process_function, process); } } } @@ -928,7 +930,7 @@ void simcall_comm_send(smx_process_t src, smx_rdv_t rdv, double task_size, doubl xbt_assert(rdv, "No rendez-vous point defined for send"); - if (MC_is_active()) { + if (MC_is_active() || MC_record_replay_is_active()) { /* the model-checker wants two separate simcalls */ smx_synchro_t comm = NULL; /* MC needs the comm to be set to NULL during the simcall */ comm = simcall_comm_isend(src, rdv, task_size, rate, @@ -975,7 +977,7 @@ void simcall_comm_recv(smx_rdv_t rdv, void *dst_buff, size_t * dst_buff_size, xbt_assert(isfinite(timeout), "timeout is not finite!"); xbt_assert(rdv, "No rendez-vous point defined for recv"); - if (MC_is_active()) { + if (MC_is_active() || MC_record_replay_is_active()) { /* the model-checker wants two separate simcalls */ smx_synchro_t comm = NULL; /* MC needs the comm to be set to NULL during the simcall */ comm = simcall_comm_irecv(rdv, dst_buff, dst_buff_size, @@ -1048,7 +1050,6 @@ void simcall_comm_wait(smx_synchro_t comm, double timeout) simcall_BODY_comm_wait(comm, timeout); } -#ifdef HAVE_TRACING /** * \brief Set the category of an synchro. * @@ -1063,7 +1064,6 @@ void simcall_set_category(smx_synchro_t synchro, const char *category) } simcall_BODY_set_category(synchro, category); } -#endif /** * \ingroup simix_comm_management @@ -1471,12 +1471,12 @@ int simcall_mc_compare_snapshots(void *s1, void *s2) { return simcall_BODY_mc_compare_snapshots(s1, s2); } +#endif /* HAVE_MC */ + int simcall_mc_random(int min, int max) { return simcall_BODY_mc_random(min, max); } -#endif /* HAVE_MC */ - /* ************************************************************************** */ /** @brief returns a printable string representing a simcall */