X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b05a0ed4f5fb7b81f96777af37b8f7fc5a4bf160..4f377cfbcae89e70585c675eb978c7c8a33dd773:/src/smpi/smpi_mpi.c diff --git a/src/smpi/smpi_mpi.c b/src/smpi/smpi_mpi.c index 483bbf5bd1..7778277dc2 100644 --- a/src/smpi/smpi_mpi.c +++ b/src/smpi/smpi_mpi.c @@ -5,6 +5,7 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ #include "private.h" +#include "simgrid/sg_config.h" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_mpi, smpi, "Logging specific to SMPI (mpi)"); @@ -13,6 +14,36 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_mpi, smpi, int MPI_Init(int *argc, char ***argv) { + int allgather_id = find_coll_description(mpi_coll_allgather_description, + sg_cfg_get_string("smpi/allgather")); + mpi_coll_allgather_fun = (int (*)(void *, int, MPI_Datatype, + void*, int, MPI_Datatype, MPI_Comm)) + mpi_coll_allgather_description[allgather_id].coll; + + int allreduce_id = find_coll_description(mpi_coll_allreduce_description, + sg_cfg_get_string("smpi/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, + sg_cfg_get_string("smpi/alltoall")); + mpi_coll_alltoall_fun = (int (*)(void *, int, MPI_Datatype, + void*, int, MPI_Datatype, MPI_Comm)) + mpi_coll_alltoall_description[alltoall_id].coll; + + int bcast_id = find_coll_description(mpi_coll_bcast_description, + sg_cfg_get_string("smpi/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, + sg_cfg_get_string("smpi/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; + return PMPI_Init(argc, argv); } @@ -61,6 +92,11 @@ int MPI_Type_free(MPI_Datatype * datatype) return PMPI_Type_free(datatype); } +int MPI_Pcontrol(const int level ) +{ + return PMPI_Pcontrol(level); +} + int MPI_Type_size(MPI_Datatype datatype, int *size) { return PMPI_Type_size(datatype, size); @@ -169,6 +205,11 @@ int MPI_Comm_size(MPI_Comm comm, int *size) return PMPI_Comm_size(comm, size); } +int MPI_Comm_get_attr (MPI_Comm comm, int comm_keyval, void *attribute_val, int *flag) +{ + return PMPI_Comm_get_attr (comm, comm_keyval, attribute_val, flag); +} + int MPI_Comm_get_name (MPI_Comm comm, char* name, int* len) { return PMPI_Comm_get_name(comm, name, len); @@ -670,3 +711,33 @@ int MPI_Iprobe(int source, int tag, MPI_Comm comm, int* flag, MPI_Status* status int MPI_Initialized(int* flag) { return PMPI_Initialized(flag); } + +int MPI_Win_fence( int assert, MPI_Win win){ + return PMPI_Win_fence( assert, win); +} + +int MPI_Win_free( MPI_Win* win){ + return PMPI_Win_free( win); +} + +int MPI_Win_create( void *base, MPI_Aint size, int disp_unit, MPI_Info info, MPI_Comm comm, MPI_Win *win){ + return PMPI_Win_create( base, size, disp_unit, info, comm,win); +} + +int MPI_Info_create( MPI_Info *info){ + return PMPI_Info_create( info); +} + +int MPI_Info_set( MPI_Info *info, char *key, char *value){ + return PMPI_Info_set( info, key, value); +} + +int MPI_Info_free( MPI_Info *info){ + return PMPI_Info_free( info); +} + +int MPI_Get( void *origin_addr, int origin_count, MPI_Datatype origin_datatype, int target_rank, + MPI_Aint target_disp, int target_count, MPI_Datatype target_datatype, MPI_Win win){ + return PMPI_Get( origin_addr,origin_count, origin_datatype,target_rank, + target_disp, target_count,target_datatype, win); +}