X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/49514a74128a35ed4c0ba6dc190d70d35dd9fd7a..c3104b0fa063f22f3ce92b1f2e4116eb06915d55:/src/simix/smx_host.c diff --git a/src/simix/smx_host.c b/src/simix/smx_host.c index 30043b08f4..4d4818e5d0 100644 --- a/src/simix/smx_host.c +++ b/src/simix/smx_host.c @@ -9,6 +9,7 @@ #include "xbt/log.h" #include "xbt/dict.h" #include "mc/mc.h" +#include "mc/mc_replay.h" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_host, simix, "SIMIX hosts"); @@ -176,31 +177,19 @@ const char* SIMIX_host_self_get_name(void) return SIMIX_host_get_name(host); } -const char* SIMIX_host_get_name(smx_host_t host){ - xbt_assert((host != NULL), "Invalid parameters"); - - return sg_host_name(host); -} - xbt_dict_t SIMIX_host_get_properties(smx_host_t host){ - xbt_assert((host != NULL), "Invalid parameters (simix host is NULL)"); - return surf_resource_get_properties(surf_workstation_resource_priv(host)); } double SIMIX_host_get_speed(smx_host_t host){ - xbt_assert((host != NULL), "Invalid parameters (simix host is NULL)"); return surf_workstation_get_speed(host, 1.0); } int SIMIX_host_get_core(smx_host_t host){ - xbt_assert((host != NULL), "Invalid parameters (simix host is NULL)"); - return surf_workstation_get_core(host); } xbt_swag_t SIMIX_host_get_process_list(smx_host_t host){ - xbt_assert((host != NULL), "Invalid parameters (simix host is NULL)"); smx_host_priv_t host_priv = SIMIX_host_priv(host); return host_priv->process_list; @@ -208,43 +197,40 @@ xbt_swag_t SIMIX_host_get_process_list(smx_host_t host){ double SIMIX_host_get_available_speed(smx_host_t host){ - xbt_assert((host != NULL), "Invalid parameters (simix host is NULL)"); - return surf_workstation_get_available_speed(host); } double SIMIX_host_get_current_power_peak(smx_host_t host) { - xbt_assert((host != NULL), "Invalid parameters (simix host is NULL)"); return surf_workstation_get_current_power_peak(host); } double SIMIX_host_get_power_peak_at(smx_host_t host, int pstate_index) { - xbt_assert((host != NULL), "Invalid parameters (simix host is NULL)"); - return surf_workstation_get_power_peak_at(host, pstate_index); } int SIMIX_host_get_nb_pstates(smx_host_t host) { - xbt_assert((host != NULL), "Invalid parameters (simix host is NULL)"); - return surf_workstation_get_nb_pstates(host); } -void SIMIX_host_set_power_peak_at(smx_host_t host, int pstate_index) { - xbt_assert((host != NULL), "Invalid parameters (simix host is NULL)"); - - surf_workstation_set_power_peak_at(host, pstate_index); +void SIMIX_host_set_pstate(smx_host_t host, int pstate_index) { + surf_workstation_set_pstate(host, pstate_index); +} +int SIMIX_host_get_pstate(smx_host_t host) { + return surf_workstation_get_pstate(host); } double SIMIX_host_get_consumed_energy(smx_host_t host) { - xbt_assert((host != NULL), "Invalid parameters (simix host is NULL)"); return surf_workstation_get_consumed_energy(host); } +double SIMIX_host_get_wattmin_at(smx_host_t host,int pstate) { + return surf_workstation_get_wattmin_at(host,pstate); +} +double SIMIX_host_get_wattmax_at(smx_host_t host,int pstate) { + return surf_workstation_get_wattmax_at(host,pstate); +} int SIMIX_host_get_state(smx_host_t host){ - xbt_assert((host != NULL), "Invalid parameters (simix host is NULL)"); - return surf_resource_get_state(surf_workstation_resource_priv(host)); } @@ -363,7 +349,7 @@ void SIMIX_host_autorestart(smx_host_t host) } smx_synchro_t SIMIX_host_execute(const char *name, - smx_host_t host, double computation_amount, double priority, double bound, unsigned long affinity_mask){ + smx_host_t host, double flops_amount, double priority, double bound, unsigned long affinity_mask){ /* alloc structures and initialize */ smx_synchro_t synchro = xbt_mallocator_get(simix_global->synchro_mallocator); @@ -371,15 +357,12 @@ smx_synchro_t SIMIX_host_execute(const char *name, synchro->name = xbt_strdup(name); synchro->state = SIMIX_RUNNING; synchro->execution.host = host; - -#ifdef HAVE_TRACING synchro->category = NULL; -#endif /* set surf's action */ - if (!MC_is_active()) { + if (!MC_is_active() && !MC_record_replay_is_active()) { - synchro->execution.surf_exec = surf_workstation_execute(host, computation_amount); + synchro->execution.surf_exec = surf_workstation_execute(host, flops_amount); surf_action_set_data(synchro->execution.surf_exec, synchro); surf_action_set_priority(synchro->execution.surf_exec, priority); @@ -405,7 +388,7 @@ smx_synchro_t SIMIX_host_execute(const char *name, smx_synchro_t SIMIX_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){ void **workstation_list = NULL; @@ -417,10 +400,7 @@ smx_synchro_t SIMIX_host_parallel_execute(const char *name, synchro->name = xbt_strdup(name); synchro->state = SIMIX_RUNNING; synchro->execution.host = NULL; /* FIXME: do we need the list of hosts? */ - -#ifdef HAVE_TRACING synchro->category = NULL; -#endif /* set surf's synchro */ workstation_list = xbt_new0(void *, host_nb); @@ -441,10 +421,10 @@ smx_synchro_t SIMIX_host_parallel_execute(const char *name, } /* set surf's synchro */ - if (!MC_is_active()) { + if (!MC_is_active() && !MC_record_replay_is_active()) { synchro->execution.surf_exec = surf_workstation_model_execute_parallel_task((surf_workstation_model_t)surf_workstation_model, - host_nb, workstation_list, computation_amount, communication_amount, rate); + host_nb, workstation_list, flops_amount, bytes_amount, rate); surf_action_set_data(synchro->execution.surf_exec, synchro); } @@ -515,7 +495,7 @@ void simcall_HANDLER_host_execution_wait(smx_simcall_t simcall, smx_synchro_t sy simcall->issuer->waiting_synchro = synchro; /* set surf's synchro */ - if (MC_is_active()) { + if (MC_is_active() || MC_record_replay_is_active()) { synchro->state = SIMIX_DONE; SIMIX_execution_finish(synchro); return; @@ -610,7 +590,6 @@ void SIMIX_post_host_execute(smx_synchro_t synchro) } -#ifdef HAVE_TRACING void SIMIX_set_category(smx_synchro_t synchro, const char *category) { if (synchro->state != SIMIX_RUNNING) return; @@ -620,7 +599,6 @@ void SIMIX_set_category(smx_synchro_t synchro, const char *category) surf_action_set_category(synchro->comm.surf_comm, category); } } -#endif /** * \brief Function to get the parameters of the given the SIMIX host.