-/* Copyright (c) 2013-2017. The SimGrid Team.
+/* Copyright (c) 2013-2022. 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"
int flattree_segment_in_byte = 8192;
-namespace simgrid{
-namespace smpi{
-int
-Coll_bcast_flattree_pipeline::bcast(void *buff, int count,
- MPI_Datatype data_type, int root,
- MPI_Comm comm)
+namespace simgrid {
+namespace smpi {
+int bcast__flattree_pipeline(void *buff, int count,
+ MPI_Datatype data_type, int root,
+ MPI_Comm comm)
{
int i, j, rank, num_procs;
int tag = COLL_TAG_BCAST;
int pipe_length = count / segment;
int increment = segment * extent;
if (pipe_length==0) {
- XBT_WARN("MPI_bcast_flattree_pipeline use default MPI_bcast_flattree.");
- return Coll_bcast_flattree::bcast(buff, count, data_type, root, comm);
+ XBT_INFO("MPI_bcast_flattree_pipeline: pipe_length=0, use default MPI_bcast_flattree.");
+ return bcast__flattree(buff, count, data_type, root, comm);
}
rank = comm->rank();
num_procs = comm->size();
- MPI_Request *request_array;
- MPI_Status *status_array;
-
- request_array = (MPI_Request *) xbt_malloc(pipe_length * sizeof(MPI_Request));
- status_array = (MPI_Status *) xbt_malloc(pipe_length * sizeof(MPI_Status));
+ auto* request_array = new MPI_Request[pipe_length];
+ auto* status_array = new MPI_Status[pipe_length];
if (rank != root) {
for (i = 0; i < pipe_length; i++) {
}
- free(request_array);
- free(status_array);
+ delete[] request_array;
+ delete[] status_array;
return MPI_SUCCESS;
}