X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e8f8350f07c1b13dd8628f56d5a5050da18264d3..4f377cfbcae89e70585c675eb978c7c8a33dd773:/src/smpi/smpi_mpi.c diff --git a/src/smpi/smpi_mpi.c b/src/smpi/smpi_mpi.c index c709e0aaec..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); } @@ -46,6 +77,11 @@ double MPI_Wtime(void) return PMPI_Wtime(); } +double MPI_Wtick(void) +{ + return PMPI_Wtick(); +} + int MPI_Address(void *location, MPI_Aint * address) { return PMPI_Address(location, address); @@ -56,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); @@ -164,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); @@ -194,6 +240,11 @@ int MPI_Comm_free(MPI_Comm * comm) return PMPI_Comm_free(comm); } +int MPI_Comm_disconnect(MPI_Comm * comm) +{ + return PMPI_Comm_disconnect(comm); +} + int MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm* comm_out) { return PMPI_Comm_split(comm, color, key, comm_out); @@ -660,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); +}