#include <stdio.h>
#include "private.h"
+#include "smpi_mpi_dt_private.h"
XBT_LOG_NEW_CATEGORY(smpi, "All SMPI categories");
request->buf = NULL;
request->completed = 0;
+ request->consumed = 0;
request->mutex = SIMIX_mutex_init();
request->cond = SIMIX_cond_init();
request->data = NULL;
}
// mpi datatypes
- smpi_mpi_global->mpi_byte = xbt_new(s_smpi_mpi_datatype_t, 1);
+ smpi_mpi_global->mpi_byte = xbt_new(s_smpi_mpi_datatype_t, 1); /* we can think of it as a placeholder for value*/
smpi_mpi_global->mpi_byte->size = (size_t) 1;
+ smpi_mpi_global->mpi_byte->lb = (ptrdiff_t) 0;
+ smpi_mpi_global->mpi_byte->ub = smpi_mpi_global->mpi_byte->lb + smpi_mpi_global->mpi_byte->size;
+ smpi_mpi_global->mpi_byte->flags = DT_FLAG_BASIC;
+
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_char->lb = (ptrdiff_t) 0; //&(smpi_mpi_global->mpi_char);
+ smpi_mpi_global->mpi_char->ub = smpi_mpi_global->mpi_char->lb + smpi_mpi_global->mpi_char->size;
+ smpi_mpi_global->mpi_char->flags = DT_FLAG_BASIC;
+
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_int->lb = (ptrdiff_t) 0; // &(smpi_mpi_global->mpi_int);
+ smpi_mpi_global->mpi_int->ub = smpi_mpi_global->mpi_int->lb + smpi_mpi_global->mpi_int->size;
+ smpi_mpi_global->mpi_int->flags = DT_FLAG_BASIC;
+
smpi_mpi_global->mpi_float = xbt_new(s_smpi_mpi_datatype_t, 1);
smpi_mpi_global->mpi_float->size = sizeof(float);
+ smpi_mpi_global->mpi_float->lb = (ptrdiff_t) 0; // &(smpi_mpi_global->mpi_float);
+ smpi_mpi_global->mpi_float->ub = smpi_mpi_global->mpi_float->lb + smpi_mpi_global->mpi_float->size;
+ smpi_mpi_global->mpi_float->flags = DT_FLAG_BASIC;
+
smpi_mpi_global->mpi_double = xbt_new(s_smpi_mpi_datatype_t, 1);
smpi_mpi_global->mpi_double->size = sizeof(double);
+ smpi_mpi_global->mpi_double->lb = (ptrdiff_t) 0; //&(smpi_mpi_global->mpi_float);
+ smpi_mpi_global->mpi_double->ub = smpi_mpi_global->mpi_double->lb + smpi_mpi_global->mpi_double->size;
+ smpi_mpi_global->mpi_double->flags = DT_FLAG_BASIC;
// mpi operations
smpi_mpi_global->mpi_land = xbt_new(s_smpi_mpi_op_t, 1);
int smpi_run_simulation(int *argc, char **argv)
{
- smx_action_t action = NULL;
-
- xbt_fifo_t actions_failed = xbt_fifo_new();
- xbt_fifo_t actions_done = xbt_fifo_new();
-
srand(SMPI_RAND_SEED);
double default_reference_speed = 20000.0;
fflush(stderr);
SIMIX_init();
- while (SIMIX_solve(actions_done, actions_failed) != -1.0) {
- while ((action = xbt_fifo_pop(actions_failed))) {
- DEBUG1("** %s failed **", SIMIX_action_get_name(action));
- SIMIX_action_signal_all(action);
- }
- while ((action = xbt_fifo_pop(actions_done))) {
- DEBUG1("** %s done **", SIMIX_action_get_name(action));
- SIMIX_action_signal_all(action);
- }
- }
-
+ while (SIMIX_solve(NULL, NULL) != -1.0);
+
// FIXME: cleanup incomplete
- xbt_fifo_free(actions_failed);
- xbt_fifo_free(actions_done);
-
if (xbt_cfg_get_int(_surf_cfg_set, "display_timing"))
INFO1("simulation time %g", SIMIX_get_clock());