-/* Copyright (c) 2013-2019. 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
/* Non-topology-specific pipelined linear-bcast function
0->1, 1->2 ,2->3, ....., ->last node : in a pipeline fashion
*/
-namespace simgrid{
-namespace smpi{
-int Coll_reduce_NTSL::reduce(const void *buf, void *rbuf, int count,
- MPI_Datatype datatype, MPI_Op op, int root,
- MPI_Comm comm)
+namespace simgrid::smpi {
+int reduce__NTSL(const void *buf, void *rbuf, int count,
+ MPI_Datatype datatype, MPI_Op op, int root,
+ MPI_Comm comm)
{
int tag = COLL_TAG_REDUCE;
MPI_Status status;
/* pipeline */
else {
- MPI_Request* send_request_array = new MPI_Request[size + pipe_length];
- MPI_Request* recv_request_array = new MPI_Request[size + pipe_length];
- MPI_Status* send_status_array = new MPI_Status[size + pipe_length];
- MPI_Status* recv_status_array = new MPI_Status[size + pipe_length];
+ auto* send_request_array = new MPI_Request[size + pipe_length];
+ auto* recv_request_array = new MPI_Request[size + pipe_length];
+ auto* send_status_array = new MPI_Status[size + pipe_length];
+ auto* recv_status_array = new MPI_Status[size + pipe_length];
/* root recv data */
if (rank == root) {
delete[] recv_status_array;
} /* end pipeline */
- /* when count is not divisible by block size, use default BCAST for the remainder */
if ((remainder != 0) && (count > segment)) {
- XBT_WARN("MPI_reduce_NTSL use default MPI_reduce.");
- Coll_reduce_default::reduce((char *)buf + (pipe_length * increment),
- (char *)rbuf + (pipe_length * increment), remainder, datatype, op, root,
- comm);
+ XBT_INFO("MPI_reduce_NTSL: count is not divisible by block size, use default MPI_reduce for remainder.");
+ reduce__default((char *)buf + (pipe_length * increment),
+ (char *)rbuf + (pipe_length * increment), remainder, datatype, op, root,
+ comm);
}
smpi_free_tmp_buffer(tmp_buf);
return MPI_SUCCESS;
}
-}
-}
+} // namespace simgrid::smpi