A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Modern C++ use "auto".
[simgrid.git]
/
src
/
smpi
/
colls
/
bcast
/
bcast-SMP-linear.cpp
diff --git
a/src/smpi/colls/bcast/bcast-SMP-linear.cpp
b/src/smpi/colls/bcast/bcast-SMP-linear.cpp
index
8c241b9
..
a12aabf
100644
(file)
--- a/
src/smpi/colls/bcast/bcast-SMP-linear.cpp
+++ b/
src/smpi/colls/bcast/bcast-SMP-linear.cpp
@@
-1,23
+1,21
@@
-/* Copyright (c) 2013-20
17
. The SimGrid Team.
+/* Copyright (c) 2013-20
20
. 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. */
* 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.h
pp
"
int bcast_SMP_linear_segment_byte = 8192;
namespace simgrid{
namespace smpi{
int bcast_SMP_linear_segment_byte = 8192;
namespace simgrid{
namespace smpi{
-int
Coll_bcast_SMP_linear::bcast
(void *buf, int count,
-
MPI_Datatype datatype, int root,
-
MPI_Comm comm)
+int
bcast__SMP_linear
(void *buf, int count,
+ MPI_Datatype datatype, int root,
+ MPI_Comm comm)
{
int tag = COLL_TAG_BCAST;
MPI_Status status;
MPI_Request request;
{
int tag = COLL_TAG_BCAST;
MPI_Status status;
MPI_Request request;
- MPI_Request *request_array;
- MPI_Status *status_array;
int rank, size;
int i;
MPI_Aint extent;
int rank, size;
int i;
MPI_Aint extent;
@@
-33,12
+31,11
@@
int Coll_bcast_SMP_linear::bcast(void *buf, int count,
num_core = comm->get_intra_comm()->size();
}else{
//implementation buggy in this case
num_core = comm->get_intra_comm()->size();
}else{
//implementation buggy in this case
- return Coll_bcast_mpich::bcast( buf , count, datatype,
- root, comm);
+ return bcast__mpich(buf, count, datatype, root, comm);
}
int segment = bcast_SMP_linear_segment_byte / extent;
}
int segment = bcast_SMP_linear_segment_byte / extent;
- segment = segment == 0 ? 1 :segment;
+ segment = segment == 0 ? 1 :segment;
int pipe_length = count / segment;
int remainder = count % segment;
int increment = segment * extent;
int pipe_length = count / segment;
int remainder = count % segment;
int increment = segment * extent;
@@
-54,8
+51,8
@@
int Coll_bcast_SMP_linear::bcast(void *buf, int count,
// call native when MPI communication size is too small
if (size <= num_core) {
XBT_WARN("MPI_bcast_SMP_linear use default MPI_bcast.");
// call native when MPI communication size is too small
if (size <= num_core) {
XBT_WARN("MPI_bcast_SMP_linear use default MPI_bcast.");
-
Coll_bcast_default::bcas
t(buf, count, datatype, root, comm);
- return MPI_SUCCESS;
+
bcast__defaul
t(buf, count, datatype, root, comm);
+ return MPI_SUCCESS;
}
// if root is not zero send to rank zero first
if (root != 0) {
}
// if root is not zero send to rank zero first
if (root != 0) {
@@
-64,7
+61,7
@@
int Coll_bcast_SMP_linear::bcast(void *buf, int count,
else if (rank == 0)
Request::recv(buf, count, datatype, root, tag, comm, &status);
}
else if (rank == 0)
Request::recv(buf, count, datatype, root, tag, comm, &status);
}
- // when a message is smaller than a block size => no pipeline
+ // when a message is smaller than a block size => no pipeline
if (count <= segment) {
// case ROOT
if (rank == 0) {
if (count <= segment) {
// case ROOT
if (rank == 0) {
@@
-99,10
+96,8
@@
int Coll_bcast_SMP_linear::bcast(void *buf, int count,
}
// pipeline bcast
else {
}
// pipeline bcast
else {
- request_array =
- (MPI_Request *) xbt_malloc((size + pipe_length) * sizeof(MPI_Request));
- status_array =
- (MPI_Status *) xbt_malloc((size + pipe_length) * sizeof(MPI_Status));
+ auto* request_array = new MPI_Request[size + pipe_length];
+ auto* status_array = new MPI_Status[size + pipe_length];
// case ROOT of each SMP
if (rank % num_core == 0) {
// case ROOT of each SMP
if (rank % num_core == 0) {
@@
-164,15
+159,14
@@
int Coll_bcast_SMP_linear::bcast(void *buf, int count,
}
}
}
}
}
}
-
free(request_array)
;
-
free(status_array)
;
+
delete[] request_array
;
+
delete[] status_array
;
}
// when count is not divisible by block size, use default BCAST for the remainder
if ((remainder != 0) && (count > segment)) {
XBT_WARN("MPI_bcast_SMP_linear use default MPI_bcast.");
}
// when count is not divisible by block size, use default BCAST for the remainder
if ((remainder != 0) && (count > segment)) {
XBT_WARN("MPI_bcast_SMP_linear use default MPI_bcast.");
- Colls::bcast((char *) buf + (pipe_length * increment), remainder, datatype,
- root, comm);
+ colls::bcast((char*)buf + (pipe_length * increment), remainder, datatype, root, comm);
}
return MPI_SUCCESS;
}
return MPI_SUCCESS;