[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.0.2-76-ge04dd4b

mysql vizuser noreply at mpich.org
Fri Mar 15 15:50:56 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  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/e04dd4b64ff618f2df58789265b741a8e9fab081

commit e04dd4b64ff618f2df58789265b741a8e9fab081
Author: Pavan Balaji <balaji at mcs.anl.gov>
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


More information about the commits mailing list