[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.1b1-20-ga51b0f0
mysql vizuser
noreply at mpich.org
Wed Aug 21 14:36:51 CDT 2013
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 a51b0f04291f75748f4e929ef364c2157abfb67b (commit)
from dd214fe7e3e2ffeaa2a81d605e724bca026dfc61 (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/a51b0f04291f75748f4e929ef364c2157abfb67b
commit a51b0f04291f75748f4e929ef364c2157abfb67b
Author: Rob Latham <robl at mcs.anl.gov>
Date: Wed Aug 21 13:55:59 2013 +0000
Improve aggregation selection on Blue Gene
The default "aggregators per peset" value of 8 had not been changed
since Blue Gene /L. Further, allow one to set the environment variable
BGMPIO_NAGG_PSET to have the same effect as setting the "bg_nodes_pset"
hint. Since this is all very confusing on /Q, toss in a few more (but
no doubt not enough) comments.
Reviewed-by: Bob Cernohous <bobc at us.ibm.com>
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 bd3bfa6..22b5e37 100644
--- a/src/mpi/romio/adio/ad_bg/ad_bg_hints.c
+++ b/src/mpi/romio/adio/ad_bg/ad_bg_hints.c
@@ -76,6 +76,7 @@ void ADIOI_BG_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code)
*/
if (!fd->hints->initialized) {
+ ad_bg_get_env_vars();
did_anything = 1;
/* buffer size for collective I/O */
diff --git a/src/mpi/romio/adio/ad_bg/ad_bg_pset.c b/src/mpi/romio/adio/ad_bg/ad_bg_pset.c
index b5d9026..5eaf1c1 100644
--- a/src/mpi/romio/adio/ad_bg/ad_bg_pset.c
+++ b/src/mpi/romio/adio/ad_bg/ad_bg_pset.c
@@ -254,7 +254,7 @@ ADIOI_BG_persInfo_init(ADIOI_BG_ConfInfo_t *conf,
conf->nAggrs = n_aggrs;
/* First pass gets nAggrs = -1 */
if(conf->nAggrs <=0)
- conf->nAggrs = ADIOI_BG_NAGG_PSET_DFLT;
+ conf->nAggrs = bgmpio_bg_nagg_pset;
if(conf->ioMinSize <= conf->nAggrs)
conf->nAggrs = MAX(1,conf->ioMinSize-1); /* not including bridge itself */
/* if(conf->nAggrs > conf->numBridgeRanks)
diff --git a/src/mpi/romio/adio/ad_bg/ad_bg_pset.h b/src/mpi/romio/adio/ad_bg/ad_bg_pset.h
index ba881d4..ab57e46 100644
--- a/src/mpi/romio/adio/ad_bg/ad_bg_pset.h
+++ b/src/mpi/romio/adio/ad_bg/ad_bg_pset.h
@@ -51,12 +51,6 @@ typedef struct {
#define MIN(a,b) ((a<b ? a : b))
-/* Default is to choose 8 aggregator nodes in each 32 CN pset.
- Also defines default ratio of aggregator nodes in each a pset.
- For Virtual Node Mode, the ratio is 8/64 */
-#define ADIOI_BG_NAGG_PSET_MIN 1
-#define ADIOI_BG_NAGG_PSET_DFLT 8
-#define ADIOI_BG_PSET_SIZE_DFLT 32
/* public funcs for ADIOI_BG_ProcInfo_t objects */
diff --git a/src/mpi/romio/adio/ad_bg/ad_bg_tuning.c b/src/mpi/romio/adio/ad_bg/ad_bg_tuning.c
index ec670c4..632bacd 100644
--- a/src/mpi/romio/adio/ad_bg/ad_bg_tuning.c
+++ b/src/mpi/romio/adio/ad_bg/ad_bg_tuning.c
@@ -33,6 +33,7 @@ int bgmpio_comm;
int bgmpio_tunegather;
int bgmpio_tuneblocking;
long bglocklessmpio_f_type;
+int bgmpio_bg_nagg_pset;
double bgmpio_prof_cw [BGMPIO_CIO_LAST];
double bgmpio_prof_cr [BGMPIO_CIO_LAST];
@@ -80,6 +81,11 @@ double bgmpio_prof_cr [BGMPIO_CIO_LAST];
* statfs() field f_type.
* - The default is 0x20030528 (PVFS2_SUPER_MAGIC)
*
+ * - BGMPIO_NAGG_PSET - Specify a ratio of "I/O aggregators" to use for each
+ * compute group (compute nodes + i/o nodes). Possible values:
+ * - any integer
+ * - Default is 8
+ *
*/
void ad_bg_get_env_vars() {
char *x, *dummy;
@@ -104,6 +110,12 @@ void ad_bg_get_env_vars() {
if (x) bglocklessmpio_f_type = strtol(x,&dummy,0);
DBG_FPRINTF(stderr,"BGLOCKLESSMPIO_F_TYPE=%ld/%#lX\n",
bglocklessmpio_f_type,bglocklessmpio_f_type);
+ /* note: this value will be 'sanity checked' in ADIOI_BG_persInfo_init(),
+ * when we know a bit more about what "largest possible value" and
+ * "smallest possible value" should be */
+ bgmpio_bg_nagg_pset = ADIOI_BG_NAGG_PSET_DFLT;
+ x = getenv("BGMPIO_NAGG_PSET");
+ if (x) bgmpio_bg_nagg_pset = atoi(x);
}
/* report timing breakdown for MPI I/O collective call */
diff --git a/src/mpi/romio/adio/ad_bg/ad_bg_tuning.h b/src/mpi/romio/adio/ad_bg/ad_bg_tuning.h
index e8e90ee..98cca71 100644
--- a/src/mpi/romio/adio/ad_bg/ad_bg_tuning.h
+++ b/src/mpi/romio/adio/ad_bg/ad_bg_tuning.h
@@ -62,6 +62,19 @@ extern int bgmpio_tunegather;
extern int bgmpio_tuneblocking;
extern long bglocklessmpio_f_type;
+/* Default is, well, kind of complicated. Blue Gene /L and /P had "psets": one
+ * i/o node and all compute nodes wired to it. On Blue Gene /Q that
+ * relationship is a lot more fluid. There are still I/O nodes, and compute
+ * nodes are assigned to an i/o node, but there are two routes to the i/o node,
+ * via compute nodes designated as "bridge nodes". In this code, what we used
+ * to call a "pset" is actually "compute nodes associated with and including a
+ * bridge node". So, "nAgg" is roughly "number of aggregators per bridge", but
+ * look closely at ADIOI_BG_persInfo_init() for the details */
+
+#define ADIOI_BG_NAGG_PSET_DFLT 64
+
+extern int bgmpio_bg_nagg_pset;
+
/* set internal variables for tuning environment variables */
void ad_bg_get_env_vars();
-----------------------------------------------------------------------
Summary of changes:
src/mpi/romio/adio/ad_bg/ad_bg_hints.c | 1 +
src/mpi/romio/adio/ad_bg/ad_bg_pset.c | 2 +-
src/mpi/romio/adio/ad_bg/ad_bg_pset.h | 6 ------
src/mpi/romio/adio/ad_bg/ad_bg_tuning.c | 12 ++++++++++++
src/mpi/romio/adio/ad_bg/ad_bg_tuning.h | 13 +++++++++++++
5 files changed, 27 insertions(+), 7 deletions(-)
hooks/post-receive
--
MPICH primary repository
More information about the commits
mailing list