X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/eda8761162ea40271daf72d84c25b8c030f510e9..3c21f9a5558132308c3d0db9dd91fbca8dfa2f43:/src/smpi/smpi_pmpi.cpp diff --git a/src/smpi/smpi_pmpi.cpp b/src/smpi/smpi_pmpi.cpp index 6e89a6d9a6..6e728550f8 100644 --- a/src/smpi/smpi_pmpi.cpp +++ b/src/smpi/smpi_pmpi.cpp @@ -1386,7 +1386,7 @@ int PMPI_Bcast(void *buf, int count, MPI_Datatype datatype, int root, MPI_Comm c extra->send_size = count * dt_size_send; TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, extra); if (comm->size() > 1) - mpi_coll_bcast_fun(buf, count, datatype, root, comm); + Colls::bcast(buf, count, datatype, root, comm); retval = MPI_SUCCESS; TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__); @@ -1409,7 +1409,7 @@ int PMPI_Barrier(MPI_Comm comm) extra->type = TRACING_BARRIER; TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra); - mpi_coll_barrier_fun(comm); + Colls::barrier(comm); retval = MPI_SUCCESS; TRACE_smpi_collective_out(rank, -1, __FUNCTION__); @@ -1461,7 +1461,7 @@ int PMPI_Gather(void *sendbuf, int sendcount, MPI_Datatype sendtype,void *recvbu TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, extra); - mpi_coll_gather_fun(sendtmpbuf, sendtmpcount, sendtmptype, recvbuf, recvcount, recvtype, root, comm); + Colls::gather(sendtmpbuf, sendtmpcount, sendtmptype, recvbuf, recvcount, recvtype, root, comm); retval = MPI_SUCCESS; TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__); @@ -1521,8 +1521,7 @@ int PMPI_Gatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recv } TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, extra); - smpi_mpi_gatherv(sendtmpbuf, sendtmpcount, sendtmptype, recvbuf, recvcounts, displs, recvtype, root, comm); - retval = MPI_SUCCESS; + retval = Colls::gatherv(sendtmpbuf, sendtmpcount, sendtmptype, recvbuf, recvcounts, displs, recvtype, root, comm); TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__); } @@ -1568,7 +1567,7 @@ int PMPI_Allgather(void *sendbuf, int sendcount, MPI_Datatype sendtype, TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra); - mpi_coll_allgather_fun(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm); + Colls::allgather(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm); retval = MPI_SUCCESS; TRACE_smpi_collective_out(rank, -1, __FUNCTION__); } @@ -1620,7 +1619,7 @@ int PMPI_Allgatherv(void *sendbuf, int sendcount, MPI_Datatype sendtype, TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra); - mpi_coll_allgatherv_fun(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm); + Colls::allgatherv(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm); retval = MPI_SUCCESS; TRACE_smpi_collective_out(rank, -1, __FUNCTION__); } @@ -1668,7 +1667,7 @@ int PMPI_Scatter(void *sendbuf, int sendcount, MPI_Datatype sendtype, extra->recv_size = recvcount * dt_size_recv; TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, extra); - mpi_coll_scatter_fun(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm); + Colls::scatter(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm); retval = MPI_SUCCESS; TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__); } @@ -1721,9 +1720,8 @@ int PMPI_Scatterv(void *sendbuf, int *sendcounts, int *displs, extra->recv_size = recvcount * dt_size_recv; TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, extra); - smpi_mpi_scatterv(sendbuf, sendcounts, displs, sendtype, recvbuf, recvcount, recvtype, root, comm); + retval = Colls::scatterv(sendbuf, sendcounts, displs, sendtype, recvbuf, recvcount, recvtype, root, comm); - retval = MPI_SUCCESS; TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__); } @@ -1756,7 +1754,7 @@ int PMPI_Reduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, TRACE_smpi_collective_in(rank, root_traced, __FUNCTION__, extra); - mpi_coll_reduce_fun(sendbuf, recvbuf, count, datatype, op, root, comm); + Colls::reduce(sendbuf, recvbuf, count, datatype, op, root, comm); retval = MPI_SUCCESS; TRACE_smpi_collective_out(rank, root_traced, __FUNCTION__); @@ -1811,7 +1809,7 @@ int PMPI_Allreduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatyp TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra); - mpi_coll_allreduce_fun(sendtmpbuf, recvbuf, count, datatype, op, comm); + Colls::allreduce(sendtmpbuf, recvbuf, count, datatype, op, comm); if( sendbuf == MPI_IN_PLACE ) xbt_free(sendtmpbuf); @@ -1849,9 +1847,8 @@ int PMPI_Scan(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MP TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra); - smpi_mpi_scan(sendbuf, recvbuf, count, datatype, op, comm); + retval = Colls::scan(sendbuf, recvbuf, count, datatype, op, comm); - retval = MPI_SUCCESS; TRACE_smpi_collective_out(rank, -1, __FUNCTION__); } @@ -1887,8 +1884,8 @@ int PMPI_Exscan(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, } TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra); - smpi_mpi_exscan(sendtmpbuf, recvbuf, count, datatype, op, comm); - retval = MPI_SUCCESS; + retval = Colls::exscan(sendtmpbuf, recvbuf, count, datatype, op, comm); + TRACE_smpi_collective_out(rank, -1, __FUNCTION__); if (sendbuf == MPI_IN_PLACE) xbt_free(sendtmpbuf); @@ -1938,7 +1935,7 @@ int PMPI_Reduce_scatter(void *sendbuf, void *recvbuf, int *recvcounts, MPI_Datat TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra); - mpi_coll_reduce_scatter_fun(sendtmpbuf, recvbuf, recvcounts, datatype, op, comm); + Colls::reduce_scatter(sendtmpbuf, recvbuf, recvcounts, datatype, op, comm); retval = MPI_SUCCESS; TRACE_smpi_collective_out(rank, -1, __FUNCTION__); @@ -1991,7 +1988,7 @@ int PMPI_Reduce_scatter_block(void *sendbuf, void *recvbuf, int recvcount, int* recvcounts = static_cast(xbt_malloc(count * sizeof(int))); for (int i = 0; i < count; i++) recvcounts[i] = recvcount; - mpi_coll_reduce_scatter_fun(sendtmpbuf, recvbuf, recvcounts, datatype, op, comm); + Colls::reduce_scatter(sendtmpbuf, recvbuf, recvcounts, datatype, op, comm); xbt_free(recvcounts); retval = MPI_SUCCESS; @@ -2044,7 +2041,7 @@ int PMPI_Alltoall(void* sendbuf, int sendcount, MPI_Datatype sendtype, void* rec TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra); - retval = mpi_coll_alltoall_fun(sendtmpbuf, sendtmpcount, sendtmptype, recvbuf, recvcount, recvtype, comm); + retval = Colls::alltoall(sendtmpbuf, sendtmpcount, sendtmptype, recvbuf, recvcount, recvtype, comm); TRACE_smpi_collective_out(rank, -1, __FUNCTION__); @@ -2117,7 +2114,7 @@ int PMPI_Alltoallv(void* sendbuf, int* sendcounts, int* senddisps, MPI_Datatype } extra->num_processes = size; TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra); - retval = mpi_coll_alltoallv_fun(sendtmpbuf, sendtmpcounts, sendtmpdisps, sendtmptype, recvbuf, recvcounts, + retval = Colls::alltoallv(sendtmpbuf, sendtmpcounts, sendtmpdisps, sendtmptype, recvbuf, recvcounts, recvdisps, recvtype, comm); TRACE_smpi_collective_out(rank, -1, __FUNCTION__); @@ -2775,11 +2772,15 @@ MPI_Fint PMPI_Info_c2f(MPI_Info info){ } int PMPI_Keyval_create(MPI_Copy_function* copy_fn, MPI_Delete_function* delete_fn, int* keyval, void* extra_state) { - return smpi_comm_keyval_create(copy_fn, delete_fn, keyval, extra_state); + smpi_copy_fn _copy_fn; + smpi_delete_fn _delete_fn; + _copy_fn.comm_copy_fn = copy_fn; + _delete_fn.comm_delete_fn = delete_fn; + return Keyval::keyval_create(_copy_fn, _delete_fn, keyval, extra_state); } int PMPI_Keyval_free(int* keyval) { - return smpi_comm_keyval_free(keyval); + return Keyval::keyval_free(keyval); } int PMPI_Attr_delete(MPI_Comm comm, int keyval) { @@ -2789,7 +2790,7 @@ int PMPI_Attr_delete(MPI_Comm comm, int keyval) { else if (comm==MPI_COMM_NULL) return MPI_ERR_COMM; else - return comm->attr_delete(keyval); + return comm->attr_delete(keyval); } int PMPI_Attr_get(MPI_Comm comm, int keyval, void* attr_value, int* flag) { @@ -2827,7 +2828,7 @@ int PMPI_Attr_get(MPI_Comm comm, int keyval, void* attr_value, int* flag) { *static_cast(attr_value) = &one; return MPI_SUCCESS; default: - return comm->attr_get(keyval, attr_value, flag); + return comm->attr_get(keyval, attr_value, flag); } } @@ -2838,7 +2839,7 @@ int PMPI_Attr_put(MPI_Comm comm, int keyval, void* attr_value) { else if (comm==MPI_COMM_NULL) return MPI_ERR_COMM; else - return comm->attr_put(keyval, attr_value); + return comm->attr_put(keyval, attr_value); } int PMPI_Comm_get_attr (MPI_Comm comm, int comm_keyval, void *attribute_val, int *flag) @@ -2871,7 +2872,7 @@ int PMPI_Type_get_attr (MPI_Datatype type, int type_keyval, void *attribute_val, if (type==MPI_DATATYPE_NULL) return MPI_ERR_TYPE; else - return type->attr_get(type_keyval, attribute_val, flag); + return type->attr_get(type_keyval, attribute_val, flag); } int PMPI_Type_set_attr (MPI_Datatype type, int type_keyval, void *attribute_val) @@ -2879,7 +2880,7 @@ int PMPI_Type_set_attr (MPI_Datatype type, int type_keyval, void *attribute_val) if (type==MPI_DATATYPE_NULL) return MPI_ERR_TYPE; else - return type->attr_put(type_keyval, attribute_val); + return type->attr_put(type_keyval, attribute_val); } int PMPI_Type_delete_attr (MPI_Datatype type, int type_keyval) @@ -2887,17 +2888,80 @@ int PMPI_Type_delete_attr (MPI_Datatype type, int type_keyval) if (type==MPI_DATATYPE_NULL) return MPI_ERR_TYPE; else - return type->attr_delete(type_keyval); + return type->attr_delete(type_keyval); } int PMPI_Type_create_keyval(MPI_Type_copy_attr_function* copy_fn, MPI_Type_delete_attr_function* delete_fn, int* keyval, void* extra_state) { - return Datatype::keyval_create(copy_fn, delete_fn, keyval, extra_state); + smpi_copy_fn _copy_fn; + smpi_delete_fn _delete_fn; + _copy_fn.type_copy_fn = copy_fn; + _delete_fn.type_delete_fn = delete_fn; + return Keyval::keyval_create(_copy_fn, _delete_fn, keyval, extra_state); } int PMPI_Type_free_keyval(int* keyval) { - return Datatype::keyval_free(keyval); + return Keyval::keyval_free(keyval); +} + +int PMPI_Win_get_attr (MPI_Win win, int keyval, void *attribute_val, int* flag) +{ + static MPI_Aint size; + static int disp_unit; + if (win==MPI_WIN_NULL) + return MPI_ERR_TYPE; + else{ + switch (keyval) { + case MPI_WIN_BASE : + *static_cast(attribute_val) = win->base(); + *flag = 1; + return MPI_SUCCESS; + case MPI_WIN_SIZE : + size = win->size(); + *static_cast(attribute_val) = &size; + *flag = 1; + return MPI_SUCCESS; + case MPI_WIN_DISP_UNIT : + disp_unit=win->disp_unit(); + *static_cast(attribute_val) = &disp_unit; + *flag = 1; + return MPI_SUCCESS; + default: + return win->attr_get(keyval, attribute_val, flag); + } +} + +} + +int PMPI_Win_set_attr (MPI_Win win, int type_keyval, void *attribute_val) +{ + if (win==MPI_WIN_NULL) + return MPI_ERR_TYPE; + else + return win->attr_put(type_keyval, attribute_val); +} + +int PMPI_Win_delete_attr (MPI_Win win, int type_keyval) +{ + if (win==MPI_WIN_NULL) + return MPI_ERR_TYPE; + else + return win->attr_delete(type_keyval); +} + +int PMPI_Win_create_keyval(MPI_Win_copy_attr_function* copy_fn, MPI_Win_delete_attr_function* delete_fn, int* keyval, + void* extra_state) +{ + smpi_copy_fn _copy_fn; + smpi_delete_fn _delete_fn; + _copy_fn.win_copy_fn = copy_fn; + _delete_fn.win_delete_fn = delete_fn; + return Keyval::keyval_create(_copy_fn, _delete_fn, keyval, extra_state); +} + +int PMPI_Win_free_keyval(int* keyval) { + return Keyval::keyval_free(keyval); } int PMPI_Info_create( MPI_Info *info){