static void smpi_init_options(){ int gather_id = find_coll_description(mpi_coll_gather_description, xbt_cfg_get_string("smpi/gather"),"gather"); mpi_coll_gather_fun = (int (*)(void *, int, MPI_Datatype, void *, int, MPI_Datatype, int, MPI_Comm)) mpi_coll_gather_description[gather_id].coll; int allgather_id = find_coll_description(mpi_coll_allgather_description, xbt_cfg_get_string("smpi/allgather"),"allgather"); mpi_coll_allgather_fun = (int (*)(void *, int, MPI_Datatype, void *, int, MPI_Datatype, MPI_Comm)) mpi_coll_allgather_description[allgather_id].coll; int allgatherv_id = find_coll_description(mpi_coll_allgatherv_description, xbt_cfg_get_string("smpi/allgatherv"),"allgatherv"); mpi_coll_allgatherv_fun = (int (*)(void *, int, MPI_Datatype, void *, int *, int *, MPI_Datatype, MPI_Comm)) mpi_coll_allgatherv_description[allgatherv_id].coll; int allreduce_id = find_coll_description(mpi_coll_allreduce_description, xbt_cfg_get_string("smpi/allreduce"),"allreduce"); mpi_coll_allreduce_fun = (int (*)(void *sbuf, void *rbuf, int rcount, MPI_Datatype dtype, MPI_Op op, MPI_Comm comm)) mpi_coll_allreduce_description[allreduce_id].coll; int alltoall_id = find_coll_description(mpi_coll_alltoall_description, xbt_cfg_get_string("smpi/alltoall"),"alltoall"); mpi_coll_alltoall_fun = (int (*)(void *, int, MPI_Datatype, void *, int, MPI_Datatype, MPI_Comm)) mpi_coll_alltoall_description[alltoall_id].coll; int alltoallv_id = find_coll_description(mpi_coll_alltoallv_description, xbt_cfg_get_string("smpi/alltoallv"),"alltoallv"); mpi_coll_alltoallv_fun = (int (*)(void *, int *, int *, MPI_Datatype, void *, int *, int *, MPI_Datatype, MPI_Comm)) mpi_coll_alltoallv_description[alltoallv_id].coll; int bcast_id = find_coll_description(mpi_coll_bcast_description, xbt_cfg_get_string("smpi/bcast"),"bcast"); mpi_coll_bcast_fun = (int (*)(void *buf, int count, MPI_Datatype datatype, int root, MPI_Comm com)) mpi_coll_bcast_description[bcast_id].coll; int reduce_id = find_coll_description(mpi_coll_reduce_description, xbt_cfg_get_string("smpi/reduce"),"reduce"); mpi_coll_reduce_fun = (int (*)(void *buf, void *rbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm)) mpi_coll_reduce_description[reduce_id].coll; int reduce_scatter_id = find_coll_description(mpi_coll_reduce_scatter_description, xbt_cfg_get_string("smpi/reduce-scatter"),"reduce_scatter"); mpi_coll_reduce_scatter_fun = (int (*)(void *sbuf, void *rbuf, int *rcounts,MPI_Datatype dtype, MPI_Op op, MPI_Comm comm)) mpi_coll_reduce_scatter_description[reduce_scatter_id].coll; int scatter_id = find_coll_description(mpi_coll_scatter_description, xbt_cfg_get_string("smpi/scatter"),"scatter"); mpi_coll_scatter_fun = (int (*)(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm)) mpi_coll_scatter_description[scatter_id].coll; int barrier_id = find_coll_description(mpi_coll_barrier_description, xbt_cfg_get_string("smpi/barrier"),"barrier"); mpi_coll_barrier_fun = (int (*)(MPI_Comm comm)) mpi_coll_barrier_description[barrier_id].coll; smpi_coll_cleanup_callback=NULL; smpi_cpu_threshold = xbt_cfg_get_double("smpi/cpu-threshold"); smpi_running_power = xbt_cfg_get_double("smpi/running-power"); smpi_privatize_global_variables = xbt_cfg_get_boolean("smpi/privatize-global-variables"); if (smpi_cpu_threshold < 0) smpi_cpu_threshold = DBL_MAX; }
static void smpi_execute(double duration) { if (duration >= xbt_cfg_get_double(_surf_cfg_set, "smpi/cpu_threshold")) { XBT_DEBUG("Sleep for %f to handle real computation time", duration); smpi_execute_flops(duration * xbt_cfg_get_double(_surf_cfg_set, "smpi/running_power")); } }
static void _sg_cfg_cb__gtnets_jitter(const char *name, int pos) { sg_gtnets_jitter = xbt_cfg_get_double(_sg_cfg_set, name); }
static void _sg_cfg_cb__test_sleep(const char *name, int pos){ smpi_test_sleep = xbt_cfg_get_double(_sg_cfg_set, name); }
static void _sg_cfg_cb__weight_S(const char *name, int pos) { sg_weight_S_parameter = xbt_cfg_get_double(_sg_cfg_set, name); }
static void _sg_cfg_cb__bandwidth_factor(const char *name, int pos) { sg_bandwidth_factor = xbt_cfg_get_double(_sg_cfg_set, name); }
static void _sg_cfg_cb__latency_factor(const char *name, int pos) { sg_latency_factor = xbt_cfg_get_double(_sg_cfg_set, name); }
static void _sg_cfg_cb__sender_gap(const char* name, int pos) { sg_sender_gap = xbt_cfg_get_double(_sg_cfg_set, name); }
static void _sg_cfg_cb__surf_precision(const char* name, int pos) { sg_surf_precision = xbt_cfg_get_double(_sg_cfg_set, name); }
/* callbacks of the network models values */ static void _sg_cfg_cb__tcp_gamma(const char *name, int pos) { sg_tcp_gamma = xbt_cfg_get_double(_sg_cfg_set, name); }
double sg_cfg_get_double(const char* name) { return xbt_cfg_get_double(_sg_cfg_set, name); }