[mpich2-commits] r7904 - mpich2/trunk/src/pm/hydra/pm/pmiserv

balaji at mcs.anl.gov balaji at mcs.anl.gov
Thu Feb 3 17:58:00 CST 2011


Author: balaji
Date: 2011-02-03 17:58:00 -0600 (Thu, 03 Feb 2011)
New Revision: 7904

Modified:
   mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
Log:
Revert the part of the code which was searching for similar host names
in an irregularly distributed host file.

1. This is not a correctness requirement. This only improves
performance in some cases by allowing MPI to use shared memory
optimizations.

2. The "performance loss" only happens when the user provides an
irregular host file. AFAICT, no resource manager provides such lists.

Modified: mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_utils.c	2011-02-03 23:57:55 UTC (rev 7903)
+++ mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_utils.c	2011-02-03 23:58:00 UTC (rev 7904)
@@ -105,7 +105,7 @@
 {
     int i, is_equal;
     char *tmp[HYD_NUM_TMP_STRINGS];
-    struct HYD_proxy *proxy, *tproxy;
+    struct HYD_proxy *proxy;
     struct block {
         int start_idx;
         int num_blocks;
@@ -141,36 +141,25 @@
 
             blocklist_tail = blocklist_head = block;
         }
+        else if (blocklist_tail->start_idx + blocklist_tail->num_blocks == proxy->proxy_id &&
+                 blocklist_tail->block_size == proxy->node.core_count) {
+            blocklist_tail->num_blocks++;
+        }
+        else if (blocklist_tail->start_idx == proxy->proxy_id &&
+                 blocklist_tail->num_blocks == 1) {
+            blocklist_tail->block_size += proxy->node.core_count;
+        }
         else {
-            /* Check if this proxy hostname existed earlier */
-            for (tproxy = pg->proxy_list; tproxy; tproxy = tproxy->next) {
-                if (!strcmp(proxy->node.hostname, tproxy->node.hostname))
-                    break;
-            }
-
-            if (blocklist_tail->start_idx + blocklist_tail->num_blocks == tproxy->proxy_id &&
-                blocklist_tail->block_size == proxy->node.core_count) {
-                    blocklist_tail->num_blocks++;
-            }
-            else if (blocklist_tail->start_idx == tproxy->proxy_id &&
-                     blocklist_tail->num_blocks == 1) {
-                blocklist_tail->block_size += proxy->node.core_count;
-            }
-            else {
-                HYDU_MALLOC(blocklist_tail->next, struct block *, sizeof(struct block),
-                            status);
-                blocklist_tail = blocklist_tail->next;
-                blocklist_tail->start_idx = tproxy ? tproxy->proxy_id : proxy->proxy_id;
-                blocklist_tail->num_blocks = 1;
-                blocklist_tail->block_size = proxy->node.core_count;
-                blocklist_tail->next = NULL;
-            }
+            HYDU_MALLOC(blocklist_tail->next, struct block *, sizeof(struct block), status);
+            blocklist_tail = blocklist_tail->next;
+            blocklist_tail->start_idx = proxy->proxy_id;
+            blocklist_tail->num_blocks = 1;
+            blocklist_tail->block_size = proxy->node.core_count;
+            blocklist_tail->next = NULL;
         }
     }
 
-    /* See if there are any extra merging opportunities */
-
-    /* Case 1: If all the blocks are equivalent, just use one block */
+    /* If all the blocks are equivalent, just use one block */
     is_equal = 1;
     for (block = blocklist_head; block->next; block = block->next) {
         if (block->start_idx != block->next->start_idx ||



More information about the mpich2-commits mailing list