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 "fcoll_two_phase.h"
|
||||||
#include "mpi.h"
|
#include "mpi.h"
|
||||||
#include "ompi/constants.h"
|
#include "ompi/constants.h"
|
||||||
|
#include "ompi/communicator/communicator.h"
|
||||||
#include "ompi/mca/fcoll/fcoll.h"
|
#include "ompi/mca/fcoll/fcoll.h"
|
||||||
#include "ompi/mca/io/ompio/io_ompio.h"
|
#include "ompi/mca/io/ompio/io_ompio.h"
|
||||||
#include "ompi/mca/io/io.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){
|
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));
|
aggregator_list = (int *) calloc (two_phase_num_io_procs, sizeof(int));
|
||||||
@ -208,8 +209,15 @@ mca_fcoll_two_phase_file_read_all (mca_io_ompio_file_t *fh,
|
|||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i=0; i< two_phase_num_io_procs; i++){
|
if ( OMPI_COMM_IS_MAPBY_NODE (&ompi_mpi_comm_world.comm) ) {
|
||||||
aggregator_list[i] = i * fh->f_size / two_phase_num_io_procs;
|
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,
|
ret = fh->f_generate_current_file_view ((struct mca_io_ompio_file_t *)fh,
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
#include "mpi.h"
|
#include "mpi.h"
|
||||||
#include "ompi/constants.h"
|
#include "ompi/constants.h"
|
||||||
|
#include "ompi/communicator/communicator.h"
|
||||||
#include "ompi/mca/fcoll/fcoll.h"
|
#include "ompi/mca/fcoll/fcoll.h"
|
||||||
#include "ompi/mca/io/ompio/io_ompio.h"
|
#include "ompi/mca/io/ompio/io_ompio.h"
|
||||||
#include "ompi/mca/io/io.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){
|
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
|
#if DEBUG_ON
|
||||||
printf("Number of aggregators : %ld\n", two_phase_num_io_procs);
|
printf("Number of aggregators : %ld\n", two_phase_num_io_procs);
|
||||||
#endif
|
#endif
|
||||||
@ -248,10 +250,16 @@ mca_fcoll_two_phase_file_write_all (mca_io_ompio_file_t *fh,
|
|||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i =0; i< two_phase_num_io_procs; i++){
|
if ( OMPI_COMM_IS_MAPBY_NODE (&ompi_mpi_comm_world.comm) ) {
|
||||||
aggregator_list[i] = i * fh->f_size / two_phase_num_io_procs;
|
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,
|
ret = fh->f_generate_current_file_view ((struct mca_io_ompio_file_t*)fh,
|
||||||
max_data,
|
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.
|
** allowed for the given no. of processes.
|
||||||
*/
|
*/
|
||||||
dtime_threshold = (double) mca_io_ompio_aggregators_cutoff_threshold / 100.0;
|
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
|
/* 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
|
** that is not 1-D is assumed to be 2-D in this version
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user