* (C) 2001 by Argonne National Laboratory.
* See COPYRIGHT in top-level directory.
*/
- #include "../colls_private.h"
+#include "../colls_private.hpp"
namespace simgrid{
namespace smpi{
{
int rank, size;
int local_rank, local_size;
- int leader_comm_size = 0;
+ int leader_comm_size = 0;
int mpi_errno = MPI_SUCCESS;
MPI_Aint recvtype_extent = 0; /* Datatype extent */
MPI_Comm shmem_comm, leader_comm;
if(comm->get_leaders_comm()==MPI_COMM_NULL){
comm->init_smp();
}
-
- if(!comm->is_uniform() || !comm->is_blocked())
+
+ if (not comm->is_uniform() || not comm->is_blocked())
THROWF(arg_error,0, "allgather MVAPICH2 smp algorithm can't be used with irregular deployment. Please insure that processes deployed on the same node are contiguous and that each node has the same number of processes");
-
+
if (recvcnt == 0) {
return MPI_SUCCESS;
}
/* extract the rank,size information for the intra-node communicator */
recvtype_extent=recvtype->get_extent();
-
+
shmem_comm = comm->get_intra_comm();
local_rank = shmem_comm->rank();
local_size = shmem_comm->size();
/*If there is just one node, after gather itself,
* root has all the data and it can do bcast*/
if(local_rank == 0) {
- mpi_errno = Colls::gather(sendbuf, sendcnt,sendtype,
- (void*)((char*)recvbuf + (rank * recvcnt * recvtype_extent)),
+ mpi_errno = Colls::gather(sendbuf, sendcnt,sendtype,
+ (void*)((char*)recvbuf + (rank * recvcnt * recvtype_extent)),
recvcnt, recvtype,
0, shmem_comm);
} else {
- /*Since in allgather all the processes could have
+ /*Since in allgather all the processes could have
* its own data in place*/
if(sendbuf == MPI_IN_PLACE) {
- mpi_errno = Colls::gather((void*)((char*)recvbuf + (rank * recvcnt * recvtype_extent)),
- recvcnt , recvtype,
+ mpi_errno = Colls::gather((void*)((char*)recvbuf + (rank * recvcnt * recvtype_extent)),
+ recvcnt , recvtype,
recvbuf, recvcnt, recvtype,
0, shmem_comm);
} else {
- mpi_errno = Colls::gather(sendbuf, sendcnt,sendtype,
+ mpi_errno = Colls::gather(sendbuf, sendcnt,sendtype,
recvbuf, recvcnt, recvtype,
0, shmem_comm);
}
displs = static_cast<int *>(xbt_malloc(sizeof (int) * leader_comm_size));
recvcnts = static_cast<int *>(xbt_malloc(sizeof (int) * leader_comm_size));
- if (!displs || !recvcnts) {
- return MPI_ERR_OTHER;
+ if (not displs || not recvcnts) {
+ return MPI_ERR_OTHER;
}
recvcnts[0] = node_sizes[0] * recvcnt;
displs[0] = 0;
mpi_errno = Colls::allgatherv(sendbuf,
(recvcnt*local_size),
- recvtype,
+ recvtype,
recvbuf, recvcnts,
displs, recvtype,
leader_comm);
xbt_free(recvcnts);
} else {
void* sendtmpbuf=((char*)recvbuf)+recvtype->get_extent()*(recvcnt*local_size)*leader_comm->rank();
-
-
- mpi_errno = Coll_allgather_mpich::allgather(sendtmpbuf,
+
+
+ mpi_errno = Coll_allgather_mpich::allgather(sendtmpbuf,
(recvcnt*local_size),
recvtype,
recvbuf, (recvcnt*local_size), recvtype,