* 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. */
// This selector is based on information gathered on the Stampede cluster, with Intel MPI 4.1.3.049, and from the intel reference manual. The data was gathered launching runs with 1,2,4,8,16 processes per node.
// This selector is based on information gathered on the Stampede cluster, with Intel MPI 4.1.3.049, and from the intel reference manual. The data was gathered launching runs with 1,2,4,8,16 processes per node.
4 - Topology aware Reduce + Bcast algorithm
5 - Binomial gather + scatter algorithm
6 - Topology aware binominal gather + scatter algorithm
4 - Topology aware Reduce + Bcast algorithm
5 - Binomial gather + scatter algorithm
6 - Topology aware binominal gather + scatter algorithm
MPI_Comm comm) ={
Coll_alltoall_bruck::alltoall,
Coll_alltoall_mvapich2_scatter_dest::alltoall,
MPI_Comm comm) ={
Coll_alltoall_bruck::alltoall,
Coll_alltoall_mvapich2_scatter_dest::alltoall,
-1. Dissemination algorithm
-2. Recursive doubling algorithm
-3. Topology aware dissemination algorithm
-4. Topology aware recursive doubling algorithm
-5. Binominal gather + scatter algorithm
-6. Topology aware binominal gather + scatter algorithm
+1. Dissemination algorithm
+2. Recursive doubling algorithm
+3. Topology aware dissemination algorithm
+4. Topology aware recursive doubling algorithm
+5. Binominal gather + scatter algorithm
+6. Topology aware binominal gather + scatter algorithm
-1. Binomial algorithm
-2. Recursive doubling algorithm
-3. Ring algorithm
-4. Topology aware binomial algorithm
-5. Topology aware recursive doubling algorithm
-6. Topology aware ring algorithm
-7. Shumilin's bcast algorithm
+1. Binomial algorithm
+2. Recursive doubling algorithm
+3. Ring algorithm
+4. Topology aware binomial algorithm
+5. Topology aware recursive doubling algorithm
+6. Topology aware ring algorithm
+7. Shumilin's bcast algorithm
-1. Shumilin's algorithm
-2. Binomial algorithm
-3. Topology aware Shumilin's algorithm
-4. Topology aware binomial algorithm
-5. Rabenseifner's algorithm
+1. Shumilin's algorithm
+2. Binomial algorithm
+3. Topology aware Shumilin's algorithm
+4. Topology aware binomial algorithm
+5. Rabenseifner's algorithm
-1. Recursive having algorithm
-2. Pair wise exchange algorithm
-3. Recursive doubling algorithm
-4. Reduce + Scatterv algorithm
-5. Topology aware Reduce + Scatterv algorithm
+1. Recursive having algorithm
+2. Pair wise exchange algorithm
+3. Recursive doubling algorithm
+4. Reduce + Scatterv algorithm
+5. Topology aware Reduce + Scatterv algorithm
#define SIZECOMP_reduce_scatter\
int total_message_size = 0;\
for (i = 0; i < comm_size; i++) { \
total_message_size += rcounts[i];\
}\
size_t block_dsize = total_message_size*dtype->size();\
#define SIZECOMP_reduce_scatter\
int total_message_size = 0;\
for (i = 0; i < comm_size; i++) { \
total_message_size += rcounts[i];\
}\
size_t block_dsize = total_message_size*dtype->size();\
#define IMPI_COLL_SELECT(cat, ret, args, args2)\
ret Coll_ ## cat ## _impi:: cat (COLL_UNPAREN args)\
{\
#define IMPI_COLL_SELECT(cat, ret, args, args2)\
ret Coll_ ## cat ## _impi:: cat (COLL_UNPAREN args)\
{\
COLL_APPLY(IMPI_COLL_SELECT, COLL_ALLGATHERV_SIG, (send_buff, send_count, send_type, recv_buff, recv_count, recv_disps, recv_type, comm));
COLL_APPLY(IMPI_COLL_SELECT, COLL_ALLREDUCE_SIG, (sbuf, rbuf, rcount, dtype, op, comm));
COLL_APPLY(IMPI_COLL_SELECT, COLL_ALLGATHERV_SIG, (send_buff, send_count, send_type, recv_buff, recv_count, recv_disps, recv_type, comm));
COLL_APPLY(IMPI_COLL_SELECT, COLL_ALLREDUCE_SIG, (sbuf, rbuf, rcount, dtype, op, comm));