change the default value of the grouping option. Also add new grouping option which skips the refinement step in the aggregator selection.
Этот коммит содержится в:
родитель
e8e117503d
Коммит
66c1ea5fcb
@ -1030,13 +1030,29 @@ int ompi_io_ompio_set_aggregator_props (struct mca_io_ompio_file_t *fh,
|
|||||||
fh->f_flags |= OMPIO_AGGREGATOR_IS_SET;
|
fh->f_flags |= OMPIO_AGGREGATOR_IS_SET;
|
||||||
|
|
||||||
if (-1 == num_aggregators) {
|
if (-1 == num_aggregators) {
|
||||||
mca_io_ompio_create_groups(fh,bytes_per_proc);
|
if ( SIMPLE == mca_io_ompio_grouping_option ||
|
||||||
|
NO_REFINEMENT == mca_io_ompio_grouping_option ) {
|
||||||
|
fh->f_aggregator_index = 0;
|
||||||
|
fh->f_final_num_aggrs = fh->f_init_num_aggrs;
|
||||||
|
fh->f_procs_per_group = fh->f_init_procs_per_group;
|
||||||
|
|
||||||
|
fh->f_procs_in_group = (int*)malloc (fh->f_procs_per_group * sizeof(int));
|
||||||
|
if (NULL == fh->f_procs_in_group) {
|
||||||
|
opal_output (1, "OUT OF MEMORY\n");
|
||||||
|
return OMPI_ERR_OUT_OF_RESOURCE;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (j=0 ; j<fh->f_procs_per_group ; j++) {
|
||||||
|
fh->f_procs_in_group[j] = fh->f_init_procs_in_group[j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
mca_io_ompio_create_groups(fh,bytes_per_proc);
|
||||||
|
}
|
||||||
return OMPI_SUCCESS;
|
return OMPI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Forced number of aggregators
|
//Forced number of aggregators
|
||||||
else
|
|
||||||
{
|
|
||||||
/* calculate the offset at which each group of processes will start */
|
/* calculate the offset at which each group of processes will start */
|
||||||
procs_per_group = ceil ((float)fh->f_size/num_aggregators);
|
procs_per_group = ceil ((float)fh->f_size/num_aggregators);
|
||||||
|
|
||||||
@ -1062,7 +1078,6 @@ int ompi_io_ompio_set_aggregator_props (struct mca_io_ompio_file_t *fh,
|
|||||||
fh->f_final_num_aggrs = num_aggregators;
|
fh->f_final_num_aggrs = num_aggregators;
|
||||||
|
|
||||||
return OMPI_SUCCESS;
|
return OMPI_SUCCESS;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -101,12 +101,17 @@ OMPI_DECLSPEC extern int mca_io_ompio_coll_timing_info;
|
|||||||
#define OMPIO_MERGE 1
|
#define OMPIO_MERGE 1
|
||||||
#define OMPIO_SPLIT 2
|
#define OMPIO_SPLIT 2
|
||||||
#define OMPIO_RETAIN 3
|
#define OMPIO_RETAIN 3
|
||||||
|
|
||||||
#define DATA_VOLUME 1
|
#define DATA_VOLUME 1
|
||||||
#define UNIFORM_DISTRIBUTION 2
|
#define UNIFORM_DISTRIBUTION 2
|
||||||
#define OMPIO_UNIFORM_DIST_THRESHOLD 0.5
|
|
||||||
#define CONTIGUITY 3
|
#define CONTIGUITY 3
|
||||||
#define OMPIO_CONTG_THRESHOLD 1048576
|
|
||||||
#define OPTIMIZE_GROUPING 4
|
#define OPTIMIZE_GROUPING 4
|
||||||
|
#define SIMPLE 5
|
||||||
|
#define NO_REFINEMENT 6
|
||||||
|
|
||||||
|
|
||||||
|
#define OMPIO_UNIFORM_DIST_THRESHOLD 0.5
|
||||||
|
#define OMPIO_CONTG_THRESHOLD 1048576
|
||||||
#define OMPIO_PROCS_PER_GROUP_TAG 0
|
#define OMPIO_PROCS_PER_GROUP_TAG 0
|
||||||
#define OMPIO_PROCS_IN_GROUP_TAG 1
|
#define OMPIO_PROCS_IN_GROUP_TAG 1
|
||||||
#define OMPIO_MERGE_THRESHOLD 0.5
|
#define OMPIO_MERGE_THRESHOLD 0.5
|
||||||
|
@ -38,7 +38,7 @@ int mca_io_ompio_record_offset_info = 0;
|
|||||||
int mca_io_ompio_coll_timing_info = 0;
|
int mca_io_ompio_coll_timing_info = 0;
|
||||||
int mca_io_ompio_sharedfp_lazy_open = 1;
|
int mca_io_ompio_sharedfp_lazy_open = 1;
|
||||||
|
|
||||||
int mca_io_ompio_grouping_option=0;
|
int mca_io_ompio_grouping_option=4;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Private functions
|
* Private functions
|
||||||
@ -202,10 +202,13 @@ static int register_component(void)
|
|||||||
MCA_BASE_VAR_SCOPE_READONLY,
|
MCA_BASE_VAR_SCOPE_READONLY,
|
||||||
&mca_io_ompio_sharedfp_lazy_open);
|
&mca_io_ompio_sharedfp_lazy_open);
|
||||||
|
|
||||||
mca_io_ompio_grouping_option = 0;
|
mca_io_ompio_grouping_option = 4;
|
||||||
(void) mca_base_component_var_register(&mca_io_ompio_component.io_version,
|
(void) mca_base_component_var_register(&mca_io_ompio_component.io_version,
|
||||||
"grouping_option",
|
"grouping_option",
|
||||||
"Option for grouping of processes in the aggregator selection",
|
"Option for grouping of processes in the aggregator selection "
|
||||||
|
"1: Data volume based grouping 2: create uniform groups 3: maximimze "
|
||||||
|
"contiguity 4: hybrid optimization (default) 5: simple/no optimization "
|
||||||
|
"6: skip refinement step",
|
||||||
MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
|
MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
|
||||||
OPAL_INFO_LVL_9,
|
OPAL_INFO_LVL_9,
|
||||||
MCA_BASE_VAR_SCOPE_READONLY,
|
MCA_BASE_VAR_SCOPE_READONLY,
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user