fcoll/two_phase: adjust aggregator selection to new mapby flag on MPI_COMM_WORLD
adjust how the aggregator nodes are selected depending on whether processes have been mapped by node or anything else. Signed-off-by: Edgar Gabriel <gabriel@cs.uh.edu>
Этот коммит содержится в:
родитель
92eff9050c
Коммит
f258036e06
@ -27,6 +27,7 @@
|
||||
#include "fcoll_two_phase.h"
|
||||
#include "mpi.h"
|
||||
#include "ompi/constants.h"
|
||||
#include "ompi/communicator/communicator.h"
|
||||
#include "ompi/mca/fcoll/fcoll.h"
|
||||
#include "ompi/mca/io/ompio/io_ompio.h"
|
||||
#include "ompi/mca/io/io.h"
|
||||
@ -199,7 +200,7 @@ mca_fcoll_two_phase_file_read_all (mca_io_ompio_file_t *fh,
|
||||
}
|
||||
|
||||
if (two_phase_num_io_procs > fh->f_size){
|
||||
two_phase_num_io_procs = fh->f_size;
|
||||
two_phase_num_io_procs = fh->f_size;
|
||||
}
|
||||
|
||||
aggregator_list = (int *) calloc (two_phase_num_io_procs, sizeof(int));
|
||||
@ -208,9 +209,16 @@ mca_fcoll_two_phase_file_read_all (mca_io_ompio_file_t *fh,
|
||||
goto exit;
|
||||
}
|
||||
|
||||
for (i=0; i< two_phase_num_io_procs; i++){
|
||||
aggregator_list[i] = i * fh->f_size / two_phase_num_io_procs;
|
||||
if ( OMPI_COMM_IS_MAPBY_NODE (&ompi_mpi_comm_world.comm) ) {
|
||||
for (i =0; i< two_phase_num_io_procs; i++){
|
||||
aggregator_list[i] = i;
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (i =0; i< two_phase_num_io_procs; i++){
|
||||
aggregator_list[i] = i * fh->f_size / two_phase_num_io_procs;
|
||||
}
|
||||
}
|
||||
|
||||
ret = fh->f_generate_current_file_view ((struct mca_io_ompio_file_t *)fh,
|
||||
max_data,
|
||||
|
@ -27,6 +27,7 @@
|
||||
|
||||
#include "mpi.h"
|
||||
#include "ompi/constants.h"
|
||||
#include "ompi/communicator/communicator.h"
|
||||
#include "ompi/mca/fcoll/fcoll.h"
|
||||
#include "ompi/mca/io/ompio/io_ompio.h"
|
||||
#include "ompi/mca/io/io.h"
|
||||
@ -235,9 +236,10 @@ mca_fcoll_two_phase_file_write_all (mca_io_ompio_file_t *fh,
|
||||
}
|
||||
|
||||
if (two_phase_num_io_procs > fh->f_size){
|
||||
two_phase_num_io_procs = fh->f_size;
|
||||
two_phase_num_io_procs = fh->f_size;
|
||||
}
|
||||
|
||||
|
||||
#if DEBUG_ON
|
||||
printf("Number of aggregators : %ld\n", two_phase_num_io_procs);
|
||||
#endif
|
||||
@ -248,10 +250,16 @@ mca_fcoll_two_phase_file_write_all (mca_io_ompio_file_t *fh,
|
||||
goto exit;
|
||||
}
|
||||
|
||||
for (i =0; i< two_phase_num_io_procs; i++){
|
||||
aggregator_list[i] = i * fh->f_size / two_phase_num_io_procs;
|
||||
if ( OMPI_COMM_IS_MAPBY_NODE (&ompi_mpi_comm_world.comm) ) {
|
||||
for (i =0; i< two_phase_num_io_procs; i++){
|
||||
aggregator_list[i] = i;
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
for (i =0; i< two_phase_num_io_procs; i++){
|
||||
aggregator_list[i] = i * fh->f_size / two_phase_num_io_procs;
|
||||
}
|
||||
}
|
||||
|
||||
ret = fh->f_generate_current_file_view ((struct mca_io_ompio_file_t*)fh,
|
||||
max_data,
|
||||
|
@ -101,7 +101,6 @@ int mca_io_ompio_simple_grouping(mca_io_ompio_file_t *fh,
|
||||
** allowed for the given no. of processes.
|
||||
*/
|
||||
dtime_threshold = (double) mca_io_ompio_aggregators_cutoff_threshold / 100.0;
|
||||
if ( fh->f_rank == 0 ) printf ("%d %lf\n", mca_io_ompio_aggregators_cutoff_threshold, dtime_threshold );
|
||||
|
||||
/* Determine whether to use the formula for 1-D or 2-D data decomposition. Anything
|
||||
** that is not 1-D is assumed to be 2-D in this version
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user