- if(mv2_reduce_thresholds_table == NULL)
- init_mv2_reduce_tables_stampede();
-
- int mpi_errno = MPI_SUCCESS;
- int range = 0;
- int range_threshold = 0;
- int range_intra_threshold = 0;
- int is_commutative, pof2;
- int comm_size = 0;
- int nbytes = 0;
- int sendtype_size;
- int is_two_level = 0;
-
- comm_size = smpi_comm_size(comm);
- sendtype_size=smpi_datatype_size(datatype);
- nbytes = count * sendtype_size;
-
- if (count == 0)
- return MPI_SUCCESS;
-
- is_commutative = smpi_op_is_commute(op);
-
- /* find nearest power-of-two less than or equal to comm_size */
- for( pof2 = 1; pof2 <= comm_size; pof2 <<= 1 );
- pof2 >>=1;
-
-
- /* Search for the corresponding system size inside the tuning table */
- while ((range < (mv2_size_reduce_tuning_table - 1)) &&
- (comm_size > mv2_reduce_thresholds_table[range].numproc)) {
- range++;
- }
- /* Search for corresponding inter-leader function */
- while ((range_threshold < (mv2_reduce_thresholds_table[range].size_inter_table - 1))
- && (nbytes >
- mv2_reduce_thresholds_table[range].inter_leader[range_threshold].max)
- && (mv2_reduce_thresholds_table[range].inter_leader[range_threshold].max !=
- -1)) {
- range_threshold++;
- }
-
- /* Search for corresponding intra node function */
- while ((range_intra_threshold < (mv2_reduce_thresholds_table[range].size_intra_table - 1))
- && (nbytes >
- mv2_reduce_thresholds_table[range].intra_node[range_intra_threshold].max)
- && (mv2_reduce_thresholds_table[range].intra_node[range_intra_threshold].max !=
- -1)) {
- range_intra_threshold++;
- }
-
- /* Set intra-node function pt for reduce_two_level */
- MV2_Reduce_intra_function =
- mv2_reduce_thresholds_table[range].intra_node[range_intra_threshold].
- MV2_pt_Reduce_function;
- /* Set inter-leader pt */
- MV2_Reduce_function =
- mv2_reduce_thresholds_table[range].inter_leader[range_threshold].
- MV2_pt_Reduce_function;
-
- if(mv2_reduce_intra_knomial_factor<0)
+ if(mv2_reduce_thresholds_table == NULL)
+ init_mv2_reduce_tables_stampede();
+
+ int mpi_errno = MPI_SUCCESS;
+ int range = 0;
+ int range_threshold = 0;
+ int range_intra_threshold = 0;
+ int is_commutative, pof2;
+ int comm_size = 0;
+ int nbytes = 0;
+ int sendtype_size;
+ int is_two_level = 0;
+
+ comm_size = smpi_comm_size(comm);
+ sendtype_size=smpi_datatype_size(datatype);
+ nbytes = count * sendtype_size;
+
+ if (count == 0)
+ return MPI_SUCCESS;
+
+ is_commutative = smpi_op_is_commute(op);
+
+ /* find nearest power-of-two less than or equal to comm_size */
+ for( pof2 = 1; pof2 <= comm_size; pof2 <<= 1 );
+ pof2 >>=1;
+
+
+ /* Search for the corresponding system size inside the tuning table */
+ while ((range < (mv2_size_reduce_tuning_table - 1)) &&
+ (comm_size > mv2_reduce_thresholds_table[range].numproc)) {
+ range++;
+ }
+ /* Search for corresponding inter-leader function */
+ while ((range_threshold < (mv2_reduce_thresholds_table[range].size_inter_table - 1))
+ && (nbytes >
+ mv2_reduce_thresholds_table[range].inter_leader[range_threshold].max)
+ && (mv2_reduce_thresholds_table[range].inter_leader[range_threshold].max !=
+ -1)) {
+ range_threshold++;
+ }
+
+ /* Search for corresponding intra node function */
+ while ((range_intra_threshold < (mv2_reduce_thresholds_table[range].size_intra_table - 1))
+ && (nbytes >
+ mv2_reduce_thresholds_table[range].intra_node[range_intra_threshold].max)
+ && (mv2_reduce_thresholds_table[range].intra_node[range_intra_threshold].max !=
+ -1)) {
+ range_intra_threshold++;
+ }
+
+ /* Set intra-node function pt for reduce_two_level */
+ MV2_Reduce_intra_function =
+ mv2_reduce_thresholds_table[range].intra_node[range_intra_threshold].
+ MV2_pt_Reduce_function;
+ /* Set inter-leader pt */
+ MV2_Reduce_function =
+ mv2_reduce_thresholds_table[range].inter_leader[range_threshold].
+ MV2_pt_Reduce_function;
+
+ if(mv2_reduce_intra_knomial_factor<0)