-/* Copyright (c) 2013-2017. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2013-2020. 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 "src/smpi/smpi_status.hpp"
+#include "../colls_private.hpp"
+#include "smpi_status.hpp"
/*****************************************************************************
* Descrp: broadcasts using a scatter followed by LR allgather.
- * Auther: MPIH / modified by Ahmad Faraj
+ * Author: MPIH / modified by Ahmad Faraj
****************************************************************************/
-namespace simgrid{
-namespace smpi{
-int
-Coll_bcast_scatter_LR_allgather::bcast(void *buff, int count,
- MPI_Datatype data_type, int root,
- MPI_Comm comm)
+namespace simgrid {
+namespace smpi {
+int bcast__scatter_LR_allgather(void *buff, int count,
+ MPI_Datatype data_type, int root,
+ MPI_Comm comm)
{
MPI_Aint extent;
MPI_Status status;
int i, src, dst, rank, num_procs;
int mask, relative_rank, curr_size, recv_size, send_size, nbytes;
- int scatter_size, left, right, next_src, *recv_counts, *disps;
+ int scatter_size, left, right, next_src;
int tag = COLL_TAG_BCAST;
rank = comm->rank();
}
// done scatter now do allgather
- recv_counts = (int *) xbt_malloc(sizeof(int) * num_procs);
- disps = (int *) xbt_malloc(sizeof(int) * num_procs);
+ int* recv_counts = new int[num_procs];
+ int* disps = new int[num_procs];
for (i = 0; i < num_procs; i++) {
recv_counts[i] = nbytes - i * scatter_size;
next_src = (num_procs + next_src - 1) % num_procs;
}
-
- free(recv_counts);
- free(disps);
+ delete[] recv_counts;
+ delete[] disps;
return MPI_SUCCESS;
}