X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/964e717761616c43c1fa74a392fd16d6daa1abe8..d20f024dba9ff1e9c8822237caaf963b9e913889:/src/smpi/bindings/smpi_pmpi_request.cpp diff --git a/src/smpi/bindings/smpi_pmpi_request.cpp b/src/smpi/bindings/smpi_pmpi_request.cpp index 926b55c349..ac91c2d200 100644 --- a/src/smpi/bindings/smpi_pmpi_request.cpp +++ b/src/smpi/bindings/smpi_pmpi_request.cpp @@ -3,11 +3,11 @@ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -#include "private.h" +#include "private.hpp" #include "smpi_comm.hpp" #include "smpi_datatype.hpp" -#include "smpi_request.hpp" #include "smpi_process.hpp" +#include "smpi_request.hpp" XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(smpi_pmpi); @@ -157,7 +157,7 @@ int PMPI_Irecv(void *buf, int count, MPI_Datatype datatype, int src, int tag, MP retval = MPI_ERR_TAG; } else { - int rank = comm != MPI_COMM_NULL ? smpi_process()->index() : -1; + int rank = smpi_process()->index(); int src_traced = comm->group()->index(src); instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1); @@ -206,7 +206,7 @@ int PMPI_Isend(void *buf, int count, MPI_Datatype datatype, int dst, int tag, MP } else if(tag<0 && tag != MPI_ANY_TAG){ retval = MPI_ERR_TAG; } else { - int rank = comm != MPI_COMM_NULL ? smpi_process()->index() : -1; + int rank = smpi_process()->index(); int dst_traced = comm->group()->index(dst); instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1); extra->type = TRACING_ISEND; @@ -254,7 +254,7 @@ int PMPI_Issend(void* buf, int count, MPI_Datatype datatype, int dst, int tag, M } else if(tag<0 && tag != MPI_ANY_TAG){ retval = MPI_ERR_TAG; } else { - int rank = comm != MPI_COMM_NULL ? smpi_process()->index() : -1; + int rank = smpi_process()->index(); int dst_traced = comm->group()->index(dst); instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1); extra->type = TRACING_ISSEND; @@ -301,7 +301,7 @@ int PMPI_Recv(void *buf, int count, MPI_Datatype datatype, int src, int tag, MPI } else if(tag<0 && tag != MPI_ANY_TAG){ retval = MPI_ERR_TAG; } else { - int rank = comm != MPI_COMM_NULL ? smpi_process()->index() : -1; + int rank = smpi_process()->index(); int src_traced = comm->group()->index(src); instr_extra_data extra = xbt_new0(s_instr_extra_data_t, 1); extra->type = TRACING_RECV; @@ -351,7 +351,7 @@ int PMPI_Send(void *buf, int count, MPI_Datatype datatype, int dst, int tag, MPI } else if(tag < 0 && tag != MPI_ANY_TAG){ retval = MPI_ERR_TAG; } else { - int rank = comm != MPI_COMM_NULL ? smpi_process()->index() : -1; + int rank = smpi_process()->index(); int dst_traced = comm->group()->index(dst); instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1); extra->type = TRACING_SEND; @@ -397,7 +397,7 @@ int PMPI_Ssend(void* buf, int count, MPI_Datatype datatype, int dst, int tag, MP } else if(tag<0 && tag != MPI_ANY_TAG){ retval = MPI_ERR_TAG; } else { - int rank = comm != MPI_COMM_NULL ? smpi_process()->index() : -1; + int rank = smpi_process()->index(); int dst_traced = comm->group()->index(dst); instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1); extra->type = TRACING_SSEND; @@ -448,7 +448,7 @@ int PMPI_Sendrecv(void* sendbuf, int sendcount, MPI_Datatype sendtype, int dst, retval = MPI_ERR_TAG; } else { - int rank = comm != MPI_COMM_NULL ? smpi_process()->index() : -1; + int rank = smpi_process()->index(); int dst_traced = comm->group()->index(dst); int src_traced = comm->group()->index(src); instr_extra_data extra = xbt_new0(s_instr_extra_data_t, 1); @@ -613,8 +613,7 @@ int PMPI_Wait(MPI_Request * request, MPI_Status * status) } else if (*request == MPI_REQUEST_NULL) { retval = MPI_SUCCESS; } else { - - int rank = (request!=nullptr && (*request)->comm() != MPI_COMM_NULL) ? smpi_process()->index() : -1; + int rank = (*request)->comm() != MPI_COMM_NULL ? smpi_process()->index() : -1; int src_traced = (*request)->src(); int dst_traced = (*request)->dst(); @@ -646,6 +645,9 @@ int PMPI_Waitany(int count, MPI_Request requests[], int *index, MPI_Status * sta if (index == nullptr) return MPI_ERR_ARG; + if (count <= 0) + return MPI_SUCCESS; + smpi_bench_end(); //save requests information for tracing typedef struct { @@ -655,10 +657,8 @@ int PMPI_Waitany(int count, MPI_Request requests[], int *index, MPI_Status * sta int tag; MPI_Comm comm; } savedvalstype; - savedvalstype* savedvals=nullptr; - if(count>0){ - savedvals = xbt_new0(savedvalstype, count); - } + savedvalstype* savedvals = xbt_new0(savedvalstype, count); + for (int i = 0; i < count; i++) { MPI_Request req = requests[i]; //already received requests are no longer valid if (req) {