MPI_Datatype * datatype);
void smpi_mpi_sum_func(void *a, void *b, int *length,
MPI_Datatype * datatype);
+void smpi_mpi_prod_func(void *a, void *b, int *length,
+ MPI_Datatype * datatype);
void smpi_mpi_min_func(void *a, void *b, int *length,
MPI_Datatype * datatype);
void smpi_mpi_max_func(void *a, void *b, int *length,
// mpi datatypes
smpi_mpi_global->mpi_byte = xbt_new(s_smpi_mpi_datatype_t, 1);
smpi_mpi_global->mpi_byte->size = (size_t) 1;
+ smpi_mpi_global->mpi_char = xbt_new(s_smpi_mpi_datatype_t, 1);
+ smpi_mpi_global->mpi_char->size = (size_t) 1;
smpi_mpi_global->mpi_int = xbt_new(s_smpi_mpi_datatype_t, 1);
smpi_mpi_global->mpi_int->size = sizeof(int);
smpi_mpi_global->mpi_float = xbt_new(s_smpi_mpi_datatype_t, 1);
smpi_mpi_global->mpi_land->func = smpi_mpi_land_func;
smpi_mpi_global->mpi_sum = xbt_new(s_smpi_mpi_op_t, 1);
smpi_mpi_global->mpi_sum->func = smpi_mpi_sum_func;
+ smpi_mpi_global->mpi_prod = xbt_new(s_smpi_mpi_op_t, 1);
+ smpi_mpi_global->mpi_prod->func = smpi_mpi_prod_func;
smpi_mpi_global->mpi_min = xbt_new(s_smpi_mpi_op_t, 1);
smpi_mpi_global->mpi_min->func = smpi_mpi_min_func;
smpi_mpi_global->mpi_max = xbt_new(s_smpi_mpi_op_t, 1);
xbt_free(smpi_mpi_global->mpi_comm_world);
xbt_free(smpi_mpi_global->mpi_byte);
+ xbt_free(smpi_mpi_global->mpi_char);
xbt_free(smpi_mpi_global->mpi_int);
xbt_free(smpi_mpi_global->mpi_double);
xbt_free(smpi_mpi_global->mpi_float);
xbt_free(smpi_mpi_global->mpi_land);
xbt_free(smpi_mpi_global->mpi_sum);
+ xbt_free(smpi_mpi_global->mpi_prod);
xbt_free(smpi_mpi_global->mpi_max);
xbt_free(smpi_mpi_global->mpi_min);
int smpi_run_simulation(int *argc, char **argv)
{
- smx_cond_t cond = NULL;
smx_action_t action = NULL;
xbt_fifo_t actions_failed = xbt_fifo_new();
while (SIMIX_solve(actions_done, actions_failed) != -1.0) {
while ((action = xbt_fifo_pop(actions_failed))) {
- DEBUG1("** %s failed **", action->name);
- while ((cond = xbt_fifo_pop(action->cond_list))) {
- SIMIX_cond_broadcast(cond);
- }
+ DEBUG1("** %s failed **", SIMIX_action_get_name(action));
+ SIMIX_action_signal_all(action);
}
while ((action = xbt_fifo_pop(actions_done))) {
- DEBUG1("** %s done **", action->name);
- while ((cond = xbt_fifo_pop(action->cond_list))) {
- SIMIX_cond_broadcast(cond);
- }
+ DEBUG1("** %s done **", SIMIX_action_get_name(action));
+ SIMIX_action_signal_all(action);
}
}