X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/de5e36cc7e45014c43cf9290b5ac8380072d69ad..583f84349dc34c29f246f405779452f4eae419da:/src/smpi/smpi_pmpi.cpp diff --git a/src/smpi/smpi_pmpi.cpp b/src/smpi/smpi_pmpi.cpp index 83213f4b29..78b73c6a02 100644 --- a/src/smpi/smpi_pmpi.cpp +++ b/src/smpi/smpi_pmpi.cpp @@ -39,6 +39,9 @@ int PMPI_Init(int *argc, char ***argv) TRACE_smpi_collective_out(rank, -1, __FUNCTION__); smpi_bench_begin(); } + + smpi_mpi_init(); + return MPI_SUCCESS; } @@ -262,7 +265,7 @@ int PMPI_Op_create(MPI_User_function * function, int commute, MPI_Op * op) if (function == NULL || op == NULL) { retval = MPI_ERR_ARG; } else { - *op = smpi_op_new(function, commute); + *op = smpi_op_new(function, (commute!=0)); retval = MPI_SUCCESS; } return retval; @@ -1170,85 +1173,84 @@ int PMPI_Send(void *buf, int count, MPI_Datatype datatype, int dst, int tag, MPI retval = MPI_SUCCESS; } else if (dst >= smpi_group_size(smpi_comm_group(comm)) || dst <0){ retval = MPI_ERR_RANK; - } else if ((count < 0) || (buf==NULL && count > 0)) { + } else if ((count < 0) || (buf == nullptr && count > 0)) { retval = MPI_ERR_COUNT; } else if (!is_datatype_valid(datatype)) { - retval = MPI_ERR_TYPE; - } else if(tag<0 && tag != MPI_ANY_TAG){ + retval = MPI_ERR_TYPE; + } else if(tag < 0 && tag != MPI_ANY_TAG){ retval = MPI_ERR_TAG; } else { - - int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1; - int dst_traced = smpi_group_index(smpi_comm_group(comm), dst); - instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1); - extra->type = TRACING_SEND; - extra->src = rank; - extra->dst = dst_traced; - int known=0; - extra->datatype1 = encode_datatype(datatype, &known); - int dt_size_send = 1; - if(known==0) - dt_size_send = smpi_datatype_size(datatype); - extra->send_size = count*dt_size_send; - TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra); - if (!TRACE_smpi_view_internals()) { - TRACE_smpi_send(rank, rank, dst_traced,count*smpi_datatype_size(datatype)); - } + int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1; + int dst_traced = smpi_group_index(smpi_comm_group(comm), dst); + instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1); + extra->type = TRACING_SEND; + extra->src = rank; + extra->dst = dst_traced; + int known = 0; + extra->datatype1 = encode_datatype(datatype, &known); + int dt_size_send = 1; + if (known == 0) { + dt_size_send = smpi_datatype_size(datatype); + } + extra->send_size = count*dt_size_send; + TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra); + if (!TRACE_smpi_view_internals()) { + TRACE_smpi_send(rank, rank, dst_traced,count*smpi_datatype_size(datatype)); + } smpi_mpi_send(buf, count, datatype, dst, tag, comm); retval = MPI_SUCCESS; - TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__); + TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__); } smpi_bench_begin(); return retval; } - - int PMPI_Ssend(void* buf, int count, MPI_Datatype datatype, int dst, int tag, MPI_Comm comm) { int retval = 0; - smpi_bench_end(); - - if (comm == MPI_COMM_NULL) { - retval = MPI_ERR_COMM; - } else if (dst == MPI_PROC_NULL) { - retval = MPI_SUCCESS; - } else if (dst >= smpi_group_size(smpi_comm_group(comm)) || dst <0){ - retval = MPI_ERR_RANK; - } else if ((count < 0) || (buf==NULL && count > 0)) { - retval = MPI_ERR_COUNT; - } else if (!is_datatype_valid(datatype)){ - retval = MPI_ERR_TYPE; - } else if(tag<0 && tag != MPI_ANY_TAG){ - retval = MPI_ERR_TAG; - } else { - - int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1; - int dst_traced = smpi_group_index(smpi_comm_group(comm), dst); - instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1); - extra->type = TRACING_SSEND; - extra->src = rank; - extra->dst = dst_traced; - int known=0; - extra->datatype1 = encode_datatype(datatype, &known); - int dt_size_send = 1; - if(known==0) - dt_size_send = smpi_datatype_size(datatype); - extra->send_size = count*dt_size_send; - TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra); - TRACE_smpi_send(rank, rank, dst_traced,count*smpi_datatype_size(datatype)); - - smpi_mpi_ssend(buf, count, datatype, dst, tag, comm); - retval = MPI_SUCCESS; + smpi_bench_end(); - TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__); - } + if (comm == MPI_COMM_NULL) { + retval = MPI_ERR_COMM; + } else if (dst == MPI_PROC_NULL) { + retval = MPI_SUCCESS; + } else if (dst >= smpi_group_size(smpi_comm_group(comm)) || dst <0){ + retval = MPI_ERR_RANK; + } else if ((count < 0) || (buf==NULL && count > 0)) { + retval = MPI_ERR_COUNT; + } else if (!is_datatype_valid(datatype)){ + retval = MPI_ERR_TYPE; + } else if(tag<0 && tag != MPI_ANY_TAG){ + retval = MPI_ERR_TAG; + } else { + int rank = comm != MPI_COMM_NULL ? smpi_process_index() : -1; + int dst_traced = smpi_group_index(smpi_comm_group(comm), dst); + instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1); + extra->type = TRACING_SSEND; + extra->src = rank; + extra->dst = dst_traced; + int known = 0; + extra->datatype1 = encode_datatype(datatype, &known); + int dt_size_send = 1; + if(known == 0) { + dt_size_send = smpi_datatype_size(datatype); + } + extra->send_size = count*dt_size_send; + TRACE_smpi_ptp_in(rank, rank, dst_traced, __FUNCTION__, extra); + TRACE_smpi_send(rank, rank, dst_traced,count*smpi_datatype_size(datatype)); + + smpi_mpi_ssend(buf, count, datatype, dst, tag, comm); + retval = MPI_SUCCESS; + + TRACE_smpi_ptp_out(rank, rank, dst_traced, __FUNCTION__); + } - smpi_bench_begin(); - return retval;} + smpi_bench_begin(); + return retval; +} int PMPI_Sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype, int dst, int sendtag, void *recvbuf, int recvcount, MPI_Datatype recvtype, int src, int recvtag, MPI_Comm comm, MPI_Status * status)