-/* Copyright (c) 2013-2014. 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
* under the terms of the license (GNU LGPL) which comes with this package. */
-#include "../colls_private.h"
+#include "../colls_private.hpp"
/*****************************************************************************
*****************************************************************************/
-
/*****************************************************************************
* Function: allgather_bruck
* return: int
* comm: communication
* Descrp: Function realizes the allgather operation using the bruck
* algorithm.
- * Auther: MPICH
+ * Author: MPICH
* Comment: Original bruck algorithm from MPICH is slightly modified by
- * Ahmad Faraj.
+ * Ahmad Faraj.
****************************************************************************/
-int smpi_coll_tuned_allgather_bruck(void *send_buff, int send_count,
+
+namespace simgrid{
+namespace smpi{
+
+
+
+int Coll_allgather_bruck::allgather(const void *send_buff, int send_count,
MPI_Datatype send_type, void *recv_buff,
int recv_count, MPI_Datatype recv_type,
MPI_Comm comm)
int pof2 = 1;
// local string variables
- char *tmp_buff;
char *send_ptr = (char *) send_buff;
char *recv_ptr = (char *) recv_buff;
- // get size of the communicator, followed by rank
+ // get size of the communicator, followed by rank
num_procs = comm->size();
rank = comm->rank();
count = recv_count;
- tmp_buff = (char *) smpi_get_tmp_sendbuffer(num_procs * recv_count * recv_extent);
+ unsigned char* tmp_buff = smpi_get_tmp_sendbuffer(num_procs * recv_count * recv_extent);
// perform a local copy
- Datatype::copy(send_ptr, send_count, send_type,
- tmp_buff, recv_count, recv_type);
+ Datatype::copy(send_ptr, send_count, send_type, tmp_buff, recv_count, recv_type);
while (pof2 <= (num_procs / 2)) {
src = (rank + pof2) % num_procs;
dst = (rank - pof2 + num_procs) % num_procs;
smpi_free_tmp_buffer(tmp_buff);
return MPI_SUCCESS;
}
+
+
+}
+}