commits
Threads by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- 2054 discussions
[mpich] MPICH primary repository branch, master, updated. v3.0.3-23-g78c3481
by noreply@mpich.org 19 Apr '13
by noreply@mpich.org 19 Apr '13
19 Apr '13
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 78c3481d24cf9639b7de59a006e22aae86760ac0 (commit)
from b98c7fd361541659d7e8fb6ef7fc76547024ad75 (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/78c3481d24cf9639b7de59a006e22aae8…
commit 78c3481d24cf9639b7de59a006e22aae86760ac0
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Fri Apr 19 11:14:34 2013 -0500
Cleanup memory allocation for the keyvals being forwarded to the
proxies, so we don't do the allocation for each proxy -- it's the same
data sent to all proxies.
No reviewer.
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
index a66a306..e08d425 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
@@ -50,7 +50,7 @@ static HYD_status fn_barrier_in(int fd, int pid, int pgid, char *args[])
struct HYD_pmcd_pmi_pg_scratch *pg_scratch;
int proxy_count, keyval_count, i, arg_count;
struct HYD_pmcd_pmi_kvs_pair *run;
- char **tmp, *cmd;
+ char **tmp = NULL, *cmd;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -67,53 +67,61 @@ static HYD_status fn_barrier_in(int fd, int pid, int pgid, char *args[])
if (proxy->pg->barrier_count == proxy_count) {
proxy->pg->barrier_count = 0;
- for (tproxy = proxy->pg->proxy_list; tproxy; tproxy = tproxy->next) {
- /* send all available keyvals downstream */
- keyval_count = 0;
- for (run = pg_scratch->kvs->key_pair; run; run = run->next)
- keyval_count++;
-
- if (keyval_count) {
- HYDU_MALLOC(tmp, char **, (4 * keyval_count + 2) * sizeof(char *), status);
-
- arg_count = 1;
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=keyval_cache ");
- for (run = pg_scratch->kvs->key_pair; run; run = run->next) {
- tmp[i++] = HYDU_strdup(run->key);
- tmp[i++] = HYDU_strdup("=");
- tmp[i++] = HYDU_strdup(run->val);
- tmp[i++] = HYDU_strdup(" ");
-
- arg_count++;
- if (arg_count >= MAX_PMI_INTERNAL_ARGS) {
- tmp[i++] = NULL;
-
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
+ /* find the number of keyvals */
+ keyval_count = 0;
+ for (run = pg_scratch->kvs->key_pair; run; run = run->next)
+ keyval_count++;
- status = cmd_response(tproxy->control_fd, pid, cmd);
- HYDU_ERR_POP(status, "error writing PMI line\n");
- HYDU_FREE(cmd);
+ /* Each keyval has the following four items: 'key' '=' 'val'
+ * '<space>'. Two additional items for the command at the
+ * start and the NULL at the end. */
+ HYDU_MALLOC(tmp, char **, (4 * keyval_count + 2) * sizeof(char *), status);
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=keyval_cache ");
- }
- }
- tmp[i++] = NULL;
+ /* send all available keyvals downstream */
+ if (keyval_count) {
+ arg_count = 1;
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=keyval_cache ");
+ for (run = pg_scratch->kvs->key_pair; run; run = run->next) {
+ tmp[i++] = HYDU_strdup(run->key);
+ tmp[i++] = HYDU_strdup("=");
+ tmp[i++] = HYDU_strdup(run->val);
+ tmp[i++] = HYDU_strdup(" ");
+
+ arg_count++;
+ if (arg_count >= MAX_PMI_INTERNAL_ARGS) {
+ tmp[i++] = NULL;
- if (arg_count > 1) {
status = HYDU_str_alloc_and_join(tmp, &cmd);
HYDU_ERR_POP(status, "unable to join strings\n");
HYDU_free_strlist(tmp);
+ for (tproxy = proxy->pg->proxy_list; tproxy; tproxy = tproxy->next) {
+ status = cmd_response(tproxy->control_fd, pid, cmd);
+ HYDU_ERR_POP(status, "error writing PMI line\n");
+ }
+ HYDU_FREE(cmd);
+
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=keyval_cache ");
+ }
+ }
+ tmp[i++] = NULL;
+
+ if (arg_count > 1) {
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
+
+ for (tproxy = proxy->pg->proxy_list; tproxy; tproxy = tproxy->next) {
status = cmd_response(tproxy->control_fd, pid, cmd);
HYDU_ERR_POP(status, "error writing PMI line\n");
- HYDU_FREE(cmd);
}
+ HYDU_FREE(cmd);
}
+ }
+ for (tproxy = proxy->pg->proxy_list; tproxy; tproxy = tproxy->next) {
/* complete barrier */
status = cmd_response(tproxy->control_fd, pid, "cmd=barrier_out\n");
HYDU_ERR_POP(status, "error writing PMI line\n");
@@ -121,6 +129,8 @@ static HYD_status fn_barrier_in(int fd, int pid, int pgid, char *args[])
}
fn_exit:
+ if (tmp)
+ HYDU_FREE(tmp);
HYDU_FUNC_EXIT();
return status;
-----------------------------------------------------------------------
Summary of changes:
src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c | 82 +++++++++++++++++-------------
1 files changed, 46 insertions(+), 36 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.3-22-gb98c7fd
by noreply@mpich.org 18 Apr '13
by noreply@mpich.org 18 Apr '13
18 Apr '13
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 b98c7fd361541659d7e8fb6ef7fc76547024ad75 (commit)
via 30d28c6214cf8e94838e2a726f399e568428c8a4 (commit)
from 89fb23ebb2ae5af69d75fb75e590c4c57e81d238 (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/b98c7fd361541659d7e8fb6ef7fc76547…
commit b98c7fd361541659d7e8fb6ef7fc76547024ad75
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Thu Apr 18 20:29:52 2013 -0500
Added ability to allgather codes to all the proxies during a PMI
barrier. This allows all gets of the keys to occur locally without
having to communicate with the mpiexec process.
Also, got rid of unscalable parsing code as well as incorrect tmp
length usage without checking for how many arguments were actually
passed between the proxy and mpiexec.
No reviewer.
diff --git a/src/pm/hydra/pm/pmiserv/common.c b/src/pm/hydra/pm/pmiserv/common.c
index 20dc433..d8f70ac 100644
--- a/src/pm/hydra/pm/pmiserv/common.c
+++ b/src/pm/hydra/pm/pmiserv/common.c
@@ -23,11 +23,9 @@ void HYD_pmcd_init_header(struct HYD_pmcd_hdr *hdr)
HYD_status HYD_pmcd_pmi_parse_pmi_cmd(char *obuf, int pmi_version, char **pmi_cmd,
char *args[])
{
- char *tbuf = NULL, *seg, *str1 = NULL, *cmd;
- char *buf;
- char *tmp[HYD_NUM_TMP_STRINGS], *targs[HYD_NUM_TMP_STRINGS];
+ char *str1 = NULL, *cmd, *buf;
const char *delim;
- int i, j, k;
+ int i;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -42,70 +40,17 @@ HYD_status HYD_pmcd_pmi_parse_pmi_cmd(char *obuf, int pmi_version, char **pmi_cm
delim = " ";
else
delim = "\n";
-
- /* Here we only get PMI-1 commands or backward compatible
- * PMI-2 commands, so we always explicitly use the PMI-1
- * delimiter. This allows us to get backward-compatible PMI-2
- * commands interleaved with regular PMI-2 commands. */
- tbuf = HYDU_strdup(buf);
- cmd = strtok(tbuf, delim);
- for (i = 0; i < HYD_NUM_TMP_STRINGS; i++) {
- targs[i] = strtok(NULL, delim);
- if (targs[i] == NULL)
- break;
- }
-
- /* Make a pass through targs and merge space separated
- * arguments which are actually part of the same key */
- k = 0;
- for (i = 0; targs[i]; i++) {
- if (!strrchr(targs[i], ' ')) {
- /* no spaces */
- args[k++] = HYDU_strdup(targs[i]);
- }
- else {
- /* space in the argument; each segment is either a new
- * key, or a space-separated part of the previous
- * key */
- j = 0;
- seg = strtok(targs[i], " ");
- while (1) {
- if (!seg || strrchr(seg, '=')) {
- /* segment has an '='; it's a start of a new key */
- if (j) {
- tmp[j++] = NULL;
- status = HYDU_str_alloc_and_join(tmp, &args[k++]);
- HYDU_ERR_POP(status, "error while joining strings\n");
- HYDU_free_strlist(tmp);
- }
- j = 0;
-
- if (!seg)
- break;
- }
- else {
- /* no '='; part of the previous key */
- tmp[j++] = HYDU_strdup(" ");
- }
- tmp[j++] = HYDU_strdup(seg);
-
- seg = strtok(NULL, " ");
- }
- }
- }
- args[k++] = NULL;
}
else { /* PMI-v2 */
delim = ";";
+ }
- tbuf = HYDU_strdup(buf);
- cmd = strtok(tbuf, delim);
- for (i = 0; i < HYD_NUM_TMP_STRINGS; i++) {
- args[i] = strtok(NULL, delim);
- if (args[i] == NULL)
- break;
- args[i] = HYDU_strdup(args[i]);
- }
+ cmd = strtok(buf, delim);
+ for (i = 0;; i++) {
+ args[i] = strtok(NULL, delim);
+ if (args[i] == NULL)
+ break;
+ args[i] = HYDU_strdup(args[i]);
}
/* Search for the PMI command in our table */
@@ -114,8 +59,6 @@ HYD_status HYD_pmcd_pmi_parse_pmi_cmd(char *obuf, int pmi_version, char **pmi_cm
fn_exit:
HYDU_FREE(buf);
- if (tbuf)
- HYDU_FREE(tbuf);
if (str1)
HYDU_FREE(str1);
HYDU_FUNC_EXIT();
diff --git a/src/pm/hydra/pm/pmiserv/common.h b/src/pm/hydra/pm/pmiserv/common.h
index ad1c784..53e4eb8 100644
--- a/src/pm/hydra/pm/pmiserv/common.h
+++ b/src/pm/hydra/pm/pmiserv/common.h
@@ -14,6 +14,9 @@
#define PMI_MAXVALLEN (1024) /* max length of value in keyval space */
#define PMI_MAXKVSLEN (256) /* max length of various names */
+#define MAX_PMI_ARGS (1024) /* number of arguments in a PMI command */
+#define MAX_PMI_INTERNAL_ARGS (65536) /* number of arguments in internal communication */
+
struct HYD_pmcd_pmi_kvs_pair {
char key[PMI_MAXKEYLEN];
char val[PMI_MAXVALLEN];
diff --git a/src/pm/hydra/pm/pmiserv/pmip_cb.c b/src/pm/hydra/pm/pmiserv/pmip_cb.c
index 9705926..8b6710d 100644
--- a/src/pm/hydra/pm/pmiserv/pmip_cb.c
+++ b/src/pm/hydra/pm/pmiserv/pmip_cb.c
@@ -208,7 +208,7 @@ static HYD_status check_pmi_cmd(char **buf, int *pmi_version, int *repeat)
static HYD_status pmi_cb(int fd, HYD_event_t events, void *userp)
{
- char *buf = NULL, *pmi_cmd = NULL, *args[HYD_NUM_TMP_STRINGS] = { 0 };
+ char *buf = NULL, *pmi_cmd = NULL, *args[MAX_PMI_ARGS] = { 0 };
int closed, repeat, sent, i = -1, linelen, pid = -1;
struct HYD_pmcd_hdr hdr;
struct HYD_pmcd_pmip_pmi_handle *h;
@@ -369,7 +369,7 @@ static HYD_status pmi_cb(int fd, HYD_event_t events, void *userp)
static HYD_status handle_pmi_response(int fd, struct HYD_pmcd_hdr hdr)
{
int count, closed, sent;
- char *buf = NULL, *pmi_cmd = NULL, *args[HYD_NUM_TMP_STRINGS] = { 0 };
+ char *buf = NULL, *pmi_cmd = NULL, *args[MAX_PMI_INTERNAL_ARGS] = { 0 };
struct HYD_pmcd_pmip_pmi_handle *h;
HYD_status status = HYD_SUCCESS;
diff --git a/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c b/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
index 8c90936..bfd79a1 100644
--- a/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
+++ b/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
@@ -11,15 +11,36 @@
#include "topo.h"
#include "hydt_ftb.h"
-static HYD_status send_cmd_upstream(const char *start, int fd, char *args[])
+#define debug(...) \
+ { \
+ if (HYD_pmcd_pmip.user_global.debug) \
+ HYDU_dump(stdout, __VA_ARGS__); \
+ }
+
+#define CACHE_PUT_KEYVAL_MAXLEN (65536)
+
+static struct {
+ char *keyval[CACHE_PUT_KEYVAL_MAXLEN + 1];
+ int keyval_len;
+} cache_put;
+
+static struct {
+ char **key;
+ char **val;
+ int keyval_len;
+} cache_get;
+
+static HYD_status send_cmd_upstream(const char *start, int fd, int num_args, char *args[])
{
int i, j, sent, closed;
- char *tmp[HYD_NUM_TMP_STRINGS], *buf;
+ char **tmp, *buf;
struct HYD_pmcd_hdr hdr;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
+ HYDU_MALLOC(tmp, char **, (2 * num_args + 1) * sizeof(char *), status);
+
j = 0;
tmp[j++] = HYDU_strdup(start);
for (i = 0; args[i]; i++) {
@@ -44,9 +65,7 @@ static HYD_status send_cmd_upstream(const char *start, int fd, char *args[])
HYDU_ERR_POP(status, "unable to send PMI header upstream\n");
HYDU_ASSERT(!closed, status);
- if (HYD_pmcd_pmip.user_global.debug) {
- HYDU_dump(stdout, "forwarding command (%s) upstream\n", buf);
- }
+ debug("forwarding command (%s) upstream\n", buf);
status = HYDU_sock_write(HYD_pmcd_pmip.upstream.control, buf, hdr.buflen, &sent, &closed,
HYDU_SOCK_COMM_MSGWAIT);
@@ -70,9 +89,7 @@ static HYD_status send_cmd_downstream(int fd, const char *cmd)
HYDU_FUNC_ENTER();
- if (HYD_pmcd_pmip.user_global.debug) {
- HYDU_dump(stdout, "PMI response: %s", cmd);
- }
+ debug("PMI response: %s", cmd);
status = HYDU_sock_write(fd, cmd, strlen(cmd), &sent, &closed, HYDU_SOCK_COMM_MSGWAIT);
HYDU_ERR_POP(status, "error writing PMI line\n");
@@ -89,10 +106,38 @@ static HYD_status send_cmd_downstream(int fd, const char *cmd)
goto fn_exit;
}
+static HYD_status cache_put_flush(int fd)
+{
+ int i;
+ HYD_status status = HYD_SUCCESS;
+
+ HYDU_FUNC_ENTER();
+
+ if (cache_put.keyval_len == 0)
+ goto fn_exit;
+
+ debug("flushing %d put command(s) out\n", cache_put.keyval_len);
+
+ status = send_cmd_upstream("cmd=put ", fd, cache_put.keyval_len, cache_put.keyval);
+ HYDU_ERR_POP(status, "error sending command upstream\n");
+
+ for (i = 0; i < cache_put.keyval_len; i++)
+ HYDU_FREE(cache_put.keyval[i]);
+ cache_put.keyval_len = 0;
+
+ fn_exit:
+ HYDU_FUNC_EXIT();
+ return status;
+
+ fn_fail:
+ goto fn_exit;
+}
+
static HYD_status fn_init(int fd, char *args[])
{
- int pmi_version, pmi_subversion;
+ int pmi_version, pmi_subversion, i;
const char *tmp;
+ static int global_init = 1;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -114,6 +159,16 @@ static HYD_status fn_init(int fd, char *args[])
HYDU_ERR_POP(status, "error sending PMI response\n");
HYDU_FREE(tmp);
+ /* initialize some structures; these are initialized exactly once,
+ * even if the init command is sent once from each process. */
+ if (global_init) {
+ for (i = 0; i < CACHE_PUT_KEYVAL_MAXLEN + 1; i++)
+ cache_put.keyval[i] = NULL;
+ cache_put.keyval_len = 0;
+ cache_get.keyval_len = 0;
+ global_init = 0;
+ }
+
fn_exit:
HYDU_FUNC_EXIT();
return status;
@@ -327,7 +382,7 @@ static HYD_status fn_get_usize(int fd, char *args[])
static HYD_status fn_get(int fd, char *args[])
{
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *key;
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd, *key, *val;
struct HYD_pmcd_token *tokens;
int token_count, i;
HYD_status status = HYD_SUCCESS;
@@ -357,8 +412,114 @@ static HYD_status fn_get(int fd, char *args[])
HYDU_FREE(cmd);
}
else {
- status = send_cmd_upstream("cmd=get ", fd, args);
- HYDU_ERR_POP(status, "error sending command upstream\n");
+ val = NULL;
+ for (i = 0; i < cache_get.keyval_len; i++) {
+ if (!strcmp(cache_get.key[i], key)) {
+ val = cache_get.val[i];
+ break;
+ }
+ }
+
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=get_result rc=");
+ if (val) {
+ tmp[i++] = HYDU_strdup("0 msg=success value=");
+ tmp[i++] = HYDU_strdup(val);
+ }
+ else {
+ tmp[i++] = HYDU_strdup("-1 msg=key_");
+ tmp[i++] = HYDU_strdup(key);
+ tmp[i++] = HYDU_strdup("_not_found value=unknown");
+ }
+ tmp[i++] = HYDU_strdup("\n");
+ tmp[i++] = NULL;
+
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
+
+ status = send_cmd_downstream(fd, cmd);
+ HYDU_ERR_POP(status, "error sending command downstream\n");
+ HYDU_FREE(cmd);
+ }
+
+ fn_exit:
+ HYD_pmcd_pmi_free_tokens(tokens, token_count);
+ HYDU_FUNC_EXIT();
+ return status;
+
+ fn_fail:
+ goto fn_exit;
+}
+
+static HYD_status fn_put(int fd, char *args[])
+{
+ char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
+ char *key, *val;
+ struct HYD_pmcd_token *tokens;
+ int token_count, i;
+ HYD_status status = HYD_SUCCESS;
+
+ HYDU_FUNC_ENTER();
+
+ status = HYD_pmcd_pmi_args_to_tokens(args, &tokens, &token_count);
+ HYDU_ERR_POP(status, "unable to convert args to tokens\n");
+
+ key = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "key");
+ HYDU_ERR_CHKANDJUMP(status, key == NULL, HYD_INTERNAL_ERROR,
+ "unable to find token: key\n");
+
+ val = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "value");
+ if (val == NULL)
+ val = HYDU_strdup("");
+
+ /* add to the cache */
+ i = 0;
+ tmp[i++] = HYDU_strdup(key);
+ tmp[i++] = HYDU_strdup("=");
+ tmp[i++] = HYDU_strdup(val);
+ tmp[i++] = NULL;
+
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
+
+ cache_put.keyval[cache_put.keyval_len++] = cmd;
+ debug("cached command: %s\n", cmd);
+
+ if (cache_put.keyval_len >= CACHE_PUT_KEYVAL_MAXLEN)
+ cache_put_flush(fd);
+
+ status = send_cmd_downstream(fd, "cmd=put_result rc=0 msg=success\n");
+ HYDU_ERR_POP(status, "error sending PMI response\n");
+
+ fn_exit:
+ HYD_pmcd_pmi_free_tokens(tokens, token_count);
+ HYDU_FUNC_EXIT();
+ return status;
+
+ fn_fail:
+ goto fn_exit;
+}
+
+static HYD_status fn_keyval_cache(int fd, char *args[])
+{
+ struct HYD_pmcd_token *tokens;
+ int token_count, i;
+ HYD_status status = HYD_SUCCESS;
+
+ HYDU_FUNC_ENTER();
+
+ status = HYD_pmcd_pmi_args_to_tokens(args, &tokens, &token_count);
+ HYDU_ERR_POP(status, "unable to convert args to tokens\n");
+
+ cache_get.keyval_len = token_count;
+ HYDU_MALLOC(cache_get.key, char **, cache_get.keyval_len * sizeof(char *), status);
+ HYDU_MALLOC(cache_get.val, char **, cache_get.keyval_len * sizeof(char *), status);
+
+ for (i = 0; i < token_count; i++) {
+ cache_get.key[i] = HYDU_strdup(tokens[i].key);
+ cache_get.val[i] = HYDU_strdup(tokens[i].val);
}
fn_exit:
@@ -381,7 +542,9 @@ static HYD_status fn_barrier_in(int fd, char *args[])
if (barrier_count == HYD_pmcd_pmip.local.proxy_process_count) {
barrier_count = 0;
- status = send_cmd_upstream("cmd=barrier_in", fd, args);
+ cache_put_flush(fd);
+
+ status = send_cmd_upstream("cmd=barrier_in", fd, 0, args);
HYDU_ERR_POP(status, "error sending command upstream\n");
}
@@ -451,6 +614,8 @@ static struct HYD_pmcd_pmip_pmi_handle pmi_v1_handle_fns_foo[] = {
{"get_my_kvsname", fn_get_my_kvsname},
{"get_universe_size", fn_get_usize},
{"get", fn_get},
+ {"put", fn_put},
+ {"keyval_cache", fn_keyval_cache},
{"barrier_in", fn_barrier_in},
{"barrier_out", fn_barrier_out},
{"finalize", fn_finalize},
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_cb.c b/src/pm/hydra/pm/pmiserv/pmiserv_cb.c
index 3aa05e3..0328f28 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_cb.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_cb.c
@@ -15,7 +15,7 @@
static HYD_status handle_pmi_cmd(int fd, int pgid, int pid, char *buf, int pmi_version)
{
- char *args[HYD_NUM_TMP_STRINGS], *cmd = NULL;
+ char *args[MAX_PMI_ARGS], *cmd = NULL;
struct HYD_pmcd_pmi_handle *h;
HYD_status status = HYD_SUCCESS;
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
index 47b28ba..a66a306 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
@@ -47,14 +47,17 @@ static HYD_status cmd_response(int fd, int pid, const char *cmd)
static HYD_status fn_barrier_in(int fd, int pid, int pgid, char *args[])
{
struct HYD_proxy *proxy, *tproxy;
- const char *cmd;
- int proxy_count;
+ struct HYD_pmcd_pmi_pg_scratch *pg_scratch;
+ int proxy_count, keyval_count, i, arg_count;
+ struct HYD_pmcd_pmi_kvs_pair *run;
+ char **tmp, *cmd;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
proxy = HYD_pmcd_pmi_find_proxy(fd);
HYDU_ASSERT(proxy, status);
+ pg_scratch = (struct HYD_pmcd_pmi_pg_scratch *) proxy->pg->pg_scratch;
proxy_count = 0;
for (tproxy = proxy->pg->proxy_list; tproxy; tproxy = tproxy->next)
@@ -63,88 +66,61 @@ static HYD_status fn_barrier_in(int fd, int pid, int pgid, char *args[])
proxy->pg->barrier_count++;
if (proxy->pg->barrier_count == proxy_count) {
proxy->pg->barrier_count = 0;
- cmd = "cmd=barrier_out\n";
for (tproxy = proxy->pg->proxy_list; tproxy; tproxy = tproxy->next) {
- status = cmd_response(tproxy->control_fd, pid, cmd);
- HYDU_ERR_POP(status, "error writing PMI line\n");
- }
- }
-
- fn_exit:
- HYDU_FUNC_EXIT();
- return status;
-
- fn_fail:
- goto fn_exit;
-}
-
-static HYD_status fn_put(int fd, int pid, int pgid, char *args[])
-{
- int i, ret;
- struct HYD_proxy *proxy;
- struct HYD_pmcd_pmi_pg_scratch *pg_scratch;
- char *kvsname, *key, *val;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
- struct HYD_pmcd_token *tokens;
- int token_count;
- HYD_status status = HYD_SUCCESS;
-
- HYDU_FUNC_ENTER();
-
- status = HYD_pmcd_pmi_args_to_tokens(args, &tokens, &token_count);
- HYDU_ERR_POP(status, "unable to convert args to tokens\n");
-
- kvsname = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "kvsname");
- HYDU_ERR_CHKANDJUMP(status, kvsname == NULL, HYD_INTERNAL_ERROR,
- "unable to find token: kvsname\n");
-
- key = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "key");
- HYDU_ERR_CHKANDJUMP(status, key == NULL, HYD_INTERNAL_ERROR,
- "unable to find token: key\n");
-
- val = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "value");
- if (val == NULL) {
- /* the user sent an empty string */
- val = HYDU_strdup("");
- }
-
- proxy = HYD_pmcd_pmi_find_proxy(fd);
- HYDU_ASSERT(proxy, status);
-
- pg_scratch = (struct HYD_pmcd_pmi_pg_scratch *) proxy->pg->pg_scratch;
+ /* send all available keyvals downstream */
+ keyval_count = 0;
+ for (run = pg_scratch->kvs->key_pair; run; run = run->next)
+ keyval_count++;
+
+ if (keyval_count) {
+ HYDU_MALLOC(tmp, char **, (4 * keyval_count + 2) * sizeof(char *), status);
+
+ arg_count = 1;
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=keyval_cache ");
+ for (run = pg_scratch->kvs->key_pair; run; run = run->next) {
+ tmp[i++] = HYDU_strdup(run->key);
+ tmp[i++] = HYDU_strdup("=");
+ tmp[i++] = HYDU_strdup(run->val);
+ tmp[i++] = HYDU_strdup(" ");
+
+ arg_count++;
+ if (arg_count >= MAX_PMI_INTERNAL_ARGS) {
+ tmp[i++] = NULL;
+
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
+
+ status = cmd_response(tproxy->control_fd, pid, cmd);
+ HYDU_ERR_POP(status, "error writing PMI line\n");
+ HYDU_FREE(cmd);
+
+ i = 0;
+ tmp[i++] = HYDU_strdup("cmd=keyval_cache ");
+ }
+ }
+ tmp[i++] = NULL;
- if (strcmp(pg_scratch->kvs->kvsname, kvsname))
- HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
- "kvsname (%s) does not match this group's kvs space (%s)\n",
- kvsname, pg_scratch->kvs->kvsname);
+ if (arg_count > 1) {
+ status = HYDU_str_alloc_and_join(tmp, &cmd);
+ HYDU_ERR_POP(status, "unable to join strings\n");
+ HYDU_free_strlist(tmp);
- status = HYD_pmcd_pmi_add_kvs(key, val, pg_scratch->kvs, &ret);
- HYDU_ERR_POP(status, "unable to add keypair to kvs\n");
+ status = cmd_response(tproxy->control_fd, pid, cmd);
+ HYDU_ERR_POP(status, "error writing PMI line\n");
+ HYDU_FREE(cmd);
+ }
+ }
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=put_result rc=");
- tmp[i++] = HYDU_int_to_str(ret);
- if (ret == 0) {
- tmp[i++] = HYDU_strdup(" msg=success");
- }
- else {
- tmp[i++] = HYDU_strdup(" msg=duplicate_key");
- tmp[i++] = HYDU_strdup(key);
+ /* complete barrier */
+ status = cmd_response(tproxy->control_fd, pid, "cmd=barrier_out\n");
+ HYDU_ERR_POP(status, "error writing PMI line\n");
+ }
}
- tmp[i++] = HYDU_strdup("\n");
- tmp[i++] = NULL;
-
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
-
- status = cmd_response(fd, pid, cmd);
- HYDU_ERR_POP(status, "error writing PMI line\n");
- HYDU_FREE(cmd);
fn_exit:
- HYD_pmcd_pmi_free_tokens(tokens, token_count);
HYDU_FUNC_EXIT();
return status;
@@ -152,16 +128,12 @@ static HYD_status fn_put(int fd, int pid, int pgid, char *args[])
goto fn_exit;
}
-static HYD_status fn_get(int fd, int pid, int pgid, char *args[])
+static HYD_status fn_put(int fd, int pid, int pgid, char *args[])
{
- int i;
struct HYD_proxy *proxy;
struct HYD_pmcd_pmi_pg_scratch *pg_scratch;
- struct HYD_pmcd_pmi_kvs_pair *run;
- char *kvsname, *key, *val;
- char *tmp[HYD_NUM_TMP_STRINGS], *cmd;
struct HYD_pmcd_token *tokens;
- int token_count;
+ int token_count, i, ret;
HYD_status status = HYD_SUCCESS;
HYDU_FUNC_ENTER();
@@ -169,60 +141,14 @@ static HYD_status fn_get(int fd, int pid, int pgid, char *args[])
status = HYD_pmcd_pmi_args_to_tokens(args, &tokens, &token_count);
HYDU_ERR_POP(status, "unable to convert args to tokens\n");
- kvsname = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "kvsname");
- HYDU_ERR_CHKANDJUMP(status, kvsname == NULL, HYD_INTERNAL_ERROR,
- "unable to find token: kvsname\n");
-
- key = HYD_pmcd_pmi_find_token_keyval(tokens, token_count, "key");
- HYDU_ERR_CHKANDJUMP(status, key == NULL, HYD_INTERNAL_ERROR,
- "unable to find token: key\n");
-
proxy = HYD_pmcd_pmi_find_proxy(fd);
HYDU_ASSERT(proxy, status);
-
pg_scratch = (struct HYD_pmcd_pmi_pg_scratch *) proxy->pg->pg_scratch;
- val = NULL;
- if (!strcmp(key, "PMI_dead_processes")) {
- val = pg_scratch->dead_processes;
- goto found_val;
- }
-
- if (strcmp(pg_scratch->kvs->kvsname, kvsname))
- HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
- "kvsname (%s) does not match this group's kvs space (%s)\n",
- kvsname, pg_scratch->kvs->kvsname);
-
- /* Try to find the key */
- for (run = pg_scratch->kvs->key_pair; run; run = run->next) {
- if (!strcmp(run->key, key)) {
- val = run->val;
- break;
- }
- }
-
- found_val:
- i = 0;
- tmp[i++] = HYDU_strdup("cmd=get_result rc=");
- if (val) {
- tmp[i++] = HYDU_strdup("0 msg=success value=");
- tmp[i++] = HYDU_strdup(val);
- }
- else {
- tmp[i++] = HYDU_strdup("-1 msg=key_");
- tmp[i++] = HYDU_strdup(key);
- tmp[i++] = HYDU_strdup("_not_found value=unknown");
+ for (i = 0; i < token_count; i++) {
+ status = HYD_pmcd_pmi_add_kvs(tokens[i].key, tokens[i].val, pg_scratch->kvs, &ret);
+ HYDU_ERR_POP(status, "unable to add keypair to kvs\n");
}
- tmp[i++] = HYDU_strdup("\n");
- tmp[i++] = NULL;
-
- status = HYDU_str_alloc_and_join(tmp, &cmd);
- HYDU_ERR_POP(status, "unable to join strings\n");
- HYDU_free_strlist(tmp);
-
- status = cmd_response(fd, pid, cmd);
- HYDU_ERR_POP(status, "error writing PMI line\n");
- HYDU_FREE(cmd);
fn_exit:
HYD_pmcd_pmi_free_tokens(tokens, token_count);
@@ -233,7 +159,7 @@ static HYD_status fn_get(int fd, int pid, int pgid, char *args[])
goto fn_exit;
}
-static char *mcmd_args[HYD_NUM_TMP_STRINGS] = { NULL };
+static char *mcmd_args[MAX_PMI_ARGS] = { NULL };
static int mcmd_num_args = 0;
@@ -715,7 +641,6 @@ static HYD_status fn_lookup_name(int fd, int pid, int pgid, char *args[])
static struct HYD_pmcd_pmi_handle pmi_v1_handle_fns_foo[] = {
{"barrier_in", fn_barrier_in},
{"put", fn_put},
- {"get", fn_get},
{"spawn", fn_spawn},
{"publish_name", fn_publish_name},
{"unpublish_name", fn_unpublish_name},
http://git.mpich.org/mpich.git/commitdiff/30d28c6214cf8e94838e2a726f399e568…
commit 30d28c6214cf8e94838e2a726f399e568428c8a4
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Thu Apr 18 19:47:28 2013 -0500
Make kvs_name and kvsname consistent.
No reviewer.
diff --git a/src/pm/hydra/pm/pmiserv/common.c b/src/pm/hydra/pm/pmiserv/common.c
index 1bee231..20dc433 100644
--- a/src/pm/hydra/pm/pmiserv/common.c
+++ b/src/pm/hydra/pm/pmiserv/common.c
@@ -185,7 +185,7 @@ HYD_status HYD_pmcd_pmi_allocate_kvs(struct HYD_pmcd_pmi_kvs ** kvs, int pgid)
HYDU_FUNC_ENTER();
HYDU_MALLOC(*kvs, struct HYD_pmcd_pmi_kvs *, sizeof(struct HYD_pmcd_pmi_kvs), status);
- HYDU_snprintf((*kvs)->kvs_name, PMI_MAXKVSLEN, "kvs_%d_%d", (int) getpid(), pgid);
+ HYDU_snprintf((*kvs)->kvsname, PMI_MAXKVSLEN, "kvs_%d_%d", (int) getpid(), pgid);
(*kvs)->key_pair = NULL;
fn_exit:
diff --git a/src/pm/hydra/pm/pmiserv/common.h b/src/pm/hydra/pm/pmiserv/common.h
index 492136c..ad1c784 100644
--- a/src/pm/hydra/pm/pmiserv/common.h
+++ b/src/pm/hydra/pm/pmiserv/common.h
@@ -21,7 +21,7 @@ struct HYD_pmcd_pmi_kvs_pair {
};
struct HYD_pmcd_pmi_kvs {
- char kvs_name[PMI_MAXKVSLEN]; /* Name of this kvs */
+ char kvsname[PMI_MAXKVSLEN]; /* Name of this kvs */
struct HYD_pmcd_pmi_kvs_pair *key_pair;
};
diff --git a/src/pm/hydra/pm/pmiserv/pmip.c b/src/pm/hydra/pm/pmiserv/pmip.c
index 2e6f995..047c0fd 100644
--- a/src/pm/hydra/pm/pmiserv/pmip.c
+++ b/src/pm/hydra/pm/pmiserv/pmip.c
@@ -47,7 +47,7 @@ static HYD_status init_params(void)
HYD_pmcd_pmip.local.pgid = -1;
HYD_pmcd_pmip.local.iface_ip_env_name = NULL;
HYD_pmcd_pmip.local.hostname = NULL;
- HYD_pmcd_pmip.local.spawner_kvs_name = NULL;
+ HYD_pmcd_pmip.local.spawner_kvsname = NULL;
HYD_pmcd_pmip.local.proxy_core_count = -1;
HYD_pmcd_pmip.local.proxy_process_count = -1;
HYD_pmcd_pmip.local.ckpoint_prefix_list = NULL;
@@ -109,8 +109,8 @@ static void cleanup_params(void)
if (HYD_pmcd_pmip.local.hostname)
HYDU_FREE(HYD_pmcd_pmip.local.hostname);
- if (HYD_pmcd_pmip.local.spawner_kvs_name)
- HYDU_FREE(HYD_pmcd_pmip.local.spawner_kvs_name);
+ if (HYD_pmcd_pmip.local.spawner_kvsname)
+ HYDU_FREE(HYD_pmcd_pmip.local.spawner_kvsname);
if (HYD_pmcd_pmip.local.ckpoint_prefix_list) {
for (i = 0; HYD_pmcd_pmip.local.ckpoint_prefix_list[i]; i++)
diff --git a/src/pm/hydra/pm/pmiserv/pmip.h b/src/pm/hydra/pm/pmiserv/pmip.h
index f3c9ff7..0d2e878 100644
--- a/src/pm/hydra/pm/pmiserv/pmip.h
+++ b/src/pm/hydra/pm/pmiserv/pmip.h
@@ -74,7 +74,7 @@ struct HYD_pmcd_pmip {
int proxy_core_count;
int proxy_process_count;
- char *spawner_kvs_name;
+ char *spawner_kvsname;
struct HYD_pmcd_pmi_kvs *kvs; /* Node-level KVS space for node attributes */
char **ckpoint_prefix_list;
diff --git a/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c b/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
index b1bee89..8c90936 100644
--- a/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
+++ b/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
@@ -270,7 +270,7 @@ static HYD_status fn_get_my_kvsname(int fd, char *args[])
i = 0;
tmp[i++] = HYDU_strdup("cmd=my_kvsname kvsname=");
- tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.local.kvs->kvs_name);
+ tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.local.kvs->kvsname);
tmp[i++] = HYDU_strdup("\n");
tmp[i++] = NULL;
diff --git a/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c b/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c
index f4d2c29..4246057 100644
--- a/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c
+++ b/src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c
@@ -185,9 +185,9 @@ static HYD_status fn_fullinit(int fd, char *args[])
tmp[i++] = HYDU_strdup(";size=");
tmp[i++] = HYDU_int_to_str(HYD_pmcd_pmip.system_global.global_process_count);
tmp[i++] = HYDU_strdup(";appnum=0");
- if (HYD_pmcd_pmip.local.spawner_kvs_name) {
+ if (HYD_pmcd_pmip.local.spawner_kvsname) {
tmp[i++] = HYDU_strdup(";spawner-jobid=");
- tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.local.spawner_kvs_name);
+ tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.local.spawner_kvsname);
}
if (HYD_pmcd_pmip.user_global.debug) {
tmp[i++] = HYDU_strdup(";debugged=TRUE;pmiverbose=TRUE");
@@ -237,7 +237,7 @@ static HYD_status fn_job_getid(int fd, char *args[])
tmp[i++] = HYDU_strdup(";");
}
tmp[i++] = HYDU_strdup("jobid=");
- tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.local.kvs->kvs_name);
+ tmp[i++] = HYDU_strdup(HYD_pmcd_pmip.local.kvs->kvsname);
tmp[i++] = HYDU_strdup(";rc=0;");
tmp[i++] = NULL;
diff --git a/src/pm/hydra/pm/pmiserv/pmip_utils.c b/src/pm/hydra/pm/pmiserv/pmip_utils.c
index 5770710..876c412 100644
--- a/src/pm/hydra/pm/pmiserv/pmip_utils.c
+++ b/src/pm/hydra/pm/pmiserv/pmip_utils.c
@@ -174,7 +174,7 @@ static HYD_status retries_fn(char *arg, char ***argv)
static HYD_status pmi_kvsname_fn(char *arg, char ***argv)
{
- HYDU_snprintf(HYD_pmcd_pmip.local.kvs->kvs_name, PMI_MAXKVSLEN, "%s", **argv);
+ HYDU_snprintf(HYD_pmcd_pmip.local.kvs->kvsname, PMI_MAXKVSLEN, "%s", **argv);
(*argv)++;
return HYD_SUCCESS;
@@ -184,9 +184,9 @@ static HYD_status pmi_spawner_kvsname_fn(char *arg, char ***argv)
{
HYD_status status = HYD_SUCCESS;
- HYDU_MALLOC(HYD_pmcd_pmip.local.spawner_kvs_name, char *, PMI_MAXKVSLEN, status);
+ HYDU_MALLOC(HYD_pmcd_pmip.local.spawner_kvsname, char *, PMI_MAXKVSLEN, status);
- HYDU_snprintf(HYD_pmcd_pmip.local.spawner_kvs_name, PMI_MAXKVSLEN, "%s", **argv);
+ HYDU_snprintf(HYD_pmcd_pmip.local.spawner_kvsname, PMI_MAXKVSLEN, "%s", **argv);
(*argv)++;
fn_exit:
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
index 31c9014..47b28ba 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
@@ -114,10 +114,10 @@ static HYD_status fn_put(int fd, int pid, int pgid, char *args[])
pg_scratch = (struct HYD_pmcd_pmi_pg_scratch *) proxy->pg->pg_scratch;
- if (strcmp(pg_scratch->kvs->kvs_name, kvsname))
+ if (strcmp(pg_scratch->kvs->kvsname, kvsname))
HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
"kvsname (%s) does not match this group's kvs space (%s)\n",
- kvsname, pg_scratch->kvs->kvs_name);
+ kvsname, pg_scratch->kvs->kvsname);
status = HYD_pmcd_pmi_add_kvs(key, val, pg_scratch->kvs, &ret);
HYDU_ERR_POP(status, "unable to add keypair to kvs\n");
@@ -188,10 +188,10 @@ static HYD_status fn_get(int fd, int pid, int pgid, char *args[])
goto found_val;
}
- if (strcmp(pg_scratch->kvs->kvs_name, kvsname))
+ if (strcmp(pg_scratch->kvs->kvsname, kvsname))
HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
"kvsname (%s) does not match this group's kvs space (%s)\n",
- kvsname, pg_scratch->kvs->kvs_name);
+ kvsname, pg_scratch->kvs->kvsname);
/* Try to find the key */
for (run = pg_scratch->kvs->key_pair; run; run = run->next) {
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c
index 7b6bd0d..87ff14f 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c
@@ -738,7 +738,7 @@ static HYD_status fn_spawn(int fd, int pid, int pgid, char *args[])
}
cmd_str[i++] = HYDU_strdup("rc=0;");
cmd_str[i++] = HYDU_strdup("jobid=");
- cmd_str[i++] = HYDU_strdup(pg_scratch->kvs->kvs_name);
+ cmd_str[i++] = HYDU_strdup(pg_scratch->kvs->kvsname);
cmd_str[i++] = HYDU_strdup(";");
cmd_str[i++] = HYDU_strdup("nerrs=0;");
cmd_str[i++] = NULL;
diff --git a/src/pm/hydra/pm/pmiserv/pmiserv_utils.c b/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
index 5b941fc..46539da 100644
--- a/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
+++ b/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
@@ -363,12 +363,12 @@ HYD_status HYD_pmcd_pmi_fill_in_exec_launch_info(struct HYD_pg *pg)
pg_scratch = (struct HYD_pmcd_pmi_pg_scratch *) pg->pg_scratch;
proxy->exec_launch_info[arg++] = HYDU_strdup("--pmi-kvsname");
- proxy->exec_launch_info[arg++] = HYDU_strdup(pg_scratch->kvs->kvs_name);
+ proxy->exec_launch_info[arg++] = HYDU_strdup(pg_scratch->kvs->kvsname);
if (pg->spawner_pg) {
pg_scratch = (struct HYD_pmcd_pmi_pg_scratch *) pg->spawner_pg->pg_scratch;
proxy->exec_launch_info[arg++] = HYDU_strdup("--pmi-spawner-kvsname");
- proxy->exec_launch_info[arg++] = HYDU_strdup(pg_scratch->kvs->kvs_name);
+ proxy->exec_launch_info[arg++] = HYDU_strdup(pg_scratch->kvs->kvsname);
}
proxy->exec_launch_info[arg++] = HYDU_strdup("--pmi-process-mapping");
-----------------------------------------------------------------------
Summary of changes:
src/pm/hydra/pm/pmiserv/common.c | 77 ++----------
src/pm/hydra/pm/pmiserv/common.h | 5 +-
src/pm/hydra/pm/pmiserv/pmip.c | 6 +-
src/pm/hydra/pm/pmiserv/pmip.h | 2 +-
src/pm/hydra/pm/pmiserv/pmip_cb.c | 4 +-
src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c | 193 +++++++++++++++++++++++++++--
src/pm/hydra/pm/pmiserv/pmip_pmi_v2.c | 6 +-
src/pm/hydra/pm/pmiserv/pmip_utils.c | 6 +-
src/pm/hydra/pm/pmiserv/pmiserv_cb.c | 2 +-
src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c | 191 +++++++++--------------------
src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c | 2 +-
src/pm/hydra/pm/pmiserv/pmiserv_utils.c | 4 +-
12 files changed, 267 insertions(+), 231 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.3-20-g89fb23e
by noreply@mpich.org 17 Apr '13
by noreply@mpich.org 17 Apr '13
17 Apr '13
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 89fb23ebb2ae5af69d75fb75e590c4c57e81d238 (commit)
from baaea3c6d08c7f248b6c94aff1dcc5332402428c (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/89fb23ebb2ae5af69d75fb75e590c4c57…
commit 89fb23ebb2ae5af69d75fb75e590c4c57e81d238
Author: James Dinan <dinan(a)mcs.anl.gov>
Date: Wed Apr 17 09:59:55 2013 -0500
Squash ARMCI-MPI build warnings
diff --git a/src/armci/src/buffer.c b/src/armci/src/buffer.c
index f69bb5d..d34be31 100644
--- a/src/armci/src/buffer.c
+++ b/src/armci/src/buffer.c
@@ -309,7 +309,7 @@ int ARMCII_Buf_acc_is_scaled(int datatype, void *scale) {
*/
void ARMCII_Buf_acc_scale(void *buf_in, void *buf_out, int size, int datatype, void *scale) {
int j, nelem;
- int type_size;
+ int type_size = -1;
MPI_Datatype type;
switch (datatype) {
diff --git a/src/armci/src/parmci.c b/src/armci/src/parmci.c
index 69ab556..d7d3e4c 100644
--- a/src/armci/src/parmci.c
+++ b/src/armci/src/parmci.c
@@ -49,27 +49,32 @@ int ARMCI_Free_local(void *ptr) {
#pragma weak ARMCI_Barrier
void ARMCI_Barrier(void) {
- return PARMCI_Barrier();
+ PARMCI_Barrier();
+ return;
}
#pragma weak ARMCI_Fence
void ARMCI_Fence(int proc) {
- return PARMCI_Fence(proc);
+ PARMCI_Fence(proc);
+ return;
}
#pragma weak ARMCI_AllFence
void ARMCI_AllFence(void) {
- return PARMCI_AllFence();
+ PARMCI_AllFence();
+ return;
}
#pragma weak ARMCI_Access_begin
void ARMCI_Access_begin(void *ptr) {
- return PARMCI_Access_begin(ptr);
+ PARMCI_Access_begin(ptr);
+ return;
}
#pragma weak ARMCI_Access_end
void ARMCI_Access_end(void *ptr) {
- return PARMCI_Access_end(ptr);
+ PARMCI_Access_end(ptr);
+ return;
}
#pragma weak ARMCI_Get
@@ -259,12 +264,14 @@ int ARMCI_Destroy_mutexes(void) {
#pragma weak ARMCI_Lock
void ARMCI_Lock(int mutex, int proc) {
- return PARMCI_Lock(mutex, proc);
+ PARMCI_Lock(mutex, proc);
+ return;
}
#pragma weak ARMCI_Unlock
void ARMCI_Unlock(int mutex, int proc) {
- return PARMCI_Unlock(mutex, proc);
+ PARMCI_Unlock(mutex, proc);
+ return;
}
#pragma weak ARMCI_Rmw
@@ -274,12 +281,14 @@ int ARMCI_Rmw(int op, void *ploc, void *prem, int value, int proc) {
#pragma weak armci_msg_barrier
void armci_msg_barrier(void) {
- return parmci_msg_barrier();
+ parmci_msg_barrier();
+ return;
}
#pragma weak armci_msg_group_barrier
void armci_msg_group_barrier(ARMCI_Group *group) {
- return parmci_msg_group_barrier(group);
+ parmci_msg_group_barrier(group);
+ return;
}
#endif
-----------------------------------------------------------------------
Summary of changes:
src/armci/src/buffer.c | 2 +-
src/armci/src/parmci.c | 27 ++++++++++++++++++---------
2 files changed, 19 insertions(+), 10 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.3-19-gbaaea3c
by noreply@mpich.org 12 Apr '13
by noreply@mpich.org 12 Apr '13
12 Apr '13
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 baaea3c6d08c7f248b6c94aff1dcc5332402428c (commit)
from c20d8550c61f6e08d07bdb8719f56a6c239570d8 (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/baaea3c6d08c7f248b6c94aff1dcc5332…
commit baaea3c6d08c7f248b6c94aff1dcc5332402428c
Author: Dave Goodell <goodell(a)mcs.anl.gov>
Date: Fri Apr 12 14:56:05 2013 -0500
add `pipestatus` shell helper
This will simplify some of our Jenkins configurations. All this commit
does is stash a copy of `pipestatus` in `maint` from
https://github.com/cheusov/pipestatus.
No reviewer.
diff --git a/maint/pipestatus b/maint/pipestatus
new file mode 100755
index 0000000..70b4d81
--- /dev/null
+++ b/maint/pipestatus
@@ -0,0 +1,164 @@
+# -*- mode: sh; -*-
+
+#
+# Public domain
+#
+# Written by Aleksey Cheusov <vle(a)gmx.net>
+# based on the code from FAQ of comp.unix.shell newsgroup
+#
+# Set of shell functions for running pipe and checking
+# exit status of ALL programs, not only last one.
+#
+# Version 0.6.0
+#
+
+#
+__shquote (){
+ __cmd=`printf '%s\n' "$1" | sed "s|'|'\\\\\''|g"`
+ printf "%s\n" "'$__cmd'"
+}
+
+__pipestatus_err_msg (){
+ if test "$PIPESTATUS_VERBOSE"; then
+ echo "Pipe failed, pipestatus_all='$pipestatus_all'" 1>&2
+ fi
+}
+
+# run pipe and set pipestatus_1, pipestatus_2, ... and pipesize variables
+# Example: runpipe_base prog1 arg11 arg12 '|' prog2 arg21 arg22 '|' prog3
+# Always return zero exit status
+runpipe_base (){
+ #
+ pipesize=0
+
+ # whole command
+ __pipestatus_com=
+
+ # token count
+ __pipestatus_k=1
+
+ # program in pipe (between |)
+ __pipestatus_l=
+
+ # counter
+ __pipestatus_j=1
+
+ # generating whole command
+ for __pipestatus_a in "$@"; do
+ if [ "_$__pipestatus_a" = '_|' ]; then
+ __pipestatus_com="$__pipestatus_com {
+ if $__pipestatus_l 3>&-"'; then
+ echo "pipestatus_'$__pipestatus_j'=0" 1>&3
+ else
+ echo "pipestatus_'$__pipestatus_j'=$?" 1>&3
+ fi
+} 4>&- |
+'
+ __pipestatus_j=`expr $__pipestatus_j + 1`
+ __pipestatus_l=
+ else
+ __pipestatus_l="$__pipestatus_l `__shquote \"$__pipestatus_a\"`"
+ fi
+ __pipestatus_k=`expr $__pipestatus_k + 1`
+ done
+ __pipestatus_com="if $__pipestatus_com $__pipestatus_l 3>&- 1>&4 4>&-"'; then
+ echo "pipestatus_'"$__pipestatus_j"'=0"
+ else
+ echo "pipestatus_'"$__pipestatus_j"'=$?"
+ fi'
+
+ #
+# echo "$__pipestatus_com"
+
+ # '|| true' - trick for 'set -e'
+ exec 4>&1
+ eval `exec 3>&1; eval "$__pipestatus_com" || true`
+ exec 4>&-
+
+ #
+ pipesize=$__pipestatus_j
+
+ # pipestatus_all
+ __pipestatus_j=2
+ pipestatus_all=$pipestatus_1
+ while [ "$__pipestatus_j" -le "$pipesize" 2>/dev/null ]; do
+ eval "pipestatus_all=\"$pipestatus_all \$pipestatus_$__pipestatus_j\""
+ __pipestatus_j=`expr $__pipestatus_j + 1`
+ done
+
+ return 0
+}
+
+# returns zero exit status if ALL progs in pipe return zero
+check_status0 (){
+ __pipestatus_j=1
+ while [ "$__pipestatus_j" -le "$pipesize" ]; do
+ eval "[ \$pipestatus_$__pipestatus_j -eq 0 ]" || {
+ __pipestatus_err_msg
+ return 1
+ }
+ __pipestatus_j=`expr $__pipestatus_j + 1`
+ done
+
+ return 0
+}
+
+# returns zero exit status if ALL progs in pipe return zero
+runpipe0 (){
+ runpipe_base "$@"
+ check_status0
+}
+
+# match all statuses with the pattern
+# example: check_status_re '0 . 0'
+# . means "any status"
+check_status_re (){
+ __pipestatus_re=`echo $1 | sed 's/[.]/[0-9][0-9]*/g'`
+ __pipestatus_j=1
+ __pipestatus_ps=
+ while [ "$__pipestatus_j" -le "$pipesize" ]; do
+ eval '__pipestatus_ps="$__pipestatus_ps ${pipestatus_'$__pipestatus_j'}"'
+ __pipestatus_j=`expr $__pipestatus_j + 1`
+ done
+
+ # trick for set -e
+ if echo "$__pipestatus_ps" | grep -E "^ $__pipestatus_re"'$' > /dev/null
+ then
+ __pipestatus_ret=0
+ else
+ __pipestatus_ret=$?
+ __pipestatus_err_msg
+ fi
+
+ # egrep not found?
+ case "$__pipestatus_ret" in
+ 0|1)
+ ;;
+ *)
+ exit 2; # fatal error with egrep
+ esac
+
+ return $__pipestatus_ret
+}
+
+# match all statuses with the pattern
+# example: runpipe_re '0 . 0' prog1 '|' prog2 '|' prog3
+# . means "any status"
+runpipe_re (){
+ __pipestatus_re="$1"
+ shift
+
+ runpipe_base "$@"
+ check_status_re "$__pipestatus_re"
+}
+
+# return exit code of the last program in pipe
+check_status (){
+ eval return '$pipestatus_'${pipesize}
+}
+
+# similar to plain pipe but set 'pipestatus_XX' and 'pipesize' variables
+runpipe (){
+ runpipe_base "$@"
+ check_status
+}
-----------------------------------------------------------------------
Summary of changes:
maint/pipestatus | 164 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 164 insertions(+), 0 deletions(-)
create mode 100755 maint/pipestatus
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.3-18-gc20d855
by noreply@mpich.org 11 Apr '13
by noreply@mpich.org 11 Apr '13
11 Apr '13
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 c20d8550c61f6e08d07bdb8719f56a6c239570d8 (commit)
from 38fb9ec634e018b373513d0014029c3ead06ed4e (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/c20d8550c61f6e08d07bdb8719f56a6c2…
commit c20d8550c61f6e08d07bdb8719f56a6c239570d8
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Tue Apr 9 06:56:17 2013 -0500
Improvements to the release.pl script.
1. The release.pl creation script now takes a remote git repository as
an argument instead of a local clone. This allows this script to be
standalone and not rely on the copy used by the nightly scripts.
2. Allow release.pl to abort if no recent commits have been pushed to
the repository.
3. Simultaneously create both the main tarball as well as the hydra
tarball.
4. Renames of some arguments to better match what they are referring
to.
Reviewed by goodell.
diff --git a/maint/release.pl b/maint/release.pl
index 6b9db94..be42bac 100755
--- a/maint/release.pl
+++ b/maint/release.pl
@@ -19,17 +19,18 @@ use Getopt::Long;
use File::Temp qw( tempdir );
my $arg = 0;
-my $source = "";
-my $psource = "";
+my $branch = "";
+my $pbranch = "";
my $version = "";
my $append_commit_id;
+my $since = "";
my $root = cwd();
my $with_autoconf = "";
my $with_automake = "";
-my $git_repo_path = ".";
+my $remote_git_repo = "";
# Default to MPICH
-my $pack = "mpich";
+my $prefix = "mpich";
my $logfile = "release.log";
@@ -38,19 +39,14 @@ sub usage
print "Usage: $0 [OPTIONS]\n\n";
print "OPTIONS:\n";
- print "\t--source git tree-ish specifying source to be packaged\n";
- print "\t--psource git tree-ish for the previous version source for ABI compliance (required)\n";
+ print "\t--branch git branch to be packaged (required)\n";
+ print "\t--pbranch git previous version branch for ABI compliance (required)\n";
+ print "\t--version tarball version (required)\n";
+ print "\t--remote-git-repo path to root of the git repository (required)\n";
- # what package we are creating
- print "\t--package package to create (optional)\n";
-
- # version string associated with the tarball
- print "\t--version tarball version (required)\n";
-
- # append a valid git commit ID (SHA1 or git-describe output)
+ print "\t--prefix package prefix to use (optional)\n";
print "\t--append-commit-id append git commit ID (optional)\n";
-
- print "\t--git-repository path to root of the git repository\n";
+ print "\t--newer-than date (optional)\n";
print "\n";
@@ -139,14 +135,15 @@ sub run_cmd
}
GetOptions(
- "source=s" => \$source,
- "psource=s" => \$psource,
- "package:s" => \$pack,
+ "branch=s" => \$branch,
+ "pbranch=s" => \$pbranch,
+ "prefix:s" => \$prefix,
"version=s" => \$version,
"append-commit-id!" => \$append_commit_id,
+ "newer-than=s" => \$since,
"with-autoconf" => \$with_autoconf,
"with-automake" => \$with_automake,
- "git-repository=s" => \$git_repo_path,
+ "remote-git-repo=s" => \$remote_git_repo,
"help" => \&usage,
# old deprecated args, retained with usage() to help catch non-updated cron
@@ -158,7 +155,7 @@ if (scalar(@ARGV) != 0) {
usage();
}
-if (!$source || !$version || !$psource) {
+if (!$branch || !$version || !$pbranch) {
usage();
}
@@ -178,42 +175,61 @@ check_autotools_version("automake", "1.12.4");
check_autotools_version("libtool", "2.4.2");
print("\n");
-# chdirs to $git_repo_path if valid
-check_git_repo($git_repo_path);
+
+my $tdir = tempdir(CLEANUP => 1);
+my $local_git_clone = "${tdir}/${prefix}-clone";
+
+
+# clone git repo
+print("===> Cloning git repo... ");
+run_cmd("git clone ${remote_git_repo} ${local_git_clone}");
+print("done\n");
+
+# chdirs to $local_git_clone if valid
+check_git_repo($local_git_clone);
print("\n");
-my $current_ver = `git show ${source}:maint/version.m4 | grep MPICH_VERSION_m4 | \
+if ($since) {
+ # If there have been no commits in the past some amount of time,
+ # do not create a tarball
+ if (!(`git log --since='$since' ${branch}`)) {
+ chdir("${tdir}/..");
+ print "No recent commits found... aborting\n";
+ exit;
+ }
+}
+
+my $current_ver = `git show ${branch}:maint/version.m4 | grep MPICH_VERSION_m4 | \
sed -e 's/^.*\\[MPICH_VERSION_m4\\],\\[\\(.*\\)\\].*/\\1/g'`;
if ("$current_ver" ne "$version\n") {
print("\tWARNING: Version mismatch\n\n");
}
-if ($psource) {
+if ($pbranch) {
# Check diff
- my $d = `git diff ${psource}:src/include/mpi.h.in ${source}:src/include/mpi.h.in`;
- $d .= `git diff ${psource}:src/binding ${source}:src/binding`;
+ my $d = `git diff ${pbranch}:src/include/mpi.h.in ${branch}:src/include/mpi.h.in`;
+ $d .= `git diff ${pbranch}:src/binding ${branch}:src/binding`;
if ("$d" ne "") {
print("\tWARNING: ABI mismatch\n\n");
}
}
if ($append_commit_id) {
- my $desc = `git describe --always ${source}`;
+ my $desc = `git describe --always ${branch}`;
chomp $desc;
$version .= "-${desc}";
}
-my $tdir = tempdir(CLEANUP => 1);
+my $expdir = "${tdir}/${prefix}-${version}";
# Clean up the log file
system("rm -f ${root}/$logfile");
-# Check out the appropriate source
-print("===> Exporting $pack source from git... ");
-run_cmd("rm -rf ${pack}-${version}");
-my $expdir = "${tdir}/${pack}-${version}";
+# Check out the appropriate branch
+print("===> Exporting code from git... ");
+run_cmd("rm -rf ${expdir}");
run_cmd("mkdir -p ${expdir}");
-run_cmd("git archive ${source} --prefix='${pack}-${version}/' | tar -x -C $tdir");
+run_cmd("git archive ${branch} --prefix='${prefix}-${version}/' | tar -x -C $tdir");
print("done\n");
print("===> Create release date and version information... ");
@@ -226,8 +242,8 @@ system(qq(perl -p -i -e 's/\\[MPICH_RELEASE_DATE_m4\\],\\[unreleased development
# above modifications
print("done\n");
-# Remove packages that are not being released
-print("===> Removing packages that are not being released... ");
+# Remove content that is not being released
+print("===> Removing content that is not being released... ");
chdir($expdir);
run_cmd("rm -rf doc/notes src/pm/mpd/Zeroconf.py");
@@ -241,7 +257,7 @@ for my $module (@nem_modules) {
print("done\n");
# Create configure
-print("===> Creating configure in the main package... ");
+print("===> Creating configure in the main codebase... ");
chdir($expdir);
{
my $cmd = "./autogen.sh";
@@ -252,7 +268,7 @@ chdir($expdir);
print("done\n");
# Disable unnecessary tests in the release tarball
-print("===> Disabling unnecessary tests in the main package... ");
+print("===> Disabling unnecessary tests in the main codebase... ");
chdir($expdir);
run_cmd("perl -p -i -e 's/^\@perfdir\@\$/#\@perfdir\@/' test/mpi/testlist.in");
run_cmd("perl -p -i -e 's/^large_message /#large_message /' test/mpi/pt2pt/testlist");
@@ -260,18 +276,18 @@ run_cmd("perl -p -i -e 's/^large-count /#large-count /' test/mpi/datatype/testli
print("done\n");
# Remove unnecessary files
-print("===> Removing unnecessary files in the main package... ");
+print("===> Removing unnecessary files in the main codebase... ");
chdir($expdir);
run_cmd("rm -rf README.vin maint/config.log maint/config.status unusederr.txt");
run_cmd("find . -name autom4te.cache | xargs rm -rf");
print("done\n");
# Get docs
-print("===> Creating secondary package for the docs... ");
+print("===> Creating secondary codebase for the docs... ");
run_cmd("cp -a ${expdir} ${expdir}-tmp");
print("done\n");
-print("===> Configuring and making the secondary package... ");
+print("===> Configuring and making the secondary codebase... ");
chdir("${expdir}-tmp");
{
my $cmd = "./autogen.sh";
@@ -302,12 +318,18 @@ run_cmd("make");
run_cmd("rm -f users-guide.blg users-guide.toc users-guide.aux users-guide.bbl users-guide.log users-guide.dvi");
print("done\n");
-# Create the tarball
-print("===> Creating the final ${pack} tarball... ");
+# Create the main tarball
+print("===> Creating the final ${prefix} tarball... ");
chdir("${tdir}");
-run_cmd("tar -czvf ${pack}-${version}.tar.gz ${pack}-${version}");
-run_cmd("rm -rf ${expdir}");
-run_cmd("cp -a ${pack}-${version}.tar.gz ${root}/");
+run_cmd("tar -czvf ${prefix}-${version}.tar.gz ${prefix}-${version}");
+run_cmd("cp -a ${prefix}-${version}.tar.gz ${root}/");
+print("done\n");
+
+# Create the hydra tarball
+print("===> Creating the final hydra tarball... ");
+run_cmd("cp -a ${expdir}/src/pm/hydra hydra-${version}");
+run_cmd("tar -czvf hydra-${version}.tar.gz hydra-${version}");
+run_cmd("cp -a hydra-${version}.tar.gz ${root}/");
print("done\n\n");
# make sure we are outside of the tempdir so that the CLEANUP logic can run
-----------------------------------------------------------------------
Summary of changes:
maint/release.pl | 112 ++++++++++++++++++++++++++++++++----------------------
1 files changed, 67 insertions(+), 45 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.3-17-g38fb9ec
by noreply@mpich.org 09 Apr '13
by noreply@mpich.org 09 Apr '13
09 Apr '13
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 38fb9ec634e018b373513d0014029c3ead06ed4e (commit)
from 7fdbaab175b2d5aecfa2e2ed5fbc80f901293454 (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/38fb9ec634e018b373513d0014029c3ea…
commit 38fb9ec634e018b373513d0014029c3ead06ed4e
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Tue Apr 9 05:38:03 2013 -0500
Fix typo introduced in dd76a0f that's causing the nightly tests to
fail.
No reviewer.
diff --git a/maint/release.pl b/maint/release.pl
index 2cf3ab4..6b9db94 100755
--- a/maint/release.pl
+++ b/maint/release.pl
@@ -254,7 +254,7 @@ print("done\n");
# Disable unnecessary tests in the release tarball
print("===> Disabling unnecessary tests in the main package... ");
chdir($expdir);
-run_cmd("perl -p -i -e 's/^@perfdir@\$/#@perfdir@/' test/mpi/testlist.in");
+run_cmd("perl -p -i -e 's/^\@perfdir\@\$/#\@perfdir\@/' test/mpi/testlist.in");
run_cmd("perl -p -i -e 's/^large_message /#large_message /' test/mpi/pt2pt/testlist");
run_cmd("perl -p -i -e 's/^large-count /#large-count /' test/mpi/datatype/testlist");
print("done\n");
-----------------------------------------------------------------------
Summary of changes:
maint/release.pl | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.3-16-g7fdbaab
by noreply@mpich.org 08 Apr '13
by noreply@mpich.org 08 Apr '13
08 Apr '13
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 7fdbaab175b2d5aecfa2e2ed5fbc80f901293454 (commit)
from 4e03a16f9c9318b5a1ff0aed7be223ca4e5608e3 (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/7fdbaab175b2d5aecfa2e2ed5fbc80f90…
commit 7fdbaab175b2d5aecfa2e2ed5fbc80f901293454
Author: Dave Goodell <goodell(a)mcs.anl.gov>
Date: Mon Apr 8 23:03:27 2013 -0500
TAP: comply better with "TAP Version 13"
The "TAP Version 13" specification (normally available at
http://testanything.org/wiki/index.php/TAP_version_13_specification but
currently only available via the Wayback Machine) does not actually
permit spaces before a comment line.
It also requires a special string at the beginning of the file to
indicate that YAMLish should be expected. Otherwise, TAP::Parser will
pretend not to see the YAML blocks.
No reviewer.
diff --git a/test/mpi/runtests.in b/test/mpi/runtests.in
index 3dae546..dbe1f79 100644
--- a/test/mpi/runtests.in
+++ b/test/mpi/runtests.in
@@ -198,6 +198,7 @@ foreach $_ (@ARGV) {
open( TAPOUT, ">$tapfile" ) || die "Cannot open $tapfile\n";
my $date = `date "+%Y-%m-%d-%H-%M"`;
$date =~ s/\r?\n//;
+ print TAPOUT "TAP version 13\n";
print TAPOUT "# MPICH test suite results (TAP format)\n";
print TAPOUT "# date ${date}\n";
# we do not know at this point how many tests will be run, so do
@@ -1039,12 +1040,14 @@ sub RunTestFailed {
print TAPOUT " ...\n";
- # alternative to the "Output:" YAML block literal above
- print TAPOUT " ## Test output (expected 'No Errors'):\n";
+ # Alternative to the "Output:" YAML block literal above. Do not put any
+ # spaces before the '#', this causes some TAP parsers (including Perl's
+ # TAP::Parser) to treat the line as "unknown" instead of a proper
+ # comment.
+ print TAPOUT "## Test output (expected 'No Errors'):\n";
foreach my $line (split m/\r?\n/, $output) {
chomp $line;
- # 2 spaces for TAP indent
- print TAPOUT " ## $line\n";
+ print TAPOUT "## $line\n";
}
}
}
-----------------------------------------------------------------------
Summary of changes:
test/mpi/runtests.in | 11 +++++++----
1 files changed, 7 insertions(+), 4 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.3-15-g4e03a16
by noreply@mpich.org 07 Apr '13
by noreply@mpich.org 07 Apr '13
07 Apr '13
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 4e03a16f9c9318b5a1ff0aed7be223ca4e5608e3 (commit)
from 34095c397c692cc1705cc005fe4ccc92dd263634 (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/4e03a16f9c9318b5a1ff0aed7be223ca4…
commit 4e03a16f9c9318b5a1ff0aed7be223ca4e5608e3
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sun Apr 7 21:32:24 2013 -0500
Added the per-communicator thresholds addition into the CHANGES file.
No reviewer.
diff --git a/CHANGES b/CHANGES
index 10f35dd..f459d6d 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,17 @@
===============================================================================
+ Changes in 3.0.4
+===============================================================================
+
+ # OVERALL: Added support to manage per-communicator eager-rendezvous
+ thresholds.
+
+ # Several other minor bug fixes, memory leak fixes, and code cleanup.
+ A full list of changes is available at the following link:
+
+ http://git.mpich.org/mpich.git/shortlog/v3.0.3..v3.0.4
+
+
+===============================================================================
Changes in 3.0.3
===============================================================================
-----------------------------------------------------------------------
Summary of changes:
CHANGES | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.3-14-g34095c3
by noreply@mpich.org 07 Apr '13
by noreply@mpich.org 07 Apr '13
07 Apr '13
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 34095c397c692cc1705cc005fe4ccc92dd263634 (commit)
via dd76a0f2f90bf4d79ac75a5d4419e498f9770c30 (commit)
via 8fb17a1dc7a48d9695cf21aedf4f54b00da465e2 (commit)
from 3f38e1b9ff5ecc9a916aec41fb964c1cec2e3622 (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/34095c397c692cc1705cc005fe4ccc92d…
commit 34095c397c692cc1705cc005fe4ccc92dd263634
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sun Apr 7 10:12:41 2013 -0500
Fix English typos caught by the Debian lintian checks.
Reviewed by dinan.
diff --git a/src/env/mpicc.txt b/src/env/mpicc.txt
index 9ffaee4..2bff06c 100644
--- a/src/env/mpicc.txt
+++ b/src/env/mpicc.txt
@@ -11,7 +11,7 @@
Command line arguments:
+ -show - Show the commands that would be used without
- runnning them
+ running them
. -help - Give short help
. -cc=name - Use compiler 'name' instead of the default choice. Use
this only if the compiler is compatible with the MPICH
diff --git a/src/env/mpicxx.txt b/src/env/mpicxx.txt
index b83be4c..d3388e0 100644
--- a/src/env/mpicxx.txt
+++ b/src/env/mpicxx.txt
@@ -11,7 +11,7 @@
Command line arguments:
+ -show - Show the commands that would be used without
- runnning them
+ running them
. -help - Give short help
. -cxx=name - Use compiler 'name' instead of the default choice. Use
this only if the compiler is compatible with the MPICH
diff --git a/src/env/mpif77.txt b/src/env/mpif77.txt
index e00c586..c55f26e 100644
--- a/src/env/mpif77.txt
+++ b/src/env/mpif77.txt
@@ -11,7 +11,7 @@
Command line arguments:
+ -show - Show the commands that would be used without
- runnning them
+ running them
. -help - Give short help
. -f77=name - Use compiler 'name' instead of the default choice. Use
this only if the compiler is compatible with the MPICH
diff --git a/src/env/mpif90.txt b/src/env/mpif90.txt
index dd603c3..efedc29 100644
--- a/src/env/mpif90.txt
+++ b/src/env/mpif90.txt
@@ -11,7 +11,7 @@
Command line arguments:
+ -show - Show the commands that would be used without
- runnning them
+ running them
. -help - Give short help
. -f90=name - Use compiler 'name' instead of the default choice. Use
this only if the compiler is compatible with the MPICH
diff --git a/src/mpi/attr/attr_get.c b/src/mpi/attr/attr_get.c
index f1ad255..122ed46 100644
--- a/src/mpi/attr/attr_get.c
+++ b/src/mpi/attr/attr_get.c
@@ -46,7 +46,7 @@ Notes:
in with 'MPI_ATTR_PUT'. The notes for C and Fortran below explain why.
Notes for C:
- Even though the 'attribute_val' arguement is declared as 'void *', it is
+ Even though the 'attribute_val' argument is declared as 'void *', it is
really the address of a void pointer (i.e., a 'void **'). Using
a 'void *', however, is more in keeping with C idiom and allows the
pointer to be passed without additional casts.
diff --git a/src/mpi/attr/comm_create_keyval.c b/src/mpi/attr/comm_create_keyval.c
index 604b6a6..f145189 100644
--- a/src/mpi/attr/comm_create_keyval.c
+++ b/src/mpi/attr/comm_create_keyval.c
@@ -103,7 +103,7 @@ Default copy and delete functions are available. These are
There are subtle differences between C and Fortran that require that the
copy_fn be written in the same language from which 'MPI_Comm_create_keyval'
is called.
-This should not be a problem for most users; only programers using both
+This should not be a problem for most users; only programmers using both
Fortran and C in the same program need to be sure that they follow this rule.
.N AttrErrReturn
diff --git a/src/mpi/attr/comm_get_attr.c b/src/mpi/attr/comm_get_attr.c
index 87ca505..e998200 100644
--- a/src/mpi/attr/comm_get_attr.c
+++ b/src/mpi/attr/comm_get_attr.c
@@ -332,7 +332,7 @@ Output Parameters:
why.
Notes for C:
- Even though the 'attr_value' arguement is declared as 'void *', it is
+ Even though the 'attr_value' argument is declared as 'void *', it is
really the address of a void pointer. See the rationale in the
standard for more details.
diff --git a/src/mpi/attr/keyval_create.c b/src/mpi/attr/keyval_create.c
index ac69c3e..a65fc1a 100644
--- a/src/mpi/attr/keyval_create.c
+++ b/src/mpi/attr/keyval_create.c
@@ -46,7 +46,7 @@ Key values are global (available for any and all communicators).
There are subtle differences between C and Fortran that require that the
copy_fn be written in the same language that 'MPI_Keyval_create'
is called from.
-This should not be a problem for most users; only programers using both
+This should not be a problem for most users; only programmers using both
Fortran and C in the same program need to be sure that they follow this rule.
.N ThreadSafe
diff --git a/src/mpi/attr/type_get_attr.c b/src/mpi/attr/type_get_attr.c
index 1748e03..3d6a44f 100644
--- a/src/mpi/attr/type_get_attr.c
+++ b/src/mpi/attr/type_get_attr.c
@@ -170,7 +170,7 @@ Output Parameters:
why.
Notes for C:
- Even though the 'attr_value' arguement is declared as 'void *', it is
+ Even though the 'attr_value' argument is declared as 'void *', it is
really the address of a void pointer. See the rationale in the
standard for more details.
diff --git a/src/mpi/comm/comm_split.c b/src/mpi/comm/comm_split.c
index 1283227..d5f90da 100644
--- a/src/mpi/comm/comm_split.c
+++ b/src/mpi/comm/comm_split.c
@@ -381,7 +381,7 @@ Input Parameters:
+ comm - communicator (handle)
. color - control of subset assignment (nonnegative integer). Processes
with the same color are in the same new communicator
-- key - control of rank assigment (integer)
+- key - control of rank assignment (integer)
Output Parameters:
. newcomm - new communicator (handle)
diff --git a/src/mpi/comm/comm_split_type.c b/src/mpi/comm/comm_split_type.c
index aa5045e..47ca3fc 100644
--- a/src/mpi/comm/comm_split_type.c
+++ b/src/mpi/comm/comm_split_type.c
@@ -70,7 +70,7 @@ MPI_Comm_split_type - Creates new communicators based on split types and keys
Input Parameters:
+ comm - communicator (handle)
. split_type - type of processes to be grouped together (nonnegative integer).
-. key - control of rank assigment (integer)
+. key - control of rank assignment (integer)
- info - hints to improve communicator creation (handle)
Output Parameters:
diff --git a/src/mpi/errhan/errnames.txt b/src/mpi/errhan/errnames.txt
index 8e78c48..0633d3a 100644
--- a/src/mpi/errhan/errnames.txt
+++ b/src/mpi/errhan/errnames.txt
@@ -152,7 +152,7 @@ MPI_TYPECLASS_INTEGER, or MPI_TYPECLASS_COMPLEX
(precision=%d, range=%d) failed
**f90typetoomany:Too many requests for unnamed, predefined f90 types
**f90typeintnone: No integer type with the requested range is available
-**f90typeintnone %d: No integer type with %d digits of range is avaiable
+**f90typeintnone %d: No integer type with %d digits of range is available
**f90typerealnone: No real type with the requested range and/or precision \
is available
**f90typerealnone %d %d: No real type with both %d digits of precision \
diff --git a/src/mpi/pt2pt/startall.c b/src/mpi/pt2pt/startall.c
index 9763268..734f032 100644
--- a/src/mpi/pt2pt/startall.c
+++ b/src/mpi/pt2pt/startall.c
@@ -43,7 +43,7 @@ Input Parameters:
Unlike 'MPI_Waitall', 'MPI_Startall' does not provide a mechanism for
returning multiple errors nor pinpointing the request(s) involved.
- Futhermore, the behavior of 'MPI_Startall' after an error occurs is not
+ Furthermore, the behavior of 'MPI_Startall' after an error occurs is not
defined by the MPI standard. If well-defined error reporting and behavior
are required, multiple calls to 'MPI_Start' should be used instead.
diff --git a/src/mpi/romio/mpi-io/iread_at.c b/src/mpi/romio/mpi-io/iread_at.c
index 1837b4f..8e9b0b2 100644
--- a/src/mpi/romio/mpi-io/iread_at.c
+++ b/src/mpi/romio/mpi-io/iread_at.c
@@ -28,7 +28,7 @@
#endif
/*@
- MPI_File_iread_at - Nonblocking read using explict offset
+ MPI_File_iread_at - Nonblocking read using explicit offset
Input Parameters:
. fh - file handle (handle)
diff --git a/src/mpi/romio/mpi-io/iwrite_at.c b/src/mpi/romio/mpi-io/iwrite_at.c
index 6cd0eeb..6974ed5 100644
--- a/src/mpi/romio/mpi-io/iwrite_at.c
+++ b/src/mpi/romio/mpi-io/iwrite_at.c
@@ -24,7 +24,7 @@
#endif
/*@
- MPI_File_iwrite_at - Nonblocking write using explict offset
+ MPI_File_iwrite_at - Nonblocking write using explicit offset
Input Parameters:
. fh - file handle (handle)
diff --git a/src/mpi/romio/mpi-io/rd_atallb.c b/src/mpi/romio/mpi-io/rd_atallb.c
index aefea0e..44f54e4 100644
--- a/src/mpi/romio/mpi-io/rd_atallb.c
+++ b/src/mpi/romio/mpi-io/rd_atallb.c
@@ -24,7 +24,7 @@
#endif
/*@
- MPI_File_read_at_all_begin - Begin a split collective read using explict offset
+ MPI_File_read_at_all_begin - Begin a split collective read using explicit offset
Input Parameters:
. fh - file handle (handle)
diff --git a/src/mpi/romio/mpi-io/rd_atalle.c b/src/mpi/romio/mpi-io/rd_atalle.c
index 5341327..0715e6a 100644
--- a/src/mpi/romio/mpi-io/rd_atalle.c
+++ b/src/mpi/romio/mpi-io/rd_atalle.c
@@ -25,7 +25,7 @@
/*@
MPI_File_read_at_all_end - Complete a split collective read using
- explict offset
+ explicit offset
Input Parameters:
. fh - file handle (handle)
diff --git a/src/mpi/romio/mpi-io/read_at.c b/src/mpi/romio/mpi-io/read_at.c
index 2fad79d..72e593d 100644
--- a/src/mpi/romio/mpi-io/read_at.c
+++ b/src/mpi/romio/mpi-io/read_at.c
@@ -25,7 +25,7 @@
/* status object not filled currently */
/*@
- MPI_File_read_at - Read using explict offset
+ MPI_File_read_at - Read using explicit offset
Input Parameters:
. fh - file handle (handle)
diff --git a/src/mpi/romio/mpi-io/read_atall.c b/src/mpi/romio/mpi-io/read_atall.c
index 4763b1a..13932b1 100644
--- a/src/mpi/romio/mpi-io/read_atall.c
+++ b/src/mpi/romio/mpi-io/read_atall.c
@@ -26,7 +26,7 @@
/* status object not filled currently */
/*@
- MPI_File_read_at_all - Collective read using explict offset
+ MPI_File_read_at_all - Collective read using explicit offset
Input Parameters:
. fh - file handle (handle)
diff --git a/src/mpi/romio/mpi-io/wr_atallb.c b/src/mpi/romio/mpi-io/wr_atallb.c
index cf1b3ba..07fe989 100644
--- a/src/mpi/romio/mpi-io/wr_atallb.c
+++ b/src/mpi/romio/mpi-io/wr_atallb.c
@@ -25,7 +25,7 @@
/*@
MPI_File_write_at_all_begin - Begin a split collective write using
- explict offset
+ explicit offset
Input Parameters:
. fh - file handle (handle)
diff --git a/src/mpi/romio/mpi-io/wr_atalle.c b/src/mpi/romio/mpi-io/wr_atalle.c
index 430945e..dc41651 100644
--- a/src/mpi/romio/mpi-io/wr_atalle.c
+++ b/src/mpi/romio/mpi-io/wr_atalle.c
@@ -24,7 +24,7 @@
#endif
/*@
- MPI_File_write_at_all_end - Complete a split collective write using explict offset
+ MPI_File_write_at_all_end - Complete a split collective write using explicit offset
Input Parameters:
. fh - file handle (handle)
diff --git a/src/mpi/romio/mpi-io/write_at.c b/src/mpi/romio/mpi-io/write_at.c
index 63f3065..16980ff 100644
--- a/src/mpi/romio/mpi-io/write_at.c
+++ b/src/mpi/romio/mpi-io/write_at.c
@@ -25,7 +25,7 @@
/* status object not filled currently */
/*@
- MPI_File_write_at - Write using explict offset
+ MPI_File_write_at - Write using explicit offset
Input Parameters:
. fh - file handle (handle)
diff --git a/src/mpi/romio/mpi-io/write_atall.c b/src/mpi/romio/mpi-io/write_atall.c
index 82e207b..fda31ee 100644
--- a/src/mpi/romio/mpi-io/write_atall.c
+++ b/src/mpi/romio/mpi-io/write_atall.c
@@ -26,7 +26,7 @@
/* status object not filled currently */
/*@
- MPI_File_write_at_all - Collective write using explict offset
+ MPI_File_write_at_all - Collective write using explicit offset
Input Parameters:
. fh - file handle (handle)
diff --git a/src/mpid/ch3/channels/nemesis/netmod/scif/scifrw.c b/src/mpid/ch3/channels/nemesis/netmod/scif/scifrw.c
index 7ab4615..d66bfa8 100644
--- a/src/mpid/ch3/channels/nemesis/netmod/scif/scifrw.c
+++ b/src/mpid/ch3/channels/nemesis/netmod/scif/scifrw.c
@@ -407,7 +407,7 @@ int MPID_nem_scif_poll_send(int ep, shmchan_t * csend)
avail = csend->buflen - (csend->curp - csend->bufp) - sizeof(uint64_t);
if (avail >= SMALLMSG)
- goto fn_exit; /* room for a messsage */
+ goto fn_exit; /* room for a message */
lseqno = *csend->lseqno;
if (lseqno == csend->seqno)
goto fn_exit; /* remote side has consumed everything */
diff --git a/src/mpid/ch3/src/ch3u_recvq.c b/src/mpid/ch3/src/ch3u_recvq.c
index 01e3dcb..501edd4 100644
--- a/src/mpid/ch3/src/ch3u_recvq.c
+++ b/src/mpid/ch3/src/ch3u_recvq.c
@@ -139,7 +139,7 @@ int MPIDI_CH3U_Recvq_init(void)
MPI_T_PVAR_CLASS_LEVEL,
MPI_UNSIGNED,
MPI_T_ENUM_NULL,
- "length of the unexpected messsage receive queue",
+ "length of the unexpected message receive queue",
MPI_T_BIND_NO_OBJECT,
/*readonly=*/TRUE,
/*continuous=*/TRUE,
@@ -156,7 +156,7 @@ int MPIDI_CH3U_Recvq_init(void)
MPI_T_PVAR_CLASS_COUNTER,
MPI_AINT,
MPI_T_ENUM_NULL,
- "number of search passes on the messsage receive queue",
+ "number of search passes on the message receive queue",
MPI_T_BIND_NO_OBJECT,
/*readonly=*/FALSE,
/*continuous=*/TRUE,
@@ -173,7 +173,7 @@ int MPIDI_CH3U_Recvq_init(void)
MPI_T_PVAR_CLASS_COUNTER,
MPI_AINT,
MPI_T_ENUM_NULL,
- "number of search passes on the messsage receive queue",
+ "number of search passes on the message receive queue",
MPI_T_BIND_NO_OBJECT,
/*readonly=*/FALSE,
/*continuous=*/TRUE,
@@ -246,7 +246,7 @@ fn_fail:
* MPIDI_CH3U_Recvq_FU()
*
* Search for a matching request in the unexpected receive queue. Return
- * true if one is found, false otherwise. If the status arguement is
+ * true if one is found, false otherwise. If the status argument is
* not MPI_STATUS_IGNORE, return information about the request in that
* parameter. This routine is used by mpid_probe and mpid_iprobe.
*
diff --git a/src/mpid/ch3/src/mpid_isend.c b/src/mpid/ch3/src/mpid_isend.c
index ae932a6..2aaadeb 100644
--- a/src/mpid/ch3/src/mpid_isend.c
+++ b/src/mpid/ch3/src/mpid_isend.c
@@ -122,7 +122,7 @@ int MPID_Isend(const void * buf, int count, MPI_Datatype datatype, int rank,
MPIDI_CH3_GET_EAGER_THRESHOLD(&eager_threshold, comm, vc);
- /* FIXME: flow control: limit number of outstanding eager messsages
+ /* FIXME: flow control: limit number of outstanding eager messages
containing data and need to be buffered by the receiver */
if (data_sz + sizeof(MPIDI_CH3_Pkt_eager_send_t) <= eager_threshold)
{
diff --git a/src/mpid/ch3/src/mpid_send.c b/src/mpid/ch3/src/mpid_send.c
index 90dd507..0328b0c 100644
--- a/src/mpid/ch3/src/mpid_send.c
+++ b/src/mpid/ch3/src/mpid_send.c
@@ -116,7 +116,7 @@ int MPID_Send(const void * buf, int count, MPI_Datatype datatype, int rank,
MPIDI_CH3_GET_EAGER_THRESHOLD(&eager_threshold, comm, vc);
- /* FIXME: flow control: limit number of outstanding eager messsages
+ /* FIXME: flow control: limit number of outstanding eager messages
containing data and need to be buffered by the receiver */
#ifdef USE_EAGER_SHORT
if (dt_contig && data_sz <= MPIDI_EAGER_SHORT_SIZE) {
http://git.mpich.org/mpich.git/commitdiff/dd76a0f2f90bf4d79ac75a5d4419e498f…
commit dd76a0f2f90bf4d79ac75a5d4419e498f9770c30
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sun Apr 7 09:37:21 2013 -0500
Fix typo -- the performance tests were not correctly disabled in
released versions.
Reviewed by dinan.
diff --git a/maint/release.pl b/maint/release.pl
index 353a5bf..2cf3ab4 100755
--- a/maint/release.pl
+++ b/maint/release.pl
@@ -254,7 +254,7 @@ print("done\n");
# Disable unnecessary tests in the release tarball
print("===> Disabling unnecessary tests in the main package... ");
chdir($expdir);
-run_cmd("perl -p -i -e 's/^perf\$/#perf/' test/mpi/testlist.in");
+run_cmd("perl -p -i -e 's/^@perfdir@\$/#@perfdir@/' test/mpi/testlist.in");
run_cmd("perl -p -i -e 's/^large_message /#large_message /' test/mpi/pt2pt/testlist");
run_cmd("perl -p -i -e 's/^large-count /#large-count /' test/mpi/datatype/testlist");
print("done\n");
http://git.mpich.org/mpich.git/commitdiff/8fb17a1dc7a48d9695cf21aedf4f54b00…
commit 8fb17a1dc7a48d9695cf21aedf4f54b00da465e2
Author: Pavan Balaji <balaji(a)mcs.anl.gov>
Date: Sun Mar 24 12:34:55 2013 -0500
Bug-fix: We should use HYDU_FUNC instead of __func__ directly. We
already checked for this, but accidentally used __func__ directly
after the check.
Reviewed by dinan.
diff --git a/src/pm/hydra/include/hydra.h b/src/pm/hydra/include/hydra.h
index de7fcbb..3689417 100644
--- a/src/pm/hydra/include/hydra.h
+++ b/src/pm/hydra/include/hydra.h
@@ -374,7 +374,7 @@ struct HYD_user_global {
#define HYDU_error_printf(...) \
{ \
HYDU_dump_prefix(stderr); \
- HYDU_dump_noprefix(stderr, "%s (%s:%d): ", __func__, __FILE__, __LINE__); \
+ HYDU_dump_noprefix(stderr, "%s (%s:%d): ", HYDU_FUNC, __FILE__, __LINE__); \
HYDU_dump_noprefix(stderr, __VA_ARGS__); \
}
#elif defined __FILE__
-----------------------------------------------------------------------
Summary of changes:
maint/release.pl | 2 +-
src/env/mpicc.txt | 2 +-
src/env/mpicxx.txt | 2 +-
src/env/mpif77.txt | 2 +-
src/env/mpif90.txt | 2 +-
src/mpi/attr/attr_get.c | 2 +-
src/mpi/attr/comm_create_keyval.c | 2 +-
src/mpi/attr/comm_get_attr.c | 2 +-
src/mpi/attr/keyval_create.c | 2 +-
src/mpi/attr/type_get_attr.c | 2 +-
src/mpi/comm/comm_split.c | 2 +-
src/mpi/comm/comm_split_type.c | 2 +-
src/mpi/errhan/errnames.txt | 2 +-
src/mpi/pt2pt/startall.c | 2 +-
src/mpi/romio/mpi-io/iread_at.c | 2 +-
src/mpi/romio/mpi-io/iwrite_at.c | 2 +-
src/mpi/romio/mpi-io/rd_atallb.c | 2 +-
src/mpi/romio/mpi-io/rd_atalle.c | 2 +-
src/mpi/romio/mpi-io/read_at.c | 2 +-
src/mpi/romio/mpi-io/read_atall.c | 2 +-
src/mpi/romio/mpi-io/wr_atallb.c | 2 +-
src/mpi/romio/mpi-io/wr_atalle.c | 2 +-
src/mpi/romio/mpi-io/write_at.c | 2 +-
src/mpi/romio/mpi-io/write_atall.c | 2 +-
src/mpid/ch3/channels/nemesis/netmod/scif/scifrw.c | 2 +-
src/mpid/ch3/src/ch3u_recvq.c | 8 ++++----
src/mpid/ch3/src/mpid_isend.c | 2 +-
src/mpid/ch3/src/mpid_send.c | 2 +-
src/pm/hydra/include/hydra.h | 2 +-
29 files changed, 32 insertions(+), 32 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.0.3-11-g3f38e1b
by noreply@mpich.org 07 Apr '13
by noreply@mpich.org 07 Apr '13
07 Apr '13
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 3f38e1b9ff5ecc9a916aec41fb964c1cec2e3622 (commit)
via 24c1c9351a1811baa84b029dd3163d2ece0995b4 (commit)
via ca42e9d4fccddab38643445e891927e06a90c01e (commit)
from 83115a2f6317a91a4858ba1202bd902e18e41845 (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/3f38e1b9ff5ecc9a916aec41fb964c1ce…
commit 3f38e1b9ff5ecc9a916aec41fb964c1cec2e3622
Author: Dave Goodell <goodell(a)mcs.anl.gov>
Date: Thu Apr 4 21:38:08 2013 -0500
report context ID counts on allocation failure
When we run out of context IDs, we now report how many context IDs are
free on each process in the input communicator. This should make it
easier to identify the causes of bad allocation patterns in the wild.
Reviewed-by: dinan
diff --git a/src/mpi/comm/commutil.c b/src/mpi/comm/commutil.c
index f07bd9d..95fcb6f 100644
--- a/src/mpi/comm/commutil.c
+++ b/src/mpi/comm/commutil.c
@@ -859,11 +859,25 @@ int MPIR_Get_contextid_sparse_group(MPID_Comm *comm_ptr, MPID_Group *group_ptr,
if (ignore_id) {
*context_id = MPIR_Locate_context_bit(local_mask);
- MPIU_ERR_CHKANDJUMP(!(*context_id), mpi_errno, MPIR_ERR_RECOVERABLE, "**toomanycomm");
+ if (*context_id == 0) {
+ int nfree = -1;
+ int ntotal = -1;
+ MPIR_ContextMaskStats(&nfree, &ntotal);
+ MPIU_ERR_SETANDJUMP3(mpi_errno, MPIR_ERR_RECOVERABLE,
+ "**toomanycomm", "**toomanycomm %d %d %d",
+ nfree, ntotal, ignore_id);
+ }
}
else {
*context_id = MPIR_Find_and_allocate_context_id(local_mask);
- MPIU_ERR_CHKANDJUMP(!(*context_id), mpi_errno, MPIR_ERR_RECOVERABLE, "**toomanycomm");
+ if (*context_id == 0) {
+ int nfree = -1;
+ int ntotal = -1;
+ MPIR_ContextMaskStats(&nfree, &ntotal);
+ MPIU_ERR_SETANDJUMP3(mpi_errno, MPIR_ERR_RECOVERABLE,
+ "**toomanycomm", "**toomanycomm %d %d %d",
+ nfree, ntotal, ignore_id);
+ }
}
fn_exit:
@@ -1114,6 +1128,8 @@ int MPIR_Get_contextid_sparse_group(MPID_Comm *comm_ptr, MPID_Group *group_ptr,
* succeed because there is no common context ID. */
if (*context_id == 0 && local_mask[ALL_OWN_MASK_FLAG] == 1) {
/* --BEGIN ERROR HANDLING-- */
+ int nfree = 0;
+ int ntotal = 0;
if (own_mask) {
MPIU_THREAD_CS_ENTER(CONTEXTID,);
mask_in_use = 0;
@@ -1124,7 +1140,10 @@ int MPIR_Get_contextid_sparse_group(MPID_Comm *comm_ptr, MPID_Group *group_ptr,
MPIU_THREAD_CS_EXIT(CONTEXTID,);
}
- MPIU_ERR_SETANDJUMP(mpi_errno, MPI_ERR_OTHER, "**toomanycomm");
+ MPIR_ContextMaskStats(&nfree, &ntotal);
+ MPIU_ERR_SETANDJUMP3(mpi_errno, MPIR_ERR_RECOVERABLE,
+ "**toomanycommfrag", "**toomanycommfrag %d %d %d",
+ nfree, ntotal, ignore_id);
/* --END ERROR HANDLING-- */
}
@@ -1169,7 +1188,14 @@ static int gcn_helper(MPID_Comm *comm, int tag, void *state)
MPIR_Context_id_t newctxid;
newctxid = MPIR_Find_and_allocate_context_id(st->local_mask);
- MPIU_ERR_CHKANDJUMP(!newctxid, mpi_errno, MPIR_ERR_RECOVERABLE, "**toomanycomm");
+ if (!newctxid) {
+ int nfree = -1;
+ int ntotal = -1;
+ MPIR_ContextMaskStats(&nfree, &ntotal);
+ MPIU_ERR_SETANDJUMP3(mpi_errno, MPIR_ERR_RECOVERABLE,
+ "**toomanycomm", "**toomanycomm %d %d %d",
+ nfree, ntotal, /*ignore_id=*/0);
+ }
if (st->ctx0)
*st->ctx0 = newctxid;
@@ -1528,7 +1554,12 @@ int MPIR_Comm_copy( MPID_Comm *comm_ptr, int size, MPID_Comm **outcomm_ptr )
}
/* --BEGIN ERROR HANDLING-- */
if (new_context_id == 0) {
- MPIU_ERR_SETANDJUMP(mpi_errno, MPI_ERR_OTHER, "**toomanycomm" );
+ int nfree = -1;
+ int ntotal = -1;
+ MPIR_ContextMaskStats(&nfree, &ntotal);
+ MPIU_ERR_SETANDJUMP3(mpi_errno, MPIR_ERR_RECOVERABLE,
+ "**toomanycomm", "**toomanycomm %d %d %d",
+ nfree, ntotal, /*ignore_id=*/0);
}
/* --END ERROR HANDLING-- */
diff --git a/src/mpi/errhan/errnames.txt b/src/mpi/errhan/errnames.txt
index 32bf69d..8e78c48 100644
--- a/src/mpi/errhan/errnames.txt
+++ b/src/mpi/errhan/errnames.txt
@@ -91,6 +91,9 @@ was not started with MPI_GREQUEST_START
**attrsentinal:Internal fields in an attribute have been overwritten; \
possible errors in using the attribute value in user code.
**toomanycomm:Too many communicators
+**toomanycomm %d %d %d:Too many communicators (%d/%d free on this process; ignore_id=%d)
+**toomanycommfrag: Cannot allocate context ID because of fragmentation
+**toomanycommfrag %d %d %d: Cannot allocate context ID because of fragmentation (%d/%d free on this process; ignore_id=%d)
**commperm:Cannot free permanent communicator
**commperm %s:Cannot free permanent communicator %s
**group:Invalid group
http://git.mpich.org/mpich.git/commitdiff/24c1c9351a1811baa84b029dd3163d2ec…
commit 24c1c9351a1811baa84b029dd3163d2ece0995b4
Author: Dave Goodell <goodell(a)mcs.anl.gov>
Date: Thu Apr 4 21:36:46 2013 -0500
add `MPIR_ContextMaskStats` debug routine
This should be useful for debugging context ID allocation issues in the
wild.
Reviewed-by: dinan
diff --git a/src/mpi/comm/commutil.c b/src/mpi/comm/commutil.c
index a65a4af..f07bd9d 100644
--- a/src/mpi/comm/commutil.c
+++ b/src/mpi/comm/commutil.c
@@ -630,6 +630,41 @@ char *MPIR_ContextMaskToStr( void )
return bufstr;
}
+/* Returns useful debugging information about the context ID mask bit-vector.
+ * This includes the total number of possibly valid IDs (the size of the ID
+ * space) and the number of free IDs remaining in the mask. NULL arguments are
+ * fine, they will be ignored.
+ *
+ * This routine is for debugging in very particular situations and does not
+ * attempt to control concurrent access to the mask vector.
+ *
+ * Callers should own the context ID critical section, or should be prepared to
+ * suffer data races in any fine-grained locking configuration.
+ *
+ * The routine is non-static in order to permit "in the field debugging". We
+ * provide a prototype here to keep the compiler happy. */
+void MPIR_ContextMaskStats(int *free_ids, int *total_ids);
+void MPIR_ContextMaskStats(int *free_ids, int *total_ids)
+{
+ if (free_ids) {
+ int i, j;
+ *free_ids = 0;
+
+ /* if this ever needs to be fast, use a lookup table to do a per-nibble
+ * or per-byte lookup of the popcount instead of checking each bit at a
+ * time (or just track the count when manipulating the mask and keep
+ * that count stored in a variable) */
+ for (i = 0; i < MPIR_MAX_CONTEXT_MASK; ++i) {
+ for (j = 0; j < sizeof(context_mask[0])*8; ++j) {
+ *free_ids += (context_mask[i] & (0x1 << j)) >> j;
+ }
+ }
+ }
+ if (total_ids) {
+ *total_ids = MPIR_MAX_CONTEXT_MASK*sizeof(context_mask[0])*8;
+ }
+}
+
#ifdef MPICH_DEBUG_HANDLEALLOC
static int MPIU_CheckContextIDsOnFinalize(void *context_mask_ptr)
{
http://git.mpich.org/mpich.git/commitdiff/ca42e9d4fccddab38643445e891927e06…
commit ca42e9d4fccddab38643445e891927e06a90c01e
Author: Dave Goodell <goodell(a)mcs.anl.gov>
Date: Thu Apr 4 13:10:42 2013 -0500
make `MPIR_ContextMaskToStr` non-static
This permits external users/developers to use this routine for debugging
context ID allocation problems in the field. At some point we may want
to expose this info through the `MPI_T_` interface.
Note that this isn't the way I would do it if I were building this stuff
from scratch, I'm just taking a direct path from what we've got to
something more useful.
Reviewed-by: dinan
diff --git a/src/mpi/comm/commutil.c b/src/mpi/comm/commutil.c
index 8dc7b55..a65a4af 100644
--- a/src/mpi/comm/commutil.c
+++ b/src/mpi/comm/commutil.c
@@ -599,12 +599,22 @@ int MPIR_Comm_is_node_consecutive(MPID_Comm * comm)
static uint32_t context_mask[MPIR_MAX_CONTEXT_MASK];
static int initialize_context_mask = 1;
-#ifdef USE_DBG_LOGGING
/* Create a string that contains the context mask. This is
used only with the logging interface, and must be used by one thread at
a time (should this be enforced by the logging interface?).
- Converts the mask to hex and returns a pointer to that string */
-static char *MPIR_ContextMaskToStr( void )
+ Converts the mask to hex and returns a pointer to that string.
+
+ Callers should own the context ID critical section, or should be prepared to
+ suffer data races in any fine-grained locking configuration.
+
+ This routine is no longer static in order to allow advanced users and
+ developers to debug context ID problems "in the field". We provide a
+ prototype here to keep the compiler happy, but users will need to put a
+ (possibly "extern") copy of the prototype in their own code in order to call
+ this routine.
+ */
+char *MPIR_ContextMaskToStr( void );
+char *MPIR_ContextMaskToStr( void )
{
static char bufstr[MPIR_MAX_CONTEXT_MASK*8+1];
int i;
@@ -619,7 +629,6 @@ static char *MPIR_ContextMaskToStr( void )
}
return bufstr;
}
-#endif
#ifdef MPICH_DEBUG_HANDLEALLOC
static int MPIU_CheckContextIDsOnFinalize(void *context_mask_ptr)
-----------------------------------------------------------------------
Summary of changes:
src/mpi/comm/commutil.c | 93 ++++++++++++++++++++++++++++++++++++++----
src/mpi/errhan/errnames.txt | 3 +
2 files changed, 87 insertions(+), 9 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0