diff --git a/ompi/mca/io/romio/romio/adio/ad_panfs/ad_panfs_hints.c b/ompi/mca/io/romio/romio/adio/ad_panfs/ad_panfs_hints.c index d1f320e97d..06b177b8d3 100644 --- a/ompi/mca/io/romio/romio/adio/ad_panfs/ad_panfs_hints.c +++ b/ompi/mca/io/romio/romio/adio/ad_panfs/ad_panfs_hints.c @@ -23,15 +23,10 @@ void ADIOI_PANFS_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code) unsigned long int layout_total_num_comps = 0; pan_fs_client_layout_visit_t layout_visit_policy = PAN_FS_CLIENT_LAYOUT_VISIT__ROUND_ROBIN; int gen_error_code; - int ompi_parallel_opts = 0; *error_code = MPI_SUCCESS; if (fd->info == MPI_INFO_NULL) { - mca_base_param_lookup_int(mca_base_param_find("io", "romio", - "enable_parallel_optimizations"), - &ompi_parallel_opts); - /* This must be part of the open call. can set striping parameters * if necessary. */ @@ -53,12 +48,6 @@ void ADIOI_PANFS_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code) MPI_Abort(MPI_COMM_WORLD, 1); } MPI_Info_set(fd->info, "panfs_concurrent_write", value); - } else if (ompi_parallel_opts != 0) { - /* ------------------------------------------------------------------------ */ - /* OMPI: User hints supplied, but not panfs_concurrent_write: */ - /* OMPI: Make panfs_concurrent_write == 1 the default */ - /* ------------------------------------------------------------------------ */ - MPI_Info_set(fd->info, "panfs_concurrent_write", "1"); } MPI_Info_get(users_info, "panfs_layout_type", MPI_MAX_INFO_VAL, @@ -141,12 +130,6 @@ void ADIOI_PANFS_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code) ADIOI_Free(value); - } else if (ompi_parallel_opts) { - /* ------------------------------------------------------------------------ */ - /* OMPI: No user hints supplied. */ - /* OMPI: Make panfs_concurrent_write == 1 the default */ - /* ------------------------------------------------------------------------ */ - MPI_Info_set(fd->info, "panfs_concurrent_write", "1"); } } diff --git a/ompi/mca/io/romio/romio/adio/common/ad_hints.c b/ompi/mca/io/romio/romio/adio/common/ad_hints.c index 45e26bf216..0f6093072f 100644 --- a/ompi/mca/io/romio/romio/adio/common/ad_hints.c +++ b/ompi/mca/io/romio/romio/adio/common/ad_hints.c @@ -5,9 +5,6 @@ * See COPYRIGHT notice in top-level directory. */ -#include "ompi_config.h" -#include "opal/mca/base/mca_base_param.h" - #include "adio.h" #include "adio_extern.h" @@ -23,11 +20,6 @@ void ADIOI_GEN_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code) char *value; int flag, intval, tmp_val, nprocs=0, nprocs_is_valid = 0, len; static char myname[] = "ADIOI_GEN_SETINFO"; - int ompi_parallel_opts = 0; - - mca_base_param_lookup_int(mca_base_param_find("io", "romio", - "enable_parallel_optimizations"), - &ompi_parallel_opts); if (fd->info == MPI_INFO_NULL) MPI_Info_create(&(fd->info)); info = fd->info; @@ -45,10 +37,6 @@ void ADIOI_GEN_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code) * previously initialized */ if (!fd->hints->initialized) { - if (ompi_parallel_opts != 0) { - MPI_Info_set(info, "ompi_enable_parallel_optimizations", "true"); - } - /* buffer size for collective I/O */ MPI_Info_set(info, "cb_buffer_size", ADIOI_CB_BUFFER_SIZE_DFLT); fd->hints->cb_buffer_size = atoi(ADIOI_CB_BUFFER_SIZE_DFLT); @@ -58,14 +46,8 @@ void ADIOI_GEN_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code) */ MPI_Info_set(info, "romio_cb_read", "automatic"); fd->hints->cb_read = ADIOI_HINT_AUTO; - - if (ompi_parallel_opts != 0) { - MPI_Info_set(info, "romio_cb_write", "enable"); - fd->hints->cb_write = ADIOI_HINT_ENABLE; - } else { - MPI_Info_set(info, "romio_cb_write", "automatic"); - fd->hints->cb_write = ADIOI_HINT_AUTO; - } + MPI_Info_set(info, "romio_cb_write", "automatic"); + fd->hints->cb_write = ADIOI_HINT_AUTO; fd->hints->cb_config_list = NULL; @@ -294,13 +276,7 @@ void ADIOI_GEN_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code) MPI_Info_set(info, "cb_nodes", value); fd->hints->cb_nodes = intval; } - - } else { - /* OMPI: allow run-time override of cb_nodes during collective calls */ - if (ompi_parallel_opts != 0) { - MPI_Info_set(info, "ompi_cb_nodes_runtime_override", "true"); - } - } + } MPI_Info_get(users_info, "ind_wr_buffer_size", MPI_MAX_INFO_VAL, value, &flag); diff --git a/ompi/mca/io/romio/romio/adio/common/ad_write_coll.c b/ompi/mca/io/romio/romio/adio/common/ad_write_coll.c index 907f1c617b..304adce79c 100644 --- a/ompi/mca/io/romio/romio/adio/common/ad_write_coll.c +++ b/ompi/mca/io/romio/romio/adio/common/ad_write_coll.c @@ -11,8 +11,6 @@ #include "mpe.h" #endif -#include "limits.h" - /* prototypes of functions used for collective writes only. */ static void ADIOI_Exch_and_write(ADIO_File fd, void *buf, MPI_Datatype datatype, int nprocs, int myrank, @@ -78,17 +76,8 @@ void ADIOI_GEN_WriteStridedColl(ADIO_File fd, void *buf, int count, ADIO_Offset *offset_list = NULL, *st_offsets = NULL, *fd_start = NULL, *fd_end = NULL, *end_offsets = NULL; int *buf_idx = NULL, *len_list = NULL; - char value[MPI_MAX_INFO_VAL]; - int info_flag, ompi_parallel_opts = 0; - unsigned long long min_pe_request = ULONG_MAX; - unsigned long long max_pe_request = 0; - unsigned long long min_rd_request = ULONG_MAX; - unsigned long long max_rd_request = 0; int old_error, tmp_error; - MPI_Info_get(fd->info, "ompi_enable_parallel_optimizations", MPI_MAX_INFO_VAL, value, - &info_flag); - if (info_flag) ompi_parallel_opts = 1; #ifdef PROFILE MPE_Log_event(13, 0, "start computation"); @@ -118,77 +107,14 @@ void ADIOI_GEN_WriteStridedColl(ADIO_File fd, void *buf, int count, /* each process communicates its start and end offsets to other processes. The result is an array each of start and end offsets stored in order of process rank. */ - + st_offsets = (ADIO_Offset *) ADIOI_Malloc(nprocs*sizeof(ADIO_Offset)); end_offsets = (ADIO_Offset *) ADIOI_Malloc(nprocs*sizeof(ADIO_Offset)); - if (ompi_parallel_opts) { - /* OMPI: reduce the collectives calls from 2 to 1, to improve scaling */ - ADIO_Offset *stend_offsets, min_rd_st_offset, max_rd_end_offset, total_rd_size; - ADIO_Offset my_offsets[2]; - int nprocs_for_creq; - - stend_offsets = (ADIO_Offset *) ADIOI_Malloc(2*nprocs*sizeof(ADIO_Offset)); - my_offsets[0] = start_offset; - my_offsets[1] = end_offset; - - MPI_Allgather(my_offsets, 2, ADIO_OFFSET, stend_offsets, 2, ADIO_OFFSET, fd->comm); - min_rd_st_offset = stend_offsets[0]; - max_rd_end_offset = stend_offsets[1]; - for (i=0; iinfo, "ompi_cb_nodes_runtime_override", MPI_MAX_INFO_VAL, value, - &info_flag); - if (info_flag) { - /* ------------------------------------------------------------------ */ - /* OMPI: swh@lanl.gov (Steve Hodson): */ - /* If user has not specified cb_nodes then calculate it as follows: */ - /* 1)nprocs_for_coll depends initially on the collective request size.*/ - /* For larger requests the denominator is directly proportional to */ - /* the number of times the collective buffer is reused per request. */ - /* 2)nprocs_for_coll limited to 1/4 the number of processes */ - /* 3)nprocs_for_coll is at least to 1/32 the number of processes */ - /* 4)nprocs_for_coll limited to range 1-32. Need at least 1, */ - /* but don't exceed expected number of disks in use at a time */ - /* 5)nprocs_for_coll even workaround */ - /* 6)nprocs_for_coll at least 2 for more than 15 processes, */ - /* regardless of how small collective request is. */ - /* Caveat: */ - /* The preceeding recipe was arrived at empirically for the */ - /* Panasas file system on Flash. Applicability to other file systems */ - /* needs to be demonstrated. */ - /* Caution: Care must be taken below to make sure that nprocs_for_coll*/ - /* NEVER exceeds the default aggregator configuration list build once */ - /* in open: ADIOI_cb_config_list_parse. Since nprocs_for_coll is */ - /* usually less that this number, only a subset of the previously */ - /* allocated aggregators will be used. */ - /* ------------------------------------------------------------------ */ - total_rd_size = max_rd_end_offset - min_rd_st_offset + 1; - nprocs_for_creq = (int)(total_rd_size / ( 8 * 1024 * 1024 )); - nprocs_for_coll = ADIOI_MIN(nprocs_for_creq, nprocs/ 4); - nprocs_for_coll = ADIOI_MAX(nprocs_for_coll, nprocs/32); - nprocs_for_coll = ADIOI_MAX(nprocs_for_coll, 1); - nprocs_for_coll = ADIOI_MIN(nprocs_for_coll, 32); - if (nprocs_for_coll > 1 && nprocs_for_coll%2 ) nprocs_for_coll--; - if ( nprocs > 15 ) nprocs_for_coll = ADIOI_MAX(nprocs_for_coll, 2 ); - } - } else { - MPI_Allgather(&start_offset, 1, ADIO_OFFSET, st_offsets, 1, - ADIO_OFFSET, fd->comm); - MPI_Allgather(&end_offset, 1, ADIO_OFFSET, end_offsets, 1, - ADIO_OFFSET, fd->comm); - } + MPI_Allgather(&start_offset, 1, ADIO_OFFSET, st_offsets, 1, + ADIO_OFFSET, fd->comm); + MPI_Allgather(&end_offset, 1, ADIO_OFFSET, end_offsets, 1, + ADIO_OFFSET, fd->comm); /* are the accesses of different processes interleaved? */ for (i=1; i