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
add another ompi bcast algo
[simgrid.git]
/
src
/
smpi
/
colls
/
smpi_openmpi_selector.c
diff --git
a/src/smpi/colls/smpi_openmpi_selector.c
b/src/smpi/colls/smpi_openmpi_selector.c
index
6b46373
..
5d7d5af
100644
(file)
--- a/
src/smpi/colls/smpi_openmpi_selector.c
+++ b/
src/smpi/colls/smpi_openmpi_selector.c
@@
-129,20
+129,20
@@
int smpi_coll_tuned_bcast_ompi(void *buff, int count,
{
/* Decision function based on MX results for
messages up to 36MB and communicator sizes up to 64 nodes */
-
//
const size_t small_message_size = 2048;
+ const size_t small_message_size = 2048;
const size_t intermediate_message_size = 370728;
-
//
const double a_p16 = 3.2118e-6; /* [1 / byte] */
-
//
const double b_p16 = 8.7936;
-
//
const double a_p64 = 2.3679e-6; /* [1 / byte] */
-
//
const double b_p64 = 1.1787;
-
//
const double a_p128 = 1.6134e-6; /* [1 / byte] */
-
//
const double b_p128 = 2.1102;
-
-
//
int communicator_size;
+ const double a_p16 = 3.2118e-6; /* [1 / byte] */
+ const double b_p16 = 8.7936;
+ const double a_p64 = 2.3679e-6; /* [1 / byte] */
+ const double b_p64 = 1.1787;
+ const double a_p128 = 1.6134e-6; /* [1 / byte] */
+ const double b_p128 = 2.1102;
+
+ int communicator_size;
//int segsize = 0;
size_t message_size, dsize;
-
//
communicator_size = smpi_comm_size(comm);
+ communicator_size = smpi_comm_size(comm);
/* else we need data size for decision function */
dsize = smpi_datatype_size(datatype);
@@
-150,52
+150,45
@@
int smpi_coll_tuned_bcast_ompi(void *buff, int count,
/* Handle messages of small and intermediate size, and
single-element broadcasts */
- if ((message_size <
/*small_message_size*/intermediate
_message_size) || (count <= 1)) {
+ if ((message_size <
small
_message_size) || (count <= 1)) {
/* Binomial without segmentation */
- //segsize = 0;
return smpi_coll_tuned_bcast_binomial_tree (buff, count, datatype,
- root, comm/*
- segsize*/);
+ root, comm);
- }
/*
else if (message_size < intermediate_message_size) {
+ } else if (message_size < intermediate_message_size) {
// SplittedBinary with 1KB segments
- segsize = 1024;
- return smpi_coll_tuned_bcast_split_bintree(buff, count, datatype,
- root, comm
- segsize);
+ return smpi_coll_tuned_bcast_ompi_split_bintree(buff, count, datatype,
+ root, comm);
- }
- Handle large message sizes
+ }
+
//
Handle large message sizes
else if (communicator_size < (a_p128 * message_size + b_p128)) {
-
Pipeline with 128KB segments
- segsize = 1024 << 7;
- return smpi_coll_tuned_bcast_
flattree
_pipeline (buff, count, datatype,
- root, comm
, module,
- segsize);
+
//
Pipeline with 128KB segments
+
//
segsize = 1024 << 7;
+ return smpi_coll_tuned_bcast_
ompi
_pipeline (buff, count, datatype,
+ root, comm
);
+
} else if (communicator_size < 13) {
// Split Binary with 8KB segments
- segsize = 1024 << 3;
- return smpi_coll_tuned_bcast_intra_split_bintree(buff, count, datatype,
- root, comm, module,
- segsize);
+ return smpi_coll_tuned_bcast_ompi_split_bintree(buff, count, datatype,
+ root, comm);
} else if (communicator_size < (a_p64 * message_size + b_p64)) {
// Pipeline with 64KB segments
- segsize = 1024 << 6;
- return smpi_coll_tuned_bcast_
intra
_pipeline (buff, count, datatype,
- root, comm
, module,
- segsize);
+
//
segsize = 1024 << 6;
+ return smpi_coll_tuned_bcast_
ompi
_pipeline (buff, count, datatype,
+ root, comm
);
+
} else if (communicator_size < (a_p16 * message_size + b_p16)) {
-
Pipeline with 16KB segments
+
//
Pipeline with 16KB segments
//segsize = 1024 << 4;
- return smpi_coll_tuned_bcast_flattree_pipeline (buff, count, datatype,
- root, comm, module,
- segsize);
-
- }*/
+ return smpi_coll_tuned_bcast_ompi_pipeline (buff, count, datatype,
+ root, comm);
+
+ }
/* Pipeline with 8KB segments */
//segsize = 1024 << 3;
return smpi_coll_tuned_bcast_flattree_pipeline (buff, count, datatype,