-/* Copyright (c) 2013-2018. The SimGrid Team.
+/* Copyright (c) 2013-2020. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
namespace smpi{
int
-Coll_allgatherv_ompi_neighborexchange::allgatherv(void *sbuf, int scount,
- MPI_Datatype sdtype,
- void* rbuf, int *rcounts, int *rdispls,
- MPI_Datatype rdtype,
- MPI_Comm comm)
+allgatherv__ompi_neighborexchange(const void *sbuf, int scount,
+ MPI_Datatype sdtype,
+ void* rbuf, const int *rcounts, const int *rdispls,
+ MPI_Datatype rdtype,
+ MPI_Comm comm)
{
int line = -1;
int rank, size;
int i, even_rank;
int err = 0;
ptrdiff_t slb, rlb, sext, rext;
- char *tmpsend = NULL, *tmprecv = NULL;
-
+ char *tmpsend = nullptr, *tmprecv = nullptr;
size = comm->size();
rank = comm->rank();
if (size % 2) {
- XBT_DEBUG(
- "coll:tuned:allgatherv_ompi_neighborexchange WARNING: odd size %d, switching to ring algorithm",
+ XBT_DEBUG("allgatherv__ompi_neighborexchange WARNING: odd size %d, switching to ring algorithm",
size);
- return Coll_allgatherv_ring::allgatherv(sbuf, scount, sdtype,
+ return allgatherv__ring(sbuf, scount, sdtype,
rbuf, rcounts,
rdispls, rdtype,
comm);
- Rest of the steps:
update recv_data_from according to offset, and
exchange two blocks with appropriate neighbor.
- the send location becomes previous receve location.
+ the send location becomes previous receive location.
Note, we need to create indexed datatype to send and receive these
blocks properly.
*/