X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/40616078da72e823931c1fb884949054699ec39d..HEAD:/src/smpi/colls/allgatherv/allgatherv-mpich-ring.cpp diff --git a/src/smpi/colls/allgatherv/allgatherv-mpich-ring.cpp b/src/smpi/colls/allgatherv/allgatherv-mpich-ring.cpp index 2deb294b6d..8be65a3c4b 100644 --- a/src/smpi/colls/allgatherv/allgatherv-mpich-ring.cpp +++ b/src/smpi/colls/allgatherv/allgatherv-mpich-ring.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2013-2014. The SimGrid Team. +/* Copyright (c) 2013-2023. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -10,7 +10,7 @@ * See COPYRIGHT in top-level directory. */ -#include "../colls_private.h" +#include "../colls_private.hpp" /***************************************************************************** * Function: allgather_mpich_ring @@ -24,14 +24,16 @@ * recv_type: data type of elements being received * comm: communication ****************************************************************************/ -int -smpi_coll_tuned_allgatherv_mpich_ring(void *sendbuf, int sendcount, - MPI_Datatype send_type, void *recvbuf, - int *recvcounts, int *displs, MPI_Datatype recvtype, - MPI_Comm comm) + +namespace simgrid::smpi { + +int allgatherv__mpich_ring(const void *sendbuf, int sendcount, + MPI_Datatype send_type, void *recvbuf, + const int *recvcounts, const int *displs, MPI_Datatype recvtype, + MPI_Comm comm) { - char * sbuf = NULL, * rbuf = NULL; + char *sbuf = nullptr, *rbuf = nullptr; int soffset, roffset; int torecv=0, tosend=0, min, rank, comm_size; int sendnow, recvnow; @@ -68,7 +70,7 @@ smpi_coll_tuned_allgatherv_mpich_ring(void *sendbuf, int sendcount, min = 32768*8 / recvtype_extent; /* Handle the case where the datatype extent is larger than * the pipeline size. */ - if (!min) + if (not min) min = 1; sidx = rank; @@ -82,25 +84,23 @@ smpi_coll_tuned_allgatherv_mpich_ring(void *sendbuf, int sendcount, rbuf = (char *)recvbuf + ((displs[ridx] + roffset) * recvtype_extent); /* Protect against wrap-around of indices */ - if (!tosend) + if (not tosend) sendnow = 0; - if (!torecv) + if (not torecv) recvnow = 0; /* Communicate */ - if (!sendnow && !recvnow) { - /* Don't do anything. This case is possible if two - * consecutive processes contribute 0 bytes each. */ - } - else if (!sendnow) { /* If there's no data to send, just do a recv call */ - Request::recv(rbuf, recvnow, recvtype, left, COLL_TAG_ALLGATHERV, comm, &status); + if (not sendnow && not recvnow) { + /* Don't do anything. This case is possible if two + * consecutive processes contribute 0 bytes each. */ + } else if (not sendnow) { /* If there's no data to send, just do a recv call */ + Request::recv(rbuf, recvnow, recvtype, left, COLL_TAG_ALLGATHERV, comm, &status); - torecv -= recvnow; - } - else if (!recvnow) { /* If there's no data to receive, just do a send call */ - Request::send(sbuf, sendnow, recvtype, right, COLL_TAG_ALLGATHERV, comm); + torecv -= recvnow; + } else if (not recvnow) { /* If there's no data to receive, just do a send call */ + Request::send(sbuf, sendnow, recvtype, right, COLL_TAG_ALLGATHERV, comm); - tosend -= sendnow; + tosend -= sendnow; } else { /* There's data to be sent and received */ Request::sendrecv(sbuf, sendnow, recvtype, right, COLL_TAG_ALLGATHERV, @@ -124,3 +124,5 @@ smpi_coll_tuned_allgatherv_mpich_ring(void *sendbuf, int sendcount, return MPI_SUCCESS; } + +} // namespace simgrid::smpi