Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
chasing blockers in collectives (part 1)
[simgrid.git] / src / smpi / colls / allgatherv-ompi-bruck.c
index bffcbac..d87dbab 100644 (file)
@@ -1,3 +1,9 @@
+/* Copyright (c) 2013-2014. The SimGrid Team.
+ * All rights reserved.                                                     */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
 /*
  * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
  *                         University Research and Technology
  * Copyright (c) 2004-2005 The Regents of the University of California.
  *                         All rights reserved.
  * Copyright (c) 2009      University of Houston. All rights reserved.
- * $COPYRIGHT$
  *
  * Additional copyrights may follow
- *
- * $HEADER$
  */
 
 #include "colls_private.h"
@@ -80,16 +83,16 @@ int smpi_coll_tuned_allgatherv_ompi_bruck(void *sbuf, int scount,
                                            MPI_Datatype rdtype,
                                            MPI_Comm comm)
 {
-   int rank, size;
-   int sendto, recvfrom, distance, blockcount, i;
+   int sendto, recvfrom, blockcount, i;
+   unsigned int distance;
    int *new_rcounts = NULL, *new_rdispls = NULL;
    int *new_scounts = NULL, *new_sdispls = NULL;
    ptrdiff_t slb, rlb, sext, rext;
    char *tmpsend = NULL, *tmprecv = NULL;
-   MPI_Datatype new_rdtype, new_sdtype;
+   MPI_Datatype new_rdtype = MPI_DATATYPE_NULL, new_sdtype = MPI_DATATYPE_NULL;
 
-   size = smpi_comm_size(comm);
-   rank = smpi_comm_rank(comm);
+   unsigned int size = smpi_comm_size(comm);
+   unsigned int rank = smpi_comm_rank(comm);
 
    XBT_DEBUG(
                 "coll:tuned:allgather_ompi_bruck rank %d", rank);
@@ -120,9 +123,6 @@ int smpi_coll_tuned_allgatherv_ompi_bruck(void *sbuf, int scount,
       - blockcount doubles until the last step when only the remaining data is 
       exchanged.
    */
-   blockcount = 1;
-   tmpsend = (char*) rbuf;
-
    new_rcounts = (int*) calloc(4*size, sizeof(int));
    new_rdispls = new_rcounts + size;
    new_scounts = new_rdispls + size;
@@ -162,8 +162,8 @@ int smpi_coll_tuned_allgatherv_ompi_bruck(void *sbuf, int scount,
                                      rbuf, 1, new_rdtype, recvfrom,
                                      COLL_TAG_ALLGATHERV,
                                      comm, MPI_STATUS_IGNORE);
-      smpi_datatype_free(&new_sdtype);
-      smpi_datatype_free(&new_rdtype);
+      smpi_datatype_unuse(new_sdtype);
+      smpi_datatype_unuse(new_rdtype);
 
    }