This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "MPICH primary repository". The branch, master has been updated via 4a13e98629fd3bd8d2004ab5f5ea7c6e851bce57 (commit) via f8901ffe8923a9a1a9e155593e79a2dc7a6ec209 (commit) from 0590d5431bb3b5976491f476a07f5533c8e36f5d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://git.mpich.org/mpich.git/commitdiff/4a13e98629fd3bd8d2004ab5f5ea7c6e85... commit 4a13e98629fd3bd8d2004ab5f5ea7c6e851bce57 Author: Rob Latham <[email protected]> Date: Fri Oct 4 16:18:38 2013 -0500 compile error diff --git a/src/mpi/romio/adio/ad_bg/ad_bg_hints.c b/src/mpi/romio/adio/ad_bg/ad_bg_hints.c index 47a0e77..1866df5 100644 --- a/src/mpi/romio/adio/ad_bg/ad_bg_hints.c +++ b/src/mpi/romio/adio/ad_bg/ad_bg_hints.c @@ -258,7 +258,6 @@ void ADIOI_BG_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code) process hints for it. */ ADIOI_Info_check_and_install_int(fd, users_info, "striping_unit", &(fd->hints->striping_unit), myname, error_code); - } memset( value, 0, MPI_MAX_INFO_VAL+1 ); ADIOI_Info_get(users_info, ADIOI_BG_NAGG_IN_PSET_HINT_NAME, MPI_MAX_INFO_VAL, http://git.mpich.org/mpich.git/commitdiff/f8901ffe8923a9a1a9e155593e79a2dc7a... commit f8901ffe8923a9a1a9e155593e79a2dc7a6ec209 Author: Rob Latham <[email protected]> Date: Wed Oct 2 16:39:40 2013 -0500 improve comments, formatting on some tricky code I end up looking at this code only about once every six months. Add more comments so the next time I'm here, I don't have to re-learn the teeny-tiny details. diff --git a/src/mpi/romio/adio/ad_bg/ad_bg_aggrs.c b/src/mpi/romio/adio/ad_bg/ad_bg_aggrs.c index 0d6ab5b..d8b42ef 100644 --- a/src/mpi/romio/adio/ad_bg/ad_bg_aggrs.c +++ b/src/mpi/romio/adio/ad_bg/ad_bg_aggrs.c @@ -520,14 +520,43 @@ void ADIOI_BG_GPFS_Calc_file_domains(ADIO_Offset *st_offsets, fd_start = *fd_start_ptr; fd_end = *fd_end_ptr; + /* each process will have a file domain of some number of gpfs blocks, but + * the division of blocks is not likely to be even. Some file domains will + * be "large" and others "small" + * + * Example: consider 17 blocks distributed over 3 aggregators. + * nb_cn_small = 17/3 = 5 + * naggs_large = 17 - 3*(17/3) = 17 - 15 = 2 + * naggs_small = 3 - 2 = 1 + * + * and you end up with file domains of {5-blocks, 6-blocks, 6-blocks} + * + * what about (relatively) small files? say, a file of 1000 blocks + * distributed over 2064 aggregators: + * nb_cn_small = 1000/2064 = 0 + * naggs_large = 1000 - 2064*(1000/2064) = 1000 + * naggs_small = 2064 - 1000 = 1064 + * and you end up with domains of {0, 0, 0, ... 1, 1, 1 ...} + * + * it might be a good idea instead of having all the zeros up front, to + * "mix" those zeros into the fd_size array. that way, no pset/bridge-set + * is left with zero work. In fact, even if the small file domains aren't + * zero, it's probably still a good idea to mix the "small" file domains + * across the fd_size array to keep the io nodes in balance */ + + ADIO_Offset n_gpfs_blk = fd_gpfs_range / blksize; ADIO_Offset nb_cn_small = n_gpfs_blk/naggs; ADIO_Offset naggs_large = n_gpfs_blk - naggs * (n_gpfs_blk/naggs); ADIO_Offset naggs_small = naggs - naggs_large; - for (i=0; i<naggs; i++) - if (i < naggs_small) fd_size[i] = nb_cn_small * blksize; - else fd_size[i] = (nb_cn_small+1) * blksize; + for (i=0; i<naggs; i++) { + if (i < naggs_small) { + fd_size[i] = nb_cn_small * blksize; + } else { + fd_size[i] = (nb_cn_small+1) * blksize; + } + } # if AGG_DEBUG DBG_FPRINTF(stderr,"%s(%d): " ----------------------------------------------------------------------- Summary of changes: src/mpi/romio/adio/ad_bg/ad_bg_aggrs.c | 35 +++++++++++++++++++++++++++++-- src/mpi/romio/adio/ad_bg/ad_bg_hints.c | 1 - 2 files changed, 32 insertions(+), 4 deletions(-) hooks/post-receive -- MPICH primary repository