Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
smpi: many classes died tonight, but that will save kitten on the long term.
[simgrid.git] / src / smpi / colls / reduce / reduce-flat-tree.cpp
index f014861..2eaffae 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2018. The SimGrid Team.
+/* Copyright (c) 2013-2019. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -6,19 +6,18 @@
 
 #include "../colls_private.hpp"
 //#include <star-reduction.c>
-namespace simgrid{
-namespace smpi{
-int
-Coll_reduce_flat_tree::reduce(void *sbuf, void *rbuf, int count,
-                                 MPI_Datatype dtype, MPI_Op op,
-                                 int root, MPI_Comm comm)
+namespace simgrid {
+namespace smpi {
+int reduce__flat_tree(const void *sbuf, void *rbuf, int count,
+                     MPI_Datatype dtype, MPI_Op op,
+                     int root, MPI_Comm comm)
 {
   int i, tag = COLL_TAG_REDUCE;
   int size;
   int rank;
   MPI_Aint extent;
-  char *origin = 0;
-  char *inbuf;
+  unsigned char* origin = nullptr;
+  const unsigned char* inbuf;
   MPI_Status status;
 
   rank = comm->rank();
@@ -36,8 +35,7 @@ Coll_reduce_flat_tree::reduce(void *sbuf, void *rbuf, int count,
      messages. */
 
   if (size > 1)
-    origin = (char *) smpi_get_tmp_recvbuffer(count * extent);
-
+    origin = smpi_get_tmp_recvbuffer(count * extent);
 
   /* Initialize the receive buffer. */
   if (rank == (size - 1))
@@ -50,7 +48,7 @@ Coll_reduce_flat_tree::reduce(void *sbuf, void *rbuf, int count,
 
   for (i = size - 2; i >= 0; --i) {
     if (rank == i)
-      inbuf = static_cast<char*>(sbuf);
+      inbuf = static_cast<const unsigned char*>(sbuf);
     else {
       Request::recv(origin, count, dtype, i, tag, comm, &status);
       inbuf = origin;
@@ -61,8 +59,7 @@ Coll_reduce_flat_tree::reduce(void *sbuf, void *rbuf, int count,
 
   }
 
-  if (origin)
-    smpi_free_tmp_buffer(origin);
+  smpi_free_tmp_buffer(origin);
 
   /* All done */
   return 0;