[mpich] MPICH primary repository branch, master, updated. v3.0.2-76-ge04dd4b
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 e04dd4b64ff618f2df58789265b741a8e9fab081 (commit) from 4b6df5cd56f9044a03f8ed421b7e8e293ffac286 (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/e04dd4b64ff618f2df58789265b741a8e9... commit e04dd4b64ff618f2df58789265b741a8e9fab081 Author: Pavan Balaji <[email protected]> Date: Tue Mar 12 11:02:07 2013 -0500 Bug-fix: correct MPIR_proctable setup when we use wraparound ranks. As reported by John DelSignore @ Roguewave, when we wraparound ranks among nodes, we were not allocating the MPIR_proctable structure in rank order. We were always grouping them per node. Reviewed by dinan. diff --git a/src/pm/hydra/tools/debugger/debugger.c b/src/pm/hydra/tools/debugger/debugger.c index 3637343..b5449dd 100644 --- a/src/pm/hydra/tools/debugger/debugger.c +++ b/src/pm/hydra/tools/debugger/debugger.c @@ -28,7 +28,7 @@ HYD_status HYDT_dbg_setup_procdesc(struct HYD_pg * pg) { struct HYD_proxy *proxy; struct HYD_exec *exec; - int i, j, np; + int i, j, k, np, round; HYD_status status = HYD_SUCCESS; HYDU_FUNC_ENTER(); @@ -36,10 +36,27 @@ HYD_status HYDT_dbg_setup_procdesc(struct HYD_pg * pg) HYDU_MALLOC(MPIR_proctable, struct MPIR_PROCDESC *, pg->pg_process_count * sizeof(struct MPIR_PROCDESC), status); - for (proxy = pg->proxy_list, i = 0; proxy; proxy = proxy->next) { + round = 0; + /* We need to allocate the MPIR_proctable in COMM_WORLD rank + * order. We do this in multiple rounds. In each round, we + * allocate the proctable entries for the executables on the proxy + * that form a contiguous rank list. Then we move to the next + * proxy. When we run out of proxies, we go back to the first + * proxy and find the next set of contiguous ranks on that + * proxy. */ + for (proxy = pg->proxy_list, i = 0;; proxy = proxy->next) { j = 0; + k = 0; + if (!proxy) { + proxy = pg->proxy_list; + round++; + } for (exec = proxy->exec_list; exec; exec = exec->next) { for (np = 0; np < exec->proc_count; np++) { + if (k + np >= ((round + 1) * proxy->node->core_count)) + break; + if (k + np < round * proxy->node->core_count) + continue; MPIR_proctable[i].host_name = HYDU_strdup(proxy->node->hostname); MPIR_proctable[i].pid = proxy->pid[j++]; if (exec->exec[0]) @@ -48,7 +65,11 @@ HYD_status HYDT_dbg_setup_procdesc(struct HYD_pg * pg) MPIR_proctable[i].executable_name = NULL; i++; } + k += exec->proc_count; } + + if (i >= pg->pg_process_count) + break; } MPIR_proctable_size = pg->pg_process_count; ----------------------------------------------------------------------- Summary of changes: src/pm/hydra/tools/debugger/debugger.c | 25 +++++++++++++++++++++++-- 1 files changed, 23 insertions(+), 2 deletions(-) hooks/post-receive -- MPICH primary repository
participants (1)
-
noreply@mpich.org