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
complete the API of s4u::Mailbox
[simgrid.git]
/
src
/
smpi
/
colls
/
smpi_mpich_selector.c
diff --git
a/src/smpi/colls/smpi_mpich_selector.c
b/src/smpi/colls/smpi_mpich_selector.c
index 67e9d5bfa68c47aba60fdfbe1492c68a56ed683a..a43b6d8214d3609291c363a5b46a65e63c193bba 100644
(file)
--- a/
src/smpi/colls/smpi_mpich_selector.c
+++ b/
src/smpi/colls/smpi_mpich_selector.c
@@
-1,6
+1,6
@@
/* selector for collective algorithms based on mpich decision logic */
/* selector for collective algorithms based on mpich decision logic */
-/* Copyright (c) 2009
, 2010
. The SimGrid Team.
+/* Copyright (c) 2009
-2010, 2013-2014
. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
@@
-74,7
+74,7
@@
int smpi_coll_tuned_allreduce_mpich(void *sbuf, void *rbuf, int count,
if (block_dsize > large_message && count >= pof2 && smpi_op_is_commute(op)) {
//for long messages
if (block_dsize > large_message && count >= pof2 && smpi_op_is_commute(op)) {
//for long messages
- return (smpi_coll_tuned_allreduce_rab_r
sag
(sbuf, rbuf,
+ return (smpi_coll_tuned_allreduce_rab_r
db
(sbuf, rbuf,
count, dtype,
op, comm));
}else {
count, dtype,
op, comm));
}else {
@@
-167,7
+167,7
@@
int smpi_coll_tuned_alltoall_mpich( void *sbuf, int scount,
comm);
} else if (block_dsize < medium_size) {
comm);
} else if (block_dsize < medium_size) {
- return smpi_coll_tuned_alltoall_
simple
(sbuf, scount, sdtype,
+ return smpi_coll_tuned_alltoall_
basic_linear
(sbuf, scount, sdtype,
rbuf, rcount, rdtype,
comm);
}else if (communicator_size%2){
rbuf, rcount, rdtype,
comm);
}else if (communicator_size%2){
@@
-176,7
+176,7
@@
int smpi_coll_tuned_alltoall_mpich( void *sbuf, int scount,
comm);
}
comm);
}
- return smpi_coll_tuned_alltoall_
ompi_pairwise
(sbuf, scount, sdtype,
+ return smpi_coll_tuned_alltoall_
ring
(sbuf, scount, sdtype,
rbuf, rcount, rdtype,
comm);
}
rbuf, rcount, rdtype,
comm);
}
@@
-598,18
+598,16
@@
int smpi_coll_tuned_allgatherv_mpich(void *sbuf, int scount,
)
{
int communicator_size, pow2_size,i;
)
{
int communicator_size, pow2_size,i;
- size_t
dsize,
total_dsize;
+ size_t total_dsize;
communicator_size = smpi_comm_size(comm);
/* Determine complete data size */
communicator_size = smpi_comm_size(comm);
/* Determine complete data size */
- dsize=smpi_datatype_size(sdtype);
- total_dsize = dsize * scount * communicator_size;
-
total_dsize = 0;
for (i=0; i<communicator_size; i++)
total_dsize += rcounts[i];
total_dsize = 0;
for (i=0; i<communicator_size; i++)
total_dsize += rcounts[i];
- if (total_dsize == 0) return MPI_SUCCESS;
+ if (total_dsize == 0)
+ return MPI_SUCCESS;
for (pow2_size = 1; pow2_size < communicator_size; pow2_size <<=1);
for (pow2_size = 1; pow2_size < communicator_size; pow2_size <<=1);
@@
-622,7
+620,7
@@
int smpi_coll_tuned_allgatherv_mpich(void *sbuf, int scount,
rbuf, rcounts, rdispls, rdtype,
comm);
}
rbuf, rcounts, rdispls, rdtype,
comm);
}
- return smpi_coll_tuned_allgatherv_
ring(sbuf, scount, sdtype,
+ return smpi_coll_tuned_allgatherv_
mpich_ring(sbuf, scount, sdtype,
rbuf, rcounts, rdispls, rdtype,
comm);
}
rbuf, rcounts, rdispls, rdtype,
comm);
}
@@
-696,8
+694,12
@@
int smpi_coll_tuned_scatter_mpich(void *sbuf, int scount,
scount=rcount;
sdtype=rdtype;
}
scount=rcount;
sdtype=rdtype;
}
- return smpi_coll_tuned_scatter_ompi_binomial (sbuf, scount, sdtype,
+ int ret= smpi_coll_tuned_scatter_ompi_binomial (sbuf, scount, sdtype,
rbuf, rcount, rdtype,
root, comm);
rbuf, rcount, rdtype,
root, comm);
+ if(smpi_comm_rank(comm)!=root){
+ xbt_free(sbuf);
+ }
+ return ret;
}
}