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
May 2014
- 1 participants
- 33 discussions
[mpich] MPICH primary repository branch, master, updated. v3.1-245-g20ff1b2
by noreply@mpich.org 12 May '14
by noreply@mpich.org 12 May '14
12 May '14
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 20ff1b2995ad8cb78f8913152074b71b19787b6f (commit)
via 90e15e9b0cfb6bc74c9413a08826b1bd28976512 (commit)
via 062e195182078c4ca12ac601530133d57ce9d914 (commit)
via 86c80f9c492cac30a2a49d1a55f13928e407bb7e (commit)
from df15b7f3d3683d67af651d436b5816ca5f0383e1 (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/20ff1b2995ad8cb78f8913152074b71b1…
commit 20ff1b2995ad8cb78f8913152074b71b19787b6f
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Fri May 9 16:01:25 2014 -0500
typo in ROMIO runtests
diff --git a/src/mpi/romio/test/runtests.in b/src/mpi/romio/test/runtests.in
index 6fb3835..2b8643e 100644
--- a/src/mpi/romio/test/runtests.in
+++ b/src/mpi/romio/test/runtests.in
@@ -381,7 +381,7 @@ $mpirun -np 2 ./types_with_zeros $FILENAME
CleanExe types_with_zeros
testfiles="$testfiles darray_read.out"
\rm -f darray_read.out
-MakeExe darra_read
+MakeExe darray_read
\rm -f $FILENAME*
echo '**** Testing darray_read ****'
$mpirun -np 4 ./darray_read $FILENAME
http://git.mpich.org/mpich.git/commitdiff/90e15e9b0cfb6bc74c9413a08826b1bd2…
commit 90e15e9b0cfb6bc74c9413a08826b1bd28976512
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Fri May 9 14:26:05 2014 -0500
zero-length blocklens fix for structs
If the 'array_of_blocklens' parameter to MPI_Type_create_struct contains
zeros, those elements have no impact on the type. However, there are
two exceptions: if the type is MPI_LB or MPI_UB, the corresponding
displacement is honored.
See #2073 for more background
Signed-off-by: Rajeev Thakur <thakur(a)mcs.anl.gov>
diff --git a/src/mpi/romio/adio/common/flatten.c b/src/mpi/romio/adio/common/flatten.c
index 42e827d..83e3c1d 100644
--- a/src/mpi/romio/adio/common/flatten.c
+++ b/src/mpi/romio/adio/common/flatten.c
@@ -665,15 +665,17 @@ void ADIOI_Flatten(MPI_Datatype datatype, ADIOI_Flatlist_node *flat,
/* simplest case, current type is basic or contiguous types */
/* By using ADIO_Offset we preserve +/- sign and
avoid >2G integer arithmetic problems */
- ADIO_Offset blocklength = ints[1+n];
- j = *curr_index;
- flat->indices[j] = st_offset + adds[n];
- MPI_Type_size_x(types[n], &old_size);
- flat->blocklens[j] = blocklength * old_size;
+ if (ints[1+n] > 0 || types[n] == MPI_LB || types[n] == MPI_UB) {
+ ADIO_Offset blocklength = ints[1+n];
+ j = *curr_index;
+ flat->indices[j] = st_offset + adds[n];
+ MPI_Type_size_x(types[n], &old_size);
+ flat->blocklens[j] = blocklength * old_size;
#ifdef FLATTEN_DEBUG
- DBG_FPRINTF(stderr,"ADIOI_Flatten:: simple adds[%#X] "MPI_AINT_FMT_HEX_SPEC", flat->indices[%#llX] %#llX, flat->blocklens[%#llX] %#llX\n",n,adds[n],j, flat->indices[j], j, flat->blocklens[j]);
+ DBG_FPRINTF(stderr,"ADIOI_Flatten:: simple adds[%#X] "MPI_AINT_FMT_HEX_SPEC", flat->indices[%#llX] %#llX, flat->blocklens[%#llX] %#llX\n",n,adds[n],j, flat->indices[j], j, flat->blocklens[j]);
#endif
- (*curr_index)++;
+ (*curr_index)++;
+ }
}
else {
/* current type made up of noncontiguous derived types */
http://git.mpich.org/mpich.git/commitdiff/062e195182078c4ca12ac601530133d57…
commit 062e195182078c4ca12ac601530133d57ce9d914
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Fri May 9 11:38:36 2014 -0500
rename indexed_zeros
now that the test also tests hindexed and struct types, it needs a
better name
diff --git a/src/mpi/romio/test/Makefile.am b/src/mpi/romio/test/Makefile.am
index 71bf7b9..caa5be9 100644
--- a/src/mpi/romio/test/Makefile.am
+++ b/src/mpi/romio/test/Makefile.am
@@ -25,7 +25,7 @@ AM_FFLAGS = $(USER_FFLAGS)
CTESTS = simple perf async coll_test coll_perf misc file_info excl large_array \
atomicity noncontig i_noncontig noncontig_coll split_coll shared_fp \
large_file psimple error status noncontig_coll2 aggregation1 aggregation2 \
- async-multiple ordered_fp hindexed external32 indexed_zeros darray_read
+ async-multiple ordered_fp hindexed external32 types_with_zeros darray_read
FTESTS = fcoll_test fperf fmisc pfcoll_test
diff --git a/src/mpi/romio/test/runtests.in b/src/mpi/romio/test/runtests.in
index 2aa2ebb..6fb3835 100644
--- a/src/mpi/romio/test/runtests.in
+++ b/src/mpi/romio/test/runtests.in
@@ -372,13 +372,13 @@ echo '**** Testing status.c ****'
$mpirun -np 1 ./status -fname $FILENAME
# CheckOutput status
CleanExe status
-testfiles="$testfiles indexed_zeros.out"
-\rm -f indexed_zeros.out
-MakeExe indexed_zeros
+testfiles="$testfiles types_with_zeros.out"
+\rm -f types_with_zeros.out
+MakeExe types_with_zeros
\rm -f $FILENAME*
-echo '**** Testing indexed_zeros ****'
-$mpirun -np 2 ./indexed_zeros $FILENAME
-CleanExe indexed_zeros
+echo '**** Testing types_with_zeros ****'
+$mpirun -np 2 ./types_with_zeros $FILENAME
+CleanExe types_with_zeros
testfiles="$testfiles darray_read.out"
\rm -f darray_read.out
MakeExe darra_read
diff --git a/src/mpi/romio/test/indexed_zeros.c b/src/mpi/romio/test/types_with_zeros.c
similarity index 100%
rename from src/mpi/romio/test/indexed_zeros.c
rename to src/mpi/romio/test/types_with_zeros.c
http://git.mpich.org/mpich.git/commitdiff/86c80f9c492cac30a2a49d1a55f13928e…
commit 86c80f9c492cac30a2a49d1a55f13928e407bb7e
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Fri May 9 11:35:48 2014 -0500
exercise a few more datatypes
the hindexed and struct datatypes also take "array of blocklen"
parameters which we should ignore.
diff --git a/src/mpi/romio/test/indexed_zeros.c b/src/mpi/romio/test/indexed_zeros.c
index 96bd2cd..a4b0c15 100644
--- a/src/mpi/romio/test/indexed_zeros.c
+++ b/src/mpi/romio/test/indexed_zeros.c
@@ -18,13 +18,21 @@ static void handle_error(int errcode, const char *str)
MPI_Abort(MPI_COMM_WORLD, 1);
}
-int test_indexed_with_zeros(char *filename)
+enum {
+ INDEXED,
+ HINDEXED,
+ STRUCT
+} testcases;
+
+int test_indexed_with_zeros(char *filename, int testcase)
{
int i, rank, np, buflen, num, err, nr_errors;
int nelms[MAXLEN], buf[MAXLEN], indices[MAXLEN], blocklen[MAXLEN];
MPI_File fh;
MPI_Status status;
MPI_Datatype filetype;
+ MPI_Datatype types[MAXLEN];
+ MPI_Aint addrs[MAXLEN];
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &np);
@@ -47,15 +55,32 @@ int test_indexed_with_zeros(char *filename)
}
MPI_Barrier(MPI_COMM_WORLD);
- /* define a filetype using indexed constructor */
+ /* define a filetype with spurious leading zeros */
buflen = num = 0;
for (i=0; i<MAXLEN; i++) {
buflen += nelms[i];
indices[num] = i;
+ addrs[num] = i*sizeof(int);
blocklen[num] = nelms[i];
+ types[num] = MPI_INT;
num++;
}
- MPI_Type_indexed(num, blocklen, indices, MPI_INT, &filetype);
+ switch (testcase) {
+ case INDEXED:
+ MPI_Type_indexed(num, blocklen, indices, MPI_INT, &filetype);
+ break;
+ case HINDEXED:
+ MPI_Type_hindexed(num, blocklen, addrs, MPI_INT, &filetype);
+ break;
+ case STRUCT:
+ MPI_Type_create_struct(num, blocklen, addrs, types, &filetype);
+ break;
+ default:
+ fprintf(stderr, "unknown testcase!\n");
+ return(-100);
+
+ }
+
MPI_Type_commit(&filetype);
/* initialize write buffer and write to file*/
@@ -81,7 +106,8 @@ int test_indexed_with_zeros(char *filename)
for (i=0; i<MAXLEN; i++) {
if (buf[i] < 0) {
nr_errors++;
- printf("Error: unexpected value at buf[%d] == %d\n",i,buf[i]);
+ printf("Error: unexpected value for case %d at buf[%d] == %d\n",
+ testcase,i,buf[i]);
}
}
}
@@ -101,7 +127,9 @@ int main(int argc, char **argv)
if (rank == 0) fprintf(stderr,"Must run on 2 MPI processes\n");
MPI_Finalize(); return 1;
}
- nr_errors += test_indexed_with_zeros(argv[1]);
+ nr_errors += test_indexed_with_zeros(argv[1], INDEXED);
+ nr_errors += test_indexed_with_zeros(argv[1], HINDEXED);
+ nr_errors += test_indexed_with_zeros(argv[1], STRUCT);
if (rank == 0 && nr_errors == 0) printf(" No Errors\n");
-----------------------------------------------------------------------
Summary of changes:
src/mpi/romio/adio/common/flatten.c | 16 +++++----
src/mpi/romio/test/Makefile.am | 2 +-
src/mpi/romio/test/runtests.in | 14 ++++----
.../test/{indexed_zeros.c => types_with_zeros.c} | 38 +++++++++++++++++---
4 files changed, 50 insertions(+), 20 deletions(-)
rename src/mpi/romio/test/{indexed_zeros.c => types_with_zeros.c} (76%)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.1-241-gdf15b7f
by noreply@mpich.org 09 May '14
by noreply@mpich.org 09 May '14
09 May '14
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 df15b7f3d3683d67af651d436b5816ca5f0383e1 (commit)
from 9c4b3bbd6a9c26d76e4e38bbacede668b0e08659 (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/df15b7f3d3683d67af651d436b5816ca5…
commit df15b7f3d3683d67af651d436b5816ca5f0383e1
Author: Pavan Balaji <balaji(a)anl.gov>
Date: Fri May 9 12:37:44 2014 -0500
Fix ibsend failures with the pathscale compilers.
A bunch of arbitrary changes were made to the ibsend.c test in
[85e4a507]. It included using different pthread handles, which is
correct. But the same commit also included: (1) setting a joinable
pthread attribute, (2) using pthread_exit to force kill threads, and
(3) several updates to the documentation. The first change
isunnecessary since it's set by default. The second change is plainly
wrong. pthreads should be cleanly joined, not force killed. The
third change is fine, but should have been a separate commit.
This patch fixes the second change and uses "return NULL" instead of
pthread_exit.
Signed-off-by: Ken Raffenetti <raffenet(a)mcs.anl.gov>
diff --git a/test/mpi/threads/pt2pt/ibsend.c b/test/mpi/threads/pt2pt/ibsend.c
index 6050c00..1e634c4 100644
--- a/test/mpi/threads/pt2pt/ibsend.c
+++ b/test/mpi/threads/pt2pt/ibsend.c
@@ -43,7 +43,7 @@ void *receiver(void *ptr)
MPI_Recv(buf, MSGSIZE, MPI_CHAR, MPI_ANY_SOURCE, MPI_ANY_TAG,
MPI_COMM_WORLD, MPI_STATUS_IGNORE);
- pthread_exit(NULL);
+ return NULL;
}
@@ -53,7 +53,7 @@ void *sender_bsend(void *ptr)
MPI_Bsend(buffer, MSGSIZE, MPI_CHAR, (rank + 1) % size, 0,
MPI_COMM_WORLD);
- pthread_exit(NULL);
+ return NULL;
}
void *sender_ibsend(void *ptr)
@@ -64,7 +64,7 @@ void *sender_ibsend(void *ptr)
MPI_COMM_WORLD, &req);
MPI_Wait(&req, MPI_STATUS_IGNORE);
- pthread_exit(NULL);
+ return NULL;
}
void *sender_isend(void *ptr)
@@ -75,7 +75,7 @@ void *sender_isend(void *ptr)
MPI_COMM_WORLD, &req);
MPI_Wait(&req, MPI_STATUS_IGNORE);
- pthread_exit(NULL);
+ return NULL;
}
void *sender_send(void *ptr)
@@ -84,7 +84,7 @@ void *sender_send(void *ptr)
MPI_Send(buffer, MSGSIZE, MPI_CHAR, (rank + 1) % size, 0,
MPI_COMM_WORLD);
- pthread_exit(NULL);
+ return NULL;
}
int main(int argc, char *argv[])
-----------------------------------------------------------------------
Summary of changes:
test/mpi/threads/pt2pt/ibsend.c | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.1-240-g9c4b3bb
by noreply@mpich.org 09 May '14
by noreply@mpich.org 09 May '14
09 May '14
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 9c4b3bbd6a9c26d76e4e38bbacede668b0e08659 (commit)
from 793fca23719c92b92d1c20e8b05cb603889b838a (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/9c4b3bbd6a9c26d76e4e38bbacede668b…
commit 9c4b3bbd6a9c26d76e4e38bbacede668b0e08659
Author: Michael Blocksome <blocksom(a)us.ibm.com>
Date: Fri May 9 14:48:18 2014 -0500
pamid: detect smp by default on bgq
diff --git a/src/mpid/pamid/include/mpidi_platform.h b/src/mpid/pamid/include/mpidi_platform.h
index ce6b232..e9d6e5b 100644
--- a/src/mpid/pamid/include/mpidi_platform.h
+++ b/src/mpid/pamid/include/mpidi_platform.h
@@ -84,7 +84,7 @@ typedef int32_t MPID_Node_id_t;
#define PAMIX_IS_LOCAL_TASK
#define PAMIX_IS_LOCAL_TASK_STRIDE (4)
#define PAMIX_IS_LOCAL_TASK_SHIFT (6)
-#define MPIDI_SMP_DETECT_DEFAULT 0
+#define MPIDI_SMP_DETECT_DEFAULT 1
#define TOKEN_FLOW_CONTROL 0
/*
-----------------------------------------------------------------------
Summary of changes:
src/mpid/pamid/include/mpidi_platform.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.1-239-g793fca2
by noreply@mpich.org 09 May '14
by noreply@mpich.org 09 May '14
09 May '14
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 793fca23719c92b92d1c20e8b05cb603889b838a (commit)
via cbb0284f68dcd44d6a585765783a39f762fd2810 (commit)
via 3683a3558d2d83d5dcb4520303e51629e899d874 (commit)
from 75f0eaeb57ad25fdaf95c4d52419b4852016ea4b (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/793fca23719c92b92d1c20e8b05cb6038…
commit 793fca23719c92b92d1c20e8b05cb603889b838a
Author: Michael Blocksome <blocksom(a)us.ibm.com>
Date: Fri May 9 11:22:55 2014 -0500
pamid: implement comm_split_type hook.
diff --git a/src/mpid/pamid/src/mpid_init.c b/src/mpid/pamid/src/mpid_init.c
index 2cd5b62..51ccd9b 100644
--- a/src/mpid/pamid/src/mpid_init.c
+++ b/src/mpid/pamid/src/mpid_init.c
@@ -326,6 +326,39 @@ static struct
#endif
};
+
+#undef FUNCNAME
+#define FUNCNAME split_type
+#undef FCNAME
+#define FCNAME MPIDI_QUOTE(FUNCNAME)
+static int split_type(MPID_Comm * comm_ptr, int stype, int key,
+ MPID_Info *info_ptr, MPID_Comm ** newcomm_ptr)
+{
+ MPID_Node_id_t id;
+ int nid;
+ int mpi_errno = MPI_SUCCESS;
+
+ mpi_errno = MPID_Get_node_id(comm_ptr, comm_ptr->rank, &id);
+ if (mpi_errno) MPIU_ERR_POP(mpi_errno);
+
+ nid = (stype == MPI_COMM_TYPE_SHARED) ? id : MPI_UNDEFINED;
+ mpi_errno = MPIR_Comm_split_impl(comm_ptr, nid, key, newcomm_ptr);
+ if (mpi_errno) MPIU_ERR_POP(mpi_errno);
+
+ fn_exit:
+ return mpi_errno;
+
+ /* --BEGIN ERROR HANDLING-- */
+ fn_fail:
+ goto fn_exit;
+ /* --END ERROR HANDLING-- */
+}
+
+static MPID_CommOps comm_fns = {
+ split_type
+};
+
+
/* ------------------------------ */
/* Collective selection extension */
/* ------------------------------ */
@@ -1194,6 +1227,8 @@ int MPID_Init(int * argc,
char *world_tasks;
pami_result_t rc;
+ /* Override split_type */
+ MPID_Comm_fns = &comm_fns;
/* ------------------------------------------------------------------------------- */
/* Initialize the pami client to get the process rank; needed for env var output. */
http://git.mpich.org/mpich.git/commitdiff/cbb0284f68dcd44d6a585765783a39f76…
commit cbb0284f68dcd44d6a585765783a39f762fd2810
Author: Michael Blocksome <blocksom(a)us.ibm.com>
Date: Fri May 9 11:34:10 2014 -0500
pamid: fix bgq 'is_local_task' extension bug.
diff --git a/src/mpid/pamid/src/pamix/pamix.c b/src/mpid/pamid/src/pamix/pamix.c
index 1d399b1..78fb4c6 100644
--- a/src/mpid/pamid/src/pamix/pamix.c
+++ b/src/mpid/pamid/src/pamix/pamix.c
@@ -293,7 +293,7 @@ PAMIX_is_local_task_get_node_info(pami_task_t task,
coords[1] * info->size[0] +
coords[2] * info->size[0] * info->size[1] +
coords[3] * info->size[0] * info->size[1] * info->size[2] +
- coords[1] * info->size[0] * info->size[1] * info->size[2] * info->size[3];
+ coords[4] * info->size[0] * info->size[1] * info->size[2] * info->size[3];
*max_nodes = info->size[0] * info->size[1] * info->size[2] * info->size[3] * info->size[4];
http://git.mpich.org/mpich.git/commitdiff/3683a3558d2d83d5dcb4520303e51629e…
commit 3683a3558d2d83d5dcb4520303e51629e899d874
Author: Michael Blocksome <blocksom(a)us.ibm.com>
Date: Fri May 9 11:22:05 2014 -0500
pamid: 'gracefully degrade' instead of error out when node info is not available
diff --git a/src/mpid/pamid/src/mpidi_util.c b/src/mpid/pamid/src/mpidi_util.c
index d6e3d84..aba5bb6 100644
--- a/src/mpid/pamid/src/mpidi_util.c
+++ b/src/mpid/pamid/src/mpidi_util.c
@@ -1918,13 +1918,20 @@ int MPID_Get_node_id(MPID_Comm *comm, int rank, MPID_Node_id_t *id_p)
uint32_t node_id;
uint32_t offset;
uint32_t max_nodes;
- if(!PAMIX_Extensions.is_local_task.node_info)
- MPIU_ERR_SETANDJUMP(mpi_errno, MPI_ERR_OTHER, "**notimpl");
- pami_result_t rc = PAMIX_Extensions.is_local_task.node_info(comm->vcr[rank]->taskid,
- &node_id,&offset,&max_nodes);
- if(rc != PAMI_SUCCESS) MPIU_ERR_SETANDJUMP(mpi_errno, MPI_ERR_OTHER, "**notimpl");
- *id_p = node_id;
+ if(!PAMIX_Extensions.is_local_task.node_info)
+ {
+ *id_p = rank;
+ }
+ else
+ {
+ pami_result_t rc = PAMIX_Extensions.is_local_task.node_info(comm->vcr[rank]->taskid,
+ &node_id,&offset,&max_nodes);
+ if(rc != PAMI_SUCCESS)
+ *id_p = rank;
+ else
+ *id_p = node_id;
+ }
fn_fail:
return mpi_errno;
-----------------------------------------------------------------------
Summary of changes:
src/mpid/pamid/src/mpid_init.c | 35 +++++++++++++++++++++++++++++++++++
src/mpid/pamid/src/mpidi_util.c | 19 +++++++++++++------
src/mpid/pamid/src/pamix/pamix.c | 2 +-
3 files changed, 49 insertions(+), 7 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.1-236-g75f0eae
by noreply@mpich.org 08 May '14
by noreply@mpich.org 08 May '14
08 May '14
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 75f0eaeb57ad25fdaf95c4d52419b4852016ea4b (commit)
from 97114ec5b135538a43fabb45b0d6be9a830b623e (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/75f0eaeb57ad25fdaf95c4d52419b4852…
commit 75f0eaeb57ad25fdaf95c4d52419b4852016ea4b
Author: Michael Blocksome <blocksom(a)us.ibm.com>
Date: Thu May 8 15:15:48 2014 -0500
Document the 'MPIFCLIBNAME' configure environment variable
Signed-off-by: Ken Raffenetti <raffenet(a)mcs.anl.gov>
diff --git a/configure.ac b/configure.ac
index 8a19977..1c45bcc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -850,6 +850,7 @@ m4_map([PAC_SUBCFG_DO_PREREQ], [PAC_SUBCFG_MODULE_LIST])
AC_ARG_VAR([MPILIBNAME],[can be used to override the name of the MPI library (default: "mpi")])
AC_ARG_VAR([PMPILIBNAME],[can be used to override the name of the MPI profiling library (default: "p$MPILIBNAME")])
AC_ARG_VAR([MPICXXLIBNAME],[can be used to override the name of the MPI C++ library (default: "${MPILIBNAME}cxx")])
+AC_ARG_VAR([MPIFCLIBNAME],[can be used to override the name of the MPI fortran library (default: "${MPILIBNAME}fort")])
MPILIBNAME=${MPILIBNAME:-"mpi"}
PMPILIBNAME_set=no
if test -n "$PMPILIBNAME" ; then
-----------------------------------------------------------------------
Summary of changes:
configure.ac | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.1-235-g97114ec
by noreply@mpich.org 08 May '14
by noreply@mpich.org 08 May '14
08 May '14
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 97114ec5b135538a43fabb45b0d6be9a830b623e (commit)
via 664ef28d1a106fd9b3ce5775b627cc318d579ad5 (commit)
via c3d0d8973242553c5b2c83570307bb96357b2906 (commit)
via 5948c2b3339756861714e549fe44eb5b0d88d691 (commit)
from 42056d485bd213fbbf0fb3c8ba9ae9b0350d62ea (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/97114ec5b135538a43fabb45b0d6be9a8…
commit 97114ec5b135538a43fabb45b0d6be9a830b623e
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Thu May 8 14:56:25 2014 -0500
Got a bit carried away zapping zero-length blocks
A partial revert of the portion of commit
50f3d5806e5cf3934ef991eef2d7d238846380d6 : I did not mean to modify
anything in the struct case. I did, though, and that modification
caused a bug in darray datatypes. The zero-length blocklens in the
struct case indicate upper bound and lower bounds and must be respected.
Closes: #2089
No Reviewer
diff --git a/src/mpi/romio/adio/common/flatten.c b/src/mpi/romio/adio/common/flatten.c
index b8708af..42e827d 100644
--- a/src/mpi/romio/adio/common/flatten.c
+++ b/src/mpi/romio/adio/common/flatten.c
@@ -665,19 +665,15 @@ void ADIOI_Flatten(MPI_Datatype datatype, ADIOI_Flatlist_node *flat,
/* simplest case, current type is basic or contiguous types */
/* By using ADIO_Offset we preserve +/- sign and
avoid >2G integer arithmetic problems */
- if (ints[1+n] > 0) {
- ADIO_Offset blocklength = ints[1+n];
- j = *curr_index;
- flat->indices[j] = st_offset + adds[n];
- MPI_Type_size_x(types[n], &old_size);
- flat->blocklens[j] = blocklength * old_size;
+ ADIO_Offset blocklength = ints[1+n];
+ j = *curr_index;
+ flat->indices[j] = st_offset + adds[n];
+ MPI_Type_size_x(types[n], &old_size);
+ flat->blocklens[j] = blocklength * old_size;
#ifdef FLATTEN_DEBUG
- DBG_FPRINTF(stderr,"ADIOI_Flatten:: simple adds[%#X] "MPI_AINT_FMT_HEX_SPEC", flat->indices[%#llX] %#llX, flat->blocklens[%#llX] %#llX\n",n,adds[n],j, flat->indices[j], j, flat->blocklens[j]);
+ DBG_FPRINTF(stderr,"ADIOI_Flatten:: simple adds[%#X] "MPI_AINT_FMT_HEX_SPEC", flat->indices[%#llX] %#llX, flat->blocklens[%#llX] %#llX\n",n,adds[n],j, flat->indices[j], j, flat->blocklens[j]);
#endif
- (*curr_index)++;
- } else {
- flat->count--;
- }
+ (*curr_index)++;
}
else {
/* current type made up of noncontiguous derived types */
@@ -689,17 +685,13 @@ void ADIOI_Flatten(MPI_Datatype datatype, ADIOI_Flatlist_node *flat,
MPI_Type_extent(types[n], &old_extent);
for (m=1; m<ints[1+n]; m++) {
for (i=0; i<num; i++) {
- if (flat->blocklens[j-num] > 0) {
- flat->indices[j] =
- flat->indices[j-num] + ADIOI_AINT_CAST_TO_OFFSET old_extent;
- flat->blocklens[j] = flat->blocklens[j-num];
+ flat->indices[j] =
+ flat->indices[j-num] + ADIOI_AINT_CAST_TO_OFFSET old_extent;
+ flat->blocklens[j] = flat->blocklens[j-num];
#ifdef FLATTEN_DEBUG
- DBG_FPRINTF(stderr,"ADIOI_Flatten:: simple old_extent "MPI_AINT_FMT_HEX_SPEC", flat->indices[%#llX] %#llX, flat->blocklens[%#llX] %#llX\n",old_extent,j, flat->indices[j], j, flat->blocklens[j]);
+ DBG_FPRINTF(stderr,"ADIOI_Flatten:: simple old_extent "MPI_AINT_FMT_HEX_SPEC", flat->indices[%#llX] %#llX, flat->blocklens[%#llX] %#llX\n",old_extent,j, flat->indices[j], j, flat->blocklens[j]);
#endif
- j++;
- } else {
- flat->count --;
- }
+ j++;
}
}
*curr_index = j;
http://git.mpich.org/mpich.git/commitdiff/664ef28d1a106fd9b3ce5775b627cc318…
commit 664ef28d1a106fd9b3ce5775b627cc318d579ad5
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Thu May 8 11:05:23 2014 -0500
update darray_read for test suite conventions
be less verbose, returning only ' No Error\n' if all is well, and return
a non-zero exit code so i may git-bisect with it.
diff --git a/src/mpi/romio/test/darray_read.c b/src/mpi/romio/test/darray_read.c
index 18f075c..e4eb709 100644
--- a/src/mpi/romio/test/darray_read.c
+++ b/src/mpi/romio/test/darray_read.c
@@ -21,7 +21,7 @@ static void handle_error(int errcode, const char *str)
int main(int argc, char *argv[])
{
- int i, j;
+ int i, j, nerrors=0, total_errors=0;
int rank, size;
int bpos;
@@ -83,6 +83,7 @@ int main(int argc, char *argv[])
CHECK(MPI_File_close(&mpi_fh));
for(i = 0; i < size; i++) {
+#ifdef VERBOSE
MPI_Barrier(MPI_COMM_WORLD);
if(rank == i) {
printf("=== Rank %i === (%i elements) \nPacked: ", rank, nelem);
@@ -98,13 +99,26 @@ int main(int argc, char *argv[])
printf("\n\n");
fflush(stdout);
}
+#endif
+ if(rank == i) {
+ for (j=0; j< nelem; j++) {
+ if (pdata[j] != ldata[j]) {
+ fprintf(stderr, "rank %d at index %d: packbuf %4.1f filebuf %4.1f\n",
+ rank, j, pdata[j], ldata[j]);
+ nerrors++;
+ }
+ }
+ }
}
+ MPI_Allreduce(&nerrors, &total_errors, 1, MPI_INT, MPI_SUM, MPI_COMM_WORLD);
+ if (rank == 0 && total_errors == 0)
+ printf(" No Errors\n");
free(ldata);
free(pdata);
MPI_Type_free(&darray);
MPI_Finalize();
- exit(0);
+ exit(total_errors);
}
http://git.mpich.org/mpich.git/commitdiff/c3d0d8973242553c5b2c83570307bb963…
commit c3d0d8973242553c5b2c83570307bb96357b2906
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Thu May 8 09:07:19 2014 -0500
Test case for darray
ROMIO was not handling a particular darray pattern well. Test case
taken from openmpi mailing list.
See ticket #2089
diff --git a/src/mpi/romio/test/Makefile.am b/src/mpi/romio/test/Makefile.am
index 6159361..71bf7b9 100644
--- a/src/mpi/romio/test/Makefile.am
+++ b/src/mpi/romio/test/Makefile.am
@@ -25,7 +25,7 @@ AM_FFLAGS = $(USER_FFLAGS)
CTESTS = simple perf async coll_test coll_perf misc file_info excl large_array \
atomicity noncontig i_noncontig noncontig_coll split_coll shared_fp \
large_file psimple error status noncontig_coll2 aggregation1 aggregation2 \
- async-multiple ordered_fp hindexed external32 indexed_zeros
+ async-multiple ordered_fp hindexed external32 indexed_zeros darray_read
FTESTS = fcoll_test fperf fmisc pfcoll_test
diff --git a/src/mpi/romio/test/darray_read.c b/src/mpi/romio/test/darray_read.c
new file mode 100644
index 0000000..18f075c
--- /dev/null
+++ b/src/mpi/romio/test/darray_read.c
@@ -0,0 +1,110 @@
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <mpi.h>
+
+#define NSIDE 5
+#define NBLOCK 3
+#define NPROC 2
+
+#define CHECK(fn) {int errcode; errcode = (fn); if (errcode != MPI_SUCCESS) handle_error(errcode, #fn);}
+
+static void handle_error(int errcode, const char *str)
+{
+ char msg[MPI_MAX_ERROR_STRING];
+ int resultlen;
+ MPI_Error_string(errcode, msg, &resultlen);
+ fprintf(stderr, "%s: %s\n", str, msg);
+ MPI_Abort(MPI_COMM_WORLD, 1);
+}
+
+
+int main(int argc, char *argv[])
+{
+ int i, j;
+
+ int rank, size;
+ int bpos;
+
+ MPI_Datatype darray;
+ MPI_Status status;
+ MPI_File mpi_fh;
+
+ /* Define array distribution
+ A 2x2 block size works with ROMIO, a 3x3 block size breaks it. */
+ int distrib[2] = { MPI_DISTRIBUTE_CYCLIC, MPI_DISTRIBUTE_CYCLIC };
+ int bsize[2] = { NBLOCK, NBLOCK };
+ int gsize[2] = { NSIDE, NSIDE };
+ int psize[2] = { NPROC, NPROC };
+
+ double data[NSIDE*NSIDE];
+ double *ldata, *pdata;
+
+ int tsize, nelem;
+
+ MPI_File dfile;
+
+ MPI_Init(&argc, &argv);
+
+ MPI_Comm_size(MPI_COMM_WORLD, &size);
+ MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+
+ /* Set up type */
+ CHECK(MPI_Type_create_darray(size, rank, 2, gsize, distrib,
+ bsize, psize, MPI_ORDER_FORTRAN, MPI_DOUBLE, &darray));
+ CHECK(MPI_Type_commit(&darray));
+ CHECK(MPI_Type_size(darray, &tsize));
+ nelem = tsize / sizeof(double);
+
+ for(i = 0; i < (NSIDE*NSIDE); i++) data[i] = i;
+
+ if (rank == 0) {
+ CHECK(MPI_File_open(MPI_COMM_SELF, argv[1],
+ MPI_MODE_CREATE|MPI_MODE_WRONLY, MPI_INFO_NULL, &dfile));
+ CHECK(MPI_File_write(dfile, data, NSIDE*NSIDE, MPI_DOUBLE, &status));
+ CHECK(MPI_File_close(&dfile));
+ }
+ MPI_Barrier(MPI_COMM_WORLD);
+
+ /* Allocate buffer */
+ ldata = (double *)malloc(tsize);
+ pdata = (double *)malloc(tsize);
+
+ /* Use Pack to pull out array */
+ bpos = 0;
+ CHECK(MPI_Pack(data, 1, darray, pdata, tsize, &bpos, MPI_COMM_WORLD));
+
+ MPI_Barrier(MPI_COMM_WORLD);
+
+ /* Read in array from file. */
+ CHECK(MPI_File_open(MPI_COMM_WORLD, argv[1], MPI_MODE_RDONLY, MPI_INFO_NULL, &mpi_fh));
+ CHECK(MPI_File_set_view(mpi_fh, 0, MPI_DOUBLE, darray, "native", MPI_INFO_NULL));
+ CHECK(MPI_File_read_all(mpi_fh, ldata, nelem, MPI_DOUBLE, &status));
+ CHECK(MPI_File_close(&mpi_fh));
+
+ for(i = 0; i < size; i++) {
+ MPI_Barrier(MPI_COMM_WORLD);
+ if(rank == i) {
+ printf("=== Rank %i === (%i elements) \nPacked: ", rank, nelem);
+ for(j = 0; j < nelem; j++) {
+ printf("%4.1f ", pdata[j]);
+ fflush(stdout);
+ }
+ printf("\nRead: ");
+ for(j = 0; j < nelem; j++) {
+ printf("%4.1f ", ldata[j]);
+ fflush(stdout);
+ }
+ printf("\n\n");
+ fflush(stdout);
+ }
+ }
+
+ free(ldata);
+ free(pdata);
+ MPI_Type_free(&darray);
+ MPI_Finalize();
+
+ exit(0);
+
+}
diff --git a/src/mpi/romio/test/runtests.in b/src/mpi/romio/test/runtests.in
index 1d606f5..2aa2ebb 100644
--- a/src/mpi/romio/test/runtests.in
+++ b/src/mpi/romio/test/runtests.in
@@ -379,6 +379,13 @@ MakeExe indexed_zeros
echo '**** Testing indexed_zeros ****'
$mpirun -np 2 ./indexed_zeros $FILENAME
CleanExe indexed_zeros
+testfiles="$testfiles darray_read.out"
+\rm -f darray_read.out
+MakeExe darra_read
+\rm -f $FILENAME*
+echo '**** Testing darray_read ****'
+$mpirun -np 4 ./darray_read $FILENAME
+CleanExe darray_read
#
if [ @NOF77@ = 0 ] ; then
echo ""
http://git.mpich.org/mpich.git/commitdiff/5948c2b3339756861714e549fe44eb5b0…
commit 5948c2b3339756861714e549fe44eb5b0d88d691
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Thu May 8 09:03:33 2014 -0500
Actually initialize debug event logging
ROMIO has DBG_FPRINTF throughout the code, but those DBG_FPRINTF
statements will not do anything unless ROMIO registers itself with the
MPICH debug event logging system.
still todo: the ROMIO logging is way too verbose and needs to implement
TRACE, DEBUG, and VERBOSE levels.
diff --git a/src/mpi/romio/adio/common/ad_init.c b/src/mpi/romio/adio/common/ad_init.c
index ad24f0e..cec6219 100644
--- a/src/mpi/romio/adio/common/ad_init.c
+++ b/src/mpi/romio/adio/common/ad_init.c
@@ -55,6 +55,10 @@ void ADIO_Init(int *argc, char ***argv, int *error_code)
ADIOI_UNREFERENCED_ARG(argc);
ADIOI_UNREFERENCED_ARG(argv);
+
+#ifdef ROMIO_INSIDE_MPICH
+ MPIR_Ext_init();
+#endif
/* initialize the linked list containing flattened datatypes */
ADIOI_Flatlist = (ADIOI_Flatlist_node *) ADIOI_Malloc(sizeof(ADIOI_Flatlist_node));
-----------------------------------------------------------------------
Summary of changes:
src/mpi/romio/adio/common/ad_init.c | 4 +
src/mpi/romio/adio/common/flatten.c | 32 ++++------
src/mpi/romio/test/Makefile.am | 2 +-
src/mpi/romio/test/darray_read.c | 124 +++++++++++++++++++++++++++++++++++
src/mpi/romio/test/runtests.in | 7 ++
5 files changed, 148 insertions(+), 21 deletions(-)
create mode 100644 src/mpi/romio/test/darray_read.c
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.1-231-g42056d4
by noreply@mpich.org 06 May '14
by noreply@mpich.org 06 May '14
06 May '14
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 42056d485bd213fbbf0fb3c8ba9ae9b0350d62ea (commit)
via e0154ed8e4048c2b8421362489da6f97f8204e2e (commit)
from e3813c2e9e7816c0baa750883d984e0f9110a2a7 (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/42056d485bd213fbbf0fb3c8ba9ae9b03…
commit 42056d485bd213fbbf0fb3c8ba9ae9b0350d62ea
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Mon May 5 16:26:55 2014 -0500
ROMIO: Consolidate errno processing
not every file system lives in a posix-like environment, but many do.
for those file systems, open and delete will return -1 and set errno.
The translation from unix erno to MPI error class was haphazard. Get
all aplicable file systems using ADIOI_Err_create_code so we have one
place to update error code conversion.
Closes: #2075
Signed-off-by: Wei-keng Liao <wkliao(a)ece.northwestern.edu>
diff --git a/src/mpi/romio/adio/ad_gpfs/ad_gpfs_open.c b/src/mpi/romio/adio/ad_gpfs/ad_gpfs_open.c
index c3edd84..99b2c1b 100644
--- a/src/mpi/romio/adio/ad_gpfs/ad_gpfs_open.c
+++ b/src/mpi/romio/adio/ad_gpfs/ad_gpfs_open.c
@@ -104,50 +104,7 @@ void ADIOI_GPFS_Open(ADIO_File fd, int *error_code)
}
if (fd->fd_sys == -1) {
- if (errno == ENAMETOOLONG)
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_BAD_FILE,
- "**filenamelong",
- "**filenamelong %s %d",
- fd->filename,
- strlen(fd->filename));
- else if (errno == ENOENT)
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_NO_SUCH_FILE,
- "**filenoexist",
- "**filenoexist %s",
- fd->filename);
- else if (errno == ENOTDIR || errno == ELOOP)
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE,
- myname, __LINE__,
- MPI_ERR_BAD_FILE,
- "**filenamedir",
- "**filenamedir %s",
- fd->filename);
- else if (errno == EACCES) {
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_ACCESS,
- "**fileaccess",
- "**fileaccess %s",
- fd->filename );
- }
- else if (errno == EROFS) {
- /* Read only file or file system and write access requested */
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_READ_ONLY,
- "**ioneedrd", 0 );
- }
- else {
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_IO, "**io",
- "**io %s", strerror(errno));
- }
+ *error_code = ADIOI_Err_create_code(myname, fd->filename, errno);
}
else *error_code = MPI_SUCCESS;
}
diff --git a/src/mpi/romio/adio/ad_lustre/ad_lustre_open.c b/src/mpi/romio/adio/ad_lustre/ad_lustre_open.c
index 0c664ac..e06cb24 100644
--- a/src/mpi/romio/adio/ad_lustre/ad_lustre_open.c
+++ b/src/mpi/romio/adio/ad_lustre/ad_lustre_open.c
@@ -105,50 +105,7 @@ void ADIOI_LUSTRE_Open(ADIO_File fd, int *error_code)
/* --BEGIN ERROR HANDLING-- */
if (fd->fd_sys == -1 || ((fd->fd_direct == -1) &&
(fd->direct_write || fd->direct_read))) {
- if (errno == ENAMETOOLONG)
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_BAD_FILE,
- "**filenamelong",
- "**filenamelong %s %d",
- fd->filename,
- strlen(fd->filename));
- else if (errno == ENOENT)
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_NO_SUCH_FILE,
- "**filenoexist",
- "**filenoexist %s",
- fd->filename);
- else if (errno == ENOTDIR || errno == ELOOP)
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE,
- myname, __LINE__,
- MPI_ERR_BAD_FILE,
- "**filenamedir",
- "**filenamedir %s",
- fd->filename);
- else if (errno == EACCES) {
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_ACCESS,
- "**fileaccess",
- "**fileaccess %s",
- fd->filename );
- }
- else if (errno == EROFS) {
- /* Read only file or file system and write access requested */
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_READ_ONLY,
- "**ioneedrd", 0 );
- }
- else {
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_IO, "**io",
- "**io %s", strerror(errno));
- }
+ *error_code = ADIOI_Err_create_code(myname, fd->filename, errno);
}
/* --END ERROR HANDLING-- */
else *error_code = MPI_SUCCESS;
diff --git a/src/mpi/romio/adio/ad_nfs/ad_nfs_open.c b/src/mpi/romio/adio/ad_nfs/ad_nfs_open.c
index f8dac56..d876329 100644
--- a/src/mpi/romio/adio/ad_nfs/ad_nfs_open.c
+++ b/src/mpi/romio/adio/ad_nfs/ad_nfs_open.c
@@ -52,64 +52,7 @@ void ADIOI_NFS_Open(ADIO_File fd, int *error_code)
}
if (fd->fd_sys == -1) {
- /* Check for special error codes for those MPI error
- classes that relate to particular problems */
- if (errno == ENAMETOOLONG)
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_BAD_FILE,
- "**filenamelong",
- "**filenamelong %s %d",
- fd->filename,
- strlen(fd->filename));
- else if (errno == ENOENT)
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_NO_SUCH_FILE,
- "**filenoexist",
- "**filenoexist %s",
- fd->filename);
- else if (errno == ENOTDIR || errno == ELOOP)
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_BAD_FILE,
- "**filenamedir",
- "**filenamedir %s",
- fd->filename);
- else if (errno == EACCES) {
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_ACCESS,
- "**fileaccess",
- "**fileaccess %s",
- fd->filename);
- }
- else if (errno == EROFS) {
- /* Read only file or file system and write access requested */
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_READ_ONLY,
- "**ioneedrd", 0);
- }
- else if(errno == EISDIR) {
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_BAD_FILE,
- "**filename", 0);
- }
- else if(errno == EEXIST) {
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_FILE_EXISTS,
- "**fileexist", 0);
-
- }
- else {
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_IO, "**io",
- "**io %s", strerror(errno));
- }
+ *error_code = ADIOI_Err_create_code(myname, fd->filename, errno);
}
else *error_code = MPI_SUCCESS;
}
diff --git a/src/mpi/romio/adio/ad_panfs/ad_panfs_open.c b/src/mpi/romio/adio/ad_panfs/ad_panfs_open.c
index 161fd48..d5374eb 100644
--- a/src/mpi/romio/adio/ad_panfs/ad_panfs_open.c
+++ b/src/mpi/romio/adio/ad_panfs/ad_panfs_open.c
@@ -342,50 +342,7 @@ void ADIOI_PANFS_Open(ADIO_File fd, int *error_code)
fd->fp_ind = fd->fp_sys_posn = lseek(fd->fd_sys, 0, SEEK_END);
if (fd->fd_sys == -1) {
- if (errno == ENAMETOOLONG)
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_BAD_FILE,
- "**filenamelong",
- "**filenamelong %s %d",
- fd->filename,
- strlen(fd->filename));
- else if (errno == ENOENT)
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_NO_SUCH_FILE,
- "**filenoexist",
- "**filenoexist %s",
- fd->filename);
- else if (errno == ENOTDIR || errno == ELOOP)
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE,
- myname, __LINE__,
- MPI_ERR_BAD_FILE,
- "**filenamedir",
- "**filenamedir %s",
- fd->filename);
- else if (errno == EACCES) {
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_ACCESS,
- "**fileaccess",
- "**fileaccess %s",
- fd->filename );
- }
- else if (errno == EROFS) {
- /* Read only file or file system and write access requested */
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_READ_ONLY,
- "**ioneedrd", 0 );
- }
- else {
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_IO, "**io",
- "**io %s", strerror(errno));
- }
+ *error_code = ADIOI_Err_create_code(myname, fd->filename, errno);
}
else *error_code = MPI_SUCCESS;
}
diff --git a/src/mpi/romio/adio/ad_ufs/ad_ufs_open.c b/src/mpi/romio/adio/ad_ufs/ad_ufs_open.c
index a615778..9d5a2a1 100644
--- a/src/mpi/romio/adio/ad_ufs/ad_ufs_open.c
+++ b/src/mpi/romio/adio/ad_ufs/ad_ufs_open.c
@@ -51,66 +51,8 @@ void ADIOI_UFS_Open(ADIO_File fd, int *error_code)
#endif
}
- /* --BEGIN ERROR HANDLING-- */
if (fd->fd_sys == -1) {
- if (errno == ENAMETOOLONG)
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_BAD_FILE,
- "**filenamelong",
- "**filenamelong %s %d",
- fd->filename,
- strlen(fd->filename));
- else if (errno == ENOENT)
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_NO_SUCH_FILE,
- "**filenoexist",
- "**filenoexist %s",
- fd->filename);
- else if (errno == ENOTDIR || errno == ELOOP)
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE,
- myname, __LINE__,
- MPI_ERR_BAD_FILE,
- "**filenamedir",
- "**filenamedir %s",
- fd->filename);
- else if (errno == EACCES) {
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_ACCESS,
- "**fileaccess",
- "**fileaccess %s",
- fd->filename );
- }
- else if (errno == EROFS) {
- /* Read only file or file system and write access requested */
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_READ_ONLY,
- "**ioneedrd", 0 );
- }
- else if(errno == EISDIR) {
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_BAD_FILE,
- "**filename", 0);
- }
- else if(errno == EEXIST) {
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_FILE_EXISTS,
- "**fileexist", 0);
-
- }
- else {
- *error_code = MPIO_Err_create_code(MPI_SUCCESS,
- MPIR_ERR_RECOVERABLE, myname,
- __LINE__, MPI_ERR_IO, "**io",
- "**io %s", strerror(errno));
- }
+ *error_code = ADIOI_Err_create_code(myname, fd->filename, errno);
}
- /* --END ERROR HANDLING-- */
else *error_code = MPI_SUCCESS;
}
diff --git a/src/mpi/romio/adio/ad_xfs/ad_xfs_open.c b/src/mpi/romio/adio/ad_xfs/ad_xfs_open.c
index eba5093..5c0a9a2 100644
--- a/src/mpi/romio/adio/ad_xfs/ad_xfs_open.c
+++ b/src/mpi/romio/adio/ad_xfs/ad_xfs_open.c
@@ -105,9 +105,7 @@ void ADIOI_XFS_Open(ADIO_File fd, int *error_code)
fd->fp_sys_posn = -1; /* set it to null because we use pread/pwrite */
if ((fd->fd_sys == -1) || (fd->fd_direct == -1)) {
- *error_code = MPIO_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE,
- myname, __LINE__, MPI_ERR_IO, "**io",
- "**io %s", strerror(errno));
+ *error_code = ADIOI_Err_create_code(mymame, fd->filename, errno);
}
else *error_code = MPI_SUCCESS;
}
diff --git a/src/mpi/romio/adio/common/ad_delete.c b/src/mpi/romio/adio/common/ad_delete.c
index 5e960ba..ae78d7e 100644
--- a/src/mpi/romio/adio/common/ad_delete.c
+++ b/src/mpi/romio/adio/common/ad_delete.c
@@ -18,10 +18,7 @@ void ADIOI_GEN_Delete(const char *filename, int *error_code)
err = unlink(filename);
if (err == -1) {
- *error_code = MPIO_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE,
- myname, __LINE__, MPI_ERR_IO, "**io",
- "**io %s", strerror(errno));
- return;
+ *error_code = ADIOI_Err_create_code(myname, filename, errno);
}
else *error_code = MPI_SUCCESS;
}
http://git.mpich.org/mpich.git/commitdiff/e0154ed8e4048c2b8421362489da6f97f…
commit e0154ed8e4048c2b8421362489da6f97f8204e2e
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Mon May 5 16:23:06 2014 -0500
Deal with more errno values
In preparation for using ADIOI_Err_create_code everywhere,
ADIOI_Err_create_code did not handle some errno values that fs-specific
drivers were handling.
Signed-off-by: Wei-keng Liao <wkliao(a)ece.northwestern.edu>
diff --git a/src/mpi/romio/adio/common/error.c b/src/mpi/romio/adio/common/error.c
index 15f2376..e990a5e 100644
--- a/src/mpi/romio/adio/common/error.c
+++ b/src/mpi/romio/adio/common/error.c
@@ -35,14 +35,16 @@ int ADIOI_Error(ADIO_File fd, int error_code, char *string)
return error_code;
}
-
-/* Returns an MPI error code corresponding to "my_errno", for function "myname"
+/* Check for special error codes for those MPI error
+ classes that relate to particular problems.
+ Returns an MPI error code corresponding to "my_errno", for function "myname"
* and the given file, "filename". */
int ADIOI_Err_create_code(const char *myname, const char *filename, int my_errno)
{
int error_code = MPI_SUCCESS;
if(!my_errno) return MPI_SUCCESS;
+ /* --BEGIN ERROR HANDLING-- */
switch(my_errno) {
case EACCES:
error_code = MPIO_Err_create_code(MPI_SUCCESS,
@@ -79,6 +81,7 @@ int ADIOI_Err_create_code(const char *myname, const char *filename, int my_errno
filename);
break;
case EROFS:
+ /* Read only file or file system and write access requested */
error_code = MPIO_Err_create_code(MPI_SUCCESS,
MPIR_ERR_RECOVERABLE, myname,
__LINE__, MPI_ERR_READ_ONLY,
@@ -90,12 +93,35 @@ int ADIOI_Err_create_code(const char *myname, const char *filename, int my_errno
__LINE__, MPI_ERR_FILE_EXISTS,
"**fileexist", 0);
break;
+ case ENOTDIR:
+ case ELOOP:
+ error_code = MPIO_Err_create_code(MPI_SUCCESS,
+ MPIR_ERR_RECOVERABLE,
+ myname, __LINE__,
+ MPI_ERR_BAD_FILE,
+ "**filenamedir",
+ "**filenamedir %s",
+ filename);
+ break;
+ case ENOSPC:
+ error_code = MPIO_Err_create_code(MPI_SUCCESS,
+ MPIR_ERR_RECOVERABLE, myname, __LINE__,
+ MPI_ERR_NO_SPACE,
+ "**filenospace", 0);
+ break;
+ case EDQUOT:
+ error_code = MPIO_Err_create_code(MPI_SUCCESS,
+ MPIR_ERR_RECOVERABLE, myname, __LINE__,
+ MPI_ERR_QUOTA,
+ "**filequota", 0);
+
default:
error_code = MPIO_Err_create_code(MPI_SUCCESS, MPIR_ERR_RECOVERABLE,
myname, __LINE__, MPI_ERR_IO, "**io",
"**io %s", strerror(my_errno));
break;
}
+ /* --END ERROR HANDLING-- */
return error_code;
}
-----------------------------------------------------------------------
Summary of changes:
src/mpi/romio/adio/ad_gpfs/ad_gpfs_open.c | 45 +------------------
src/mpi/romio/adio/ad_lustre/ad_lustre_open.c | 45 +------------------
src/mpi/romio/adio/ad_nfs/ad_nfs_open.c | 59 +------------------------
src/mpi/romio/adio/ad_panfs/ad_panfs_open.c | 45 +------------------
src/mpi/romio/adio/ad_ufs/ad_ufs_open.c | 60 +------------------------
src/mpi/romio/adio/ad_xfs/ad_xfs_open.c | 4 +-
src/mpi/romio/adio/common/ad_delete.c | 5 +--
src/mpi/romio/adio/common/error.c | 30 +++++++++++-
8 files changed, 35 insertions(+), 258 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.1-229-ge3813c2
by noreply@mpich.org 06 May '14
by noreply@mpich.org 06 May '14
06 May '14
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 e3813c2e9e7816c0baa750883d984e0f9110a2a7 (commit)
via 50f3d5806e5cf3934ef991eef2d7d238846380d6 (commit)
via 4190800705217a5ff136e40ad8be031bf5e36243 (commit)
via 71f1dae1cd5eb073f9dadf823a59f69e50fa433d (commit)
from 27f99ee3363c938a56b7be935545c5355a051820 (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/e3813c2e9e7816c0baa750883d984e0f9…
commit e3813c2e9e7816c0baa750883d984e0f9110a2a7
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Tue May 6 12:53:43 2014 -0500
test case for 'resized of resized'
ROMIO flattening code presently does not handle resized-of-resized
types.
See #2088
diff --git a/test/mpi/io/Makefile.am b/test/mpi/io/Makefile.am
index 9d988de..31e6c87 100644
--- a/test/mpi/io/Makefile.am
+++ b/test/mpi/io/Makefile.am
@@ -22,7 +22,8 @@ noinst_PROGRAMS = \
async \
async_any \
userioerr \
- resized
+ resized \
+ resized2
clean-local:
-rm -f testfile testfile.*
diff --git a/test/mpi/io/resized2.c b/test/mpi/io/resized2.c
new file mode 100644
index 0000000..a60ff26
--- /dev/null
+++ b/test/mpi/io/resized2.c
@@ -0,0 +1,131 @@
+/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
+/*
+ * (C) 2008 by Argonne National Laboratory.
+ * See COPYRIGHT in top-level directory.
+ */
+#include "mpi.h"
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include "mpitest.h"
+
+/*
+static char MTEST_Descrip[] = "Test file views with MPI_Type_create_resized";
+*/
+
+int main(int argc, char **argv)
+{
+ int i, nprocs, len, mpi_errno, buf[2], newbuf[4];
+ int errs=0;
+ MPI_Offset size;
+ MPI_Aint lb, extent;
+ MPI_File fh;
+ char *filename;
+ MPI_Datatype newtype, newtype1;
+
+ MTest_Init(&argc,&argv);
+ MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
+
+ if (nprocs != 1) {
+ fprintf(stderr, "Run this program on 1 process\n");
+ MPI_Abort(MPI_COMM_WORLD, 1);
+ }
+
+ i = 1;
+ while ((i < argc) && strcmp("-fname", *argv)) {
+ i++;
+ argv++;
+ }
+ if (i >= argc) {
+ len = 8;
+ filename = (char *)malloc(len + 10);
+ strcpy( filename, "testfile" );
+ /*
+ fprintf(stderr, "\n*# Usage: resized -fname filename\n\n");
+ MPI_Abort(MPI_COMM_WORLD, 1);
+ */
+ }
+ else {
+ argv++;
+ len = (int)strlen(*argv);
+ filename = (char *) malloc(len+1);
+ strcpy(filename, *argv);
+ }
+
+ MPI_File_delete(filename, MPI_INFO_NULL);
+
+ /* create a resized type comprising an integer with an lb at sizeof(int) and extent = 3*sizeof(int) */
+ lb = sizeof(int);
+ extent = 3*sizeof(int);
+ MPI_Type_create_resized(MPI_INT, lb, extent, &newtype1);
+
+ MPI_Type_commit(&newtype1);
+ MPI_Type_create_resized(newtype1, lb, extent, &newtype);
+ MPI_Type_commit(&newtype);
+
+ /* initialize the file */
+ MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE |
+ MPI_MODE_RDWR, MPI_INFO_NULL, &fh);
+ for (i=0; i<4; i++) newbuf[i] = 55;
+ MPI_File_write(fh, newbuf, 4, MPI_INT, MPI_STATUS_IGNORE);
+ MPI_File_close(&fh);
+
+ /* write 2 ints into file view with resized type */
+
+ buf[0] = 10;
+ buf[1] = 20;
+
+ MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_CREATE |
+ MPI_MODE_RDWR, MPI_INFO_NULL, &fh);
+
+ mpi_errno = MPI_File_set_view(fh, 0, MPI_INT, newtype, (char*)"native", MPI_INFO_NULL);
+ if (mpi_errno != MPI_SUCCESS) errs++;
+
+ MPI_File_write(fh, buf, 2, MPI_INT, MPI_STATUS_IGNORE);
+
+ MPI_File_close(&fh);
+
+
+ /* read back file view with resized type and verify */
+
+ MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_RDONLY, MPI_INFO_NULL, &fh);
+
+ mpi_errno = MPI_File_set_view(fh, 0, MPI_INT, newtype, (char*)"native", MPI_INFO_NULL);
+ if (mpi_errno != MPI_SUCCESS) errs++;
+
+ for (i=0; i<4; i++) newbuf[i] = 100;
+ MPI_File_read(fh, newbuf, 2, MPI_INT, MPI_STATUS_IGNORE);
+ if ((newbuf[0] != 10) || (newbuf[1] != 20) || (newbuf[2] !=100) || (newbuf[3] != 100)) {
+ errs++;
+ fprintf(stderr, "newbuf[0] is %d, should be 10,\n newbuf[1] is %d, should be 20\n newbuf[2] is %d, should be 100,\n newbuf[3] is %d, should be 100,\n", newbuf[0], newbuf[1], newbuf[2], newbuf[3]);
+ }
+
+ MPI_File_close(&fh);
+
+ /* read file back and verify */
+
+ MPI_File_open(MPI_COMM_WORLD, filename,
+ MPI_MODE_RDONLY, MPI_INFO_NULL, &fh);
+
+ MPI_File_get_size(fh, &size);
+ if (size != 4*sizeof(int)) {
+ errs++;
+ fprintf(stderr, "file size is %lld, should be %d\n", size, (int)(4*sizeof(int)));
+ }
+
+ for (i=0; i<4; i++) newbuf[i] = 100;
+ MPI_File_read(fh, newbuf, 4, MPI_INT, MPI_STATUS_IGNORE);
+ if ((newbuf[0] != 10) || (newbuf[3] != 20) || (newbuf[1] !=55) || (newbuf[2] != 55)) {
+ errs++;
+ fprintf(stderr, "newbuf[0] is %d, should be 10,\n newbuf[1] is %d, should be 55,\n newbuf[2] is %d, should be 55,\n newbuf[3] is %d, should be 20\n", newbuf[0], newbuf[1], newbuf[2], newbuf[3]);
+ }
+
+ MPI_File_close(&fh);
+
+ MPI_Type_free(&newtype1);
+ MPI_Type_free(&newtype);
+ free(filename);
+ MTest_Finalize(errs);
+ MPI_Finalize();
+ return 0;
+}
diff --git a/test/mpi/io/testlist b/test/mpi/io/testlist
index 0a019e0..dfad3f0 100644
--- a/test/mpi/io/testlist
+++ b/test/mpi/io/testlist
@@ -8,3 +8,4 @@ async 4
async_any 4
userioerr 1
resized 1
+resized2 1 xfail=ticket2088
http://git.mpich.org/mpich.git/commitdiff/50f3d5806e5cf3934ef991eef2d7d2388…
commit 50f3d5806e5cf3934ef991eef2d7d238846380d6
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Mon May 5 10:14:14 2014 -0500
ROMIO dtype flattening: ignore zero-length counts
Bill Gropp reminds us not to forget this text from MPI-3
MPI-3, page 84, lines 18-20.
"Most datatype constructors have replication count or block length
arguments. Allowed values are non-negative integers. If the value is
zero, no elements are generated in the type map and there is no effect
on datatype bounds or extent."
The ROMIO flattening codes was treating blocklen elments of zero as
significant.
the struct case probably has the same bug, but I'm deeply nervous about
touching too much of this old code with a release imminent.
Closes: #2073
diff --git a/src/mpi/romio/adio/common/flatten.c b/src/mpi/romio/adio/common/flatten.c
index 6437705..b8708af 100644
--- a/src/mpi/romio/adio/common/flatten.c
+++ b/src/mpi/romio/adio/common/flatten.c
@@ -107,7 +107,7 @@ void ADIOI_Flatten_datatype(MPI_Datatype datatype)
void ADIOI_Flatten(MPI_Datatype datatype, ADIOI_Flatlist_node *flat,
ADIO_Offset st_offset, MPI_Count *curr_index)
{
- int i, k, m, n, basic_num;
+ int i, k, m, n, basic_num, nonzeroth;
int combiner, old_combiner, old_is_contig;
int nints, nadds, ntypes, old_nints, old_nadds, old_ntypes;
/* By using ADIO_Offset we preserve +/- sign and
@@ -140,6 +140,13 @@ void ADIOI_Flatten(MPI_Datatype datatype, ADIOI_Flatlist_node *flat,
DBG_FPRINTF(stderr,"ADIOI_Flatten:: types[%d]=%#llX\n",i,(unsigned long long)(unsigned long)types[i]);
}
#endif
+ /* Chapter 4, page 83: when processing datatypes, note this item from the
+ * standard:
+ Most datatype constructors have replication count or block length
+ arguments. Allowed values are non-negative integers. If the value is
+ zero, no elements are generated in the type map and there is no effect
+ on datatype bounds or extent. */
+
switch (combiner) {
#ifdef MPIIMPL_HAVE_MPI_COMBINER_DUP
case MPI_COMBINER_DUP:
@@ -399,12 +406,19 @@ void ADIOI_Flatten(MPI_Datatype datatype, ADIOI_Flatlist_node *flat,
if (prev_index == *curr_index) {
/* simplest case, indexed type made up of basic or contiguous types */
j = *curr_index;
- for (i=j; i<j+top_count; i++) {
+ for (i=j, nonzeroth=i; i<j+top_count; i++) {
/* By using ADIO_Offset we preserve +/- sign and
avoid >2G integer arithmetic problems */
ADIO_Offset blocklength = ints[1+i-j], stride = ints[top_count+1+i-j];
- flat->indices[i] = st_offset + stride* ADIOI_AINT_CAST_TO_OFFSET old_extent;
- flat->blocklens[i] = blocklength* ADIOI_AINT_CAST_TO_OFFSET old_extent;
+ if (blocklength > 0) {
+ flat->indices[nonzeroth] =
+ st_offset + stride* ADIOI_AINT_CAST_TO_OFFSET old_extent;
+ flat->blocklens[nonzeroth] =
+ blocklength* ADIOI_AINT_CAST_TO_OFFSET old_extent;
+ nonzeroth++;
+ } else {
+ flat->count--; /* don't count/consider any zero-length blocklens */
+ }
}
*curr_index = i;
}
@@ -418,10 +432,17 @@ void ADIOI_Flatten(MPI_Datatype datatype, ADIOI_Flatlist_node *flat,
/* The noncontiguous types have to be replicated blocklens[i] times
and then strided. Replicate the first one. */
for (m=1; m<ints[1]; m++) {
- for (i=0; i<num; i++) {
- flat->indices[j] = flat->indices[j-num] + ADIOI_AINT_CAST_TO_OFFSET old_extent;
- flat->blocklens[j] = flat->blocklens[j-num];
- j++;
+ for (i=0, nonzeroth = j; i<num; i++) {
+ if (flat->blocklens[j-num] > 0) {
+ flat->indices[nonzeroth] =
+ flat->indices[nonzeroth-num] + ADIOI_AINT_CAST_TO_OFFSET old_extent;
+ flat->blocklens[nonzeroth] =
+ flat->blocklens[nonzeroth-num];
+ j++;
+ nonzeroth++;
+ } else {
+ flat->count --;
+ }
}
}
*curr_index = j;
@@ -430,20 +451,32 @@ void ADIOI_Flatten(MPI_Datatype datatype, ADIOI_Flatlist_node *flat,
for (i=1; i<top_count; i++) {
num = *curr_index - prev_index;
prev_index = *curr_index;
- for (m=0; m<basic_num; m++) {
+ for (m=0, nonzeroth=j; m<basic_num; m++) {
/* By using ADIO_Offset we preserve +/- sign and
avoid >2G integer arithmetic problems */
ADIO_Offset stride = ints[top_count+1+i]-ints[top_count+i];
- flat->indices[j] = flat->indices[j-num] + stride* ADIOI_AINT_CAST_TO_OFFSET old_extent;
- flat->blocklens[j] = flat->blocklens[j-num];
- j++;
+ if (flat->blocklens[j-num] > 0 ) {
+ flat->indices[nonzeroth] =
+ flat->indices[j-num] + stride* ADIOI_AINT_CAST_TO_OFFSET old_extent;
+ flat->blocklens[nonzeroth] = flat->blocklens[j-num];
+ j++;
+ nonzeroth++;
+ } else {
+ flat->count--;
+ }
}
*curr_index = j;
for (m=1; m<ints[1+i]; m++) {
- for (k=0; k<basic_num; k++) {
- flat->indices[j] = flat->indices[j-basic_num] + ADIOI_AINT_CAST_TO_OFFSET old_extent;
- flat->blocklens[j] = flat->blocklens[j-basic_num];
- j++;
+ for (k=0, nonzeroth=j; k<basic_num; k++) {
+ if (flat->blocklens[j-basic_num] > 0) {
+ flat->indices[nonzeroth] =
+ flat->indices[j-basic_num] + ADIOI_AINT_CAST_TO_OFFSET old_extent;
+ flat->blocklens[nonzeroth] = flat->blocklens[j-basic_num];
+ j++;
+ nonzeroth++;
+ } else {
+ flat->count --;
+ }
}
}
*curr_index = j;
@@ -542,12 +575,17 @@ void ADIOI_Flatten(MPI_Datatype datatype, ADIOI_Flatlist_node *flat,
/* simplest case, indexed type made up of basic or contiguous types */
j = *curr_index;
MPI_Type_size_x(types[0], &old_size);
- for (i=j; i<j+top_count; i++) {
- /* By using ADIO_Offset we preserve +/- sign and
- avoid >2G integer arithmetic problems */
- ADIO_Offset blocklength = ints[1+i-j];
- flat->indices[i] = st_offset + adds[i-j];
- flat->blocklens[i] = blocklength*old_size;
+ for (i=j, nonzeroth=j; i<j+top_count; i++) {
+ if (ints[1+i-j] > 0) {
+ /* By using ADIO_Offset we preserve +/- sign and
+ avoid >2G integer arithmetic problems */
+ ADIO_Offset blocklength = ints[1+i-j];
+ flat->indices[nonzeroth] = st_offset + adds[i-j];
+ flat->blocklens[nonzeroth] = blocklength*old_size;
+ nonzeroth++;
+ } else {
+ flat->count--;
+ }
}
*curr_index = i;
}
@@ -562,10 +600,16 @@ void ADIOI_Flatten(MPI_Datatype datatype, ADIOI_Flatlist_node *flat,
and then strided. Replicate the first one. */
MPI_Type_extent(types[0], &old_extent);
for (m=1; m<ints[1]; m++) {
- for (i=0; i<num; i++) {
- flat->indices[j] = flat->indices[j-num] + ADIOI_AINT_CAST_TO_OFFSET old_extent;
- flat->blocklens[j] = flat->blocklens[j-num];
- j++;
+ for (i=0, nonzeroth=j; i<num; i++) {
+ if (flat->blocklens[j-num] > 0) {
+ flat->indices[nonzeroth] =
+ flat->indices[j-num] + ADIOI_AINT_CAST_TO_OFFSET old_extent;
+ flat->blocklens[nonzeroth] = flat->blocklens[j-num];
+ j++;
+ nonzeroth++;
+ } else {
+ flat->count--;
+ }
}
}
*curr_index = j;
@@ -574,18 +618,28 @@ void ADIOI_Flatten(MPI_Datatype datatype, ADIOI_Flatlist_node *flat,
for (i=1; i<top_count; i++) {
num = *curr_index - prev_index;
prev_index = *curr_index;
- for (m=0; m<basic_num; m++) {
- flat->indices[j] = flat->indices[j-num] + adds[i] - adds[i-1];
- flat->blocklens[j] = flat->blocklens[j-num];
- j++;
+ for (m=0, nonzeroth=j; m<basic_num; m++) {
+ if (flat->blocklens[j-num] > 0) {
+ flat->indices[nonzeroth] =
+ flat->indices[j-num] + adds[i] - adds[i-1];
+ flat->blocklens[nonzeroth] = flat->blocklens[j-num];
+ j++;
+ nonzeroth++;
+ } else {
+ flat->count--;
+ }
}
*curr_index = j;
for (m=1; m<ints[1+i]; m++) {
- for (k=0; k<basic_num; k++) {
- flat->indices[j] = flat->indices[j-basic_num] + ADIOI_AINT_CAST_TO_OFFSET old_extent;
- flat->blocklens[j] = flat->blocklens[j-basic_num];
- j++;
- }
+ for (k=0,nonzeroth=j; k<basic_num; k++) {
+ if (flat->blocklens[j-basic_num] >0) {
+ flat->indices[nonzeroth] =
+ flat->indices[j-basic_num] + ADIOI_AINT_CAST_TO_OFFSET old_extent;
+ flat->blocklens[nonzeroth] = flat->blocklens[j-basic_num];
+ j++;
+ nonzeroth++;
+ }
+ }
}
*curr_index = j;
}
@@ -611,15 +665,19 @@ void ADIOI_Flatten(MPI_Datatype datatype, ADIOI_Flatlist_node *flat,
/* simplest case, current type is basic or contiguous types */
/* By using ADIO_Offset we preserve +/- sign and
avoid >2G integer arithmetic problems */
- ADIO_Offset blocklength = ints[1+n];
- j = *curr_index;
- flat->indices[j] = st_offset + adds[n];
- MPI_Type_size_x(types[n], &old_size);
- flat->blocklens[j] = blocklength * old_size;
- #ifdef FLATTEN_DEBUG
- DBG_FPRINTF(stderr,"ADIOI_Flatten:: simple adds[%#X] "MPI_AINT_FMT_HEX_SPEC", flat->indices[%#llX] %#llX, flat->blocklens[%#llX] %#llX\n",n,adds[n],j, flat->indices[j], j, flat->blocklens[j]);
- #endif
- (*curr_index)++;
+ if (ints[1+n] > 0) {
+ ADIO_Offset blocklength = ints[1+n];
+ j = *curr_index;
+ flat->indices[j] = st_offset + adds[n];
+ MPI_Type_size_x(types[n], &old_size);
+ flat->blocklens[j] = blocklength * old_size;
+#ifdef FLATTEN_DEBUG
+ DBG_FPRINTF(stderr,"ADIOI_Flatten:: simple adds[%#X] "MPI_AINT_FMT_HEX_SPEC", flat->indices[%#llX] %#llX, flat->blocklens[%#llX] %#llX\n",n,adds[n],j, flat->indices[j], j, flat->blocklens[j]);
+#endif
+ (*curr_index)++;
+ } else {
+ flat->count--;
+ }
}
else {
/* current type made up of noncontiguous derived types */
@@ -631,12 +689,17 @@ void ADIOI_Flatten(MPI_Datatype datatype, ADIOI_Flatlist_node *flat,
MPI_Type_extent(types[n], &old_extent);
for (m=1; m<ints[1+n]; m++) {
for (i=0; i<num; i++) {
- flat->indices[j] = flat->indices[j-num] + ADIOI_AINT_CAST_TO_OFFSET old_extent;
- flat->blocklens[j] = flat->blocklens[j-num];
- #ifdef FLATTEN_DEBUG
- DBG_FPRINTF(stderr,"ADIOI_Flatten:: simple old_extent "MPI_AINT_FMT_HEX_SPEC", flat->indices[%#llX] %#llX, flat->blocklens[%#llX] %#llX\n",old_extent,j, flat->indices[j], j, flat->blocklens[j]);
- #endif
- j++;
+ if (flat->blocklens[j-num] > 0) {
+ flat->indices[j] =
+ flat->indices[j-num] + ADIOI_AINT_CAST_TO_OFFSET old_extent;
+ flat->blocklens[j] = flat->blocklens[j-num];
+#ifdef FLATTEN_DEBUG
+ DBG_FPRINTF(stderr,"ADIOI_Flatten:: simple old_extent "MPI_AINT_FMT_HEX_SPEC", flat->indices[%#llX] %#llX, flat->blocklens[%#llX] %#llX\n",old_extent,j, flat->indices[j], j, flat->blocklens[j]);
+#endif
+ j++;
+ } else {
+ flat->count --;
+ }
}
}
*curr_index = j;
@@ -654,6 +717,9 @@ void ADIOI_Flatten(MPI_Datatype datatype, ADIOI_Flatlist_node *flat,
/* handle the Lb */
j = *curr_index;
flat->indices[j] = st_offset + adds[0];
+ /* this zero-length blocklens[] element, unlike eleswhere in the
+ * flattening code, is correct and is used to indicate a lower bound
+ * marker */
flat->blocklens[j] = 0;
#ifdef FLATTEN_DEBUG
@@ -688,6 +754,8 @@ void ADIOI_Flatten(MPI_Datatype datatype, ADIOI_Flatlist_node *flat,
/* take care of the extent as a UB */
j = *curr_index;
flat->indices[j] = st_offset + adds[0] + adds[1];
+ /* again, zero-element ok: an upper-bound marker explicitly set by the
+ * constructor of this resized type */
flat->blocklens[j] = 0;
#ifdef FLATTEN_DEBUG
http://git.mpich.org/mpich.git/commitdiff/4190800705217a5ff136e40ad8be031bf…
commit 4190800705217a5ff136e40ad8be031bf5e36243
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Thu May 1 15:54:37 2014 -0500
turn datatype test into a function
diff --git a/src/mpi/romio/test/indexed_zeros.c b/src/mpi/romio/test/indexed_zeros.c
index e574dd8..96bd2cd 100644
--- a/src/mpi/romio/test/indexed_zeros.c
+++ b/src/mpi/romio/test/indexed_zeros.c
@@ -17,22 +17,18 @@ static void handle_error(int errcode, const char *str)
fprintf(stderr, "%s: %s\n", str, msg);
MPI_Abort(MPI_COMM_WORLD, 1);
}
-int main(int argc, char **argv) {
+
+int test_indexed_with_zeros(char *filename)
+{
int i, rank, np, buflen, num, err, nr_errors;
int nelms[MAXLEN], buf[MAXLEN], indices[MAXLEN], blocklen[MAXLEN];
MPI_File fh;
MPI_Status status;
MPI_Datatype filetype;
- MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &np);
- if (np != 2) {
- if (rank == 0) fprintf(stderr,"Must run on 2 MPI processes\n");
- MPI_Finalize(); return 1;
- }
-
/* set up the number of integers to write in each iteration */
for (i=0; i<MAXLEN; i++) nelms[i] = 0;
if (rank == 0) nelms[4]=nelms[5]=nelms[7]=1;
@@ -41,7 +37,7 @@ int main(int argc, char **argv) {
/* pre-fill the file with integers -999 */
if (rank == 0) {
for (i=0; i<MAXLEN; i++) buf[i] = -999;
- err =MPI_File_open(MPI_COMM_SELF, argv[1], MPI_MODE_CREATE|MPI_MODE_WRONLY,
+ err =MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_CREATE|MPI_MODE_WRONLY,
MPI_INFO_NULL, &fh);
if (err != MPI_SUCCESS) handle_error(err, "MPI_File_open");
err = MPI_File_write(fh, buf, MAXLEN, MPI_INT, &status);
@@ -64,7 +60,7 @@ int main(int argc, char **argv) {
/* initialize write buffer and write to file*/
for (i=0; i<MAXLEN; i++) buf[i] = 1;
- err =MPI_File_open(MPI_COMM_WORLD, argv[1], MPI_MODE_WRONLY, MPI_INFO_NULL, &fh);
+ err =MPI_File_open(MPI_COMM_WORLD, filename, MPI_MODE_WRONLY, MPI_INFO_NULL, &fh);
if (err != MPI_SUCCESS) handle_error(err, "MPI_File_open");
err = MPI_File_set_view(fh, 0, MPI_INT, filetype, "native", MPI_INFO_NULL);
if (err != MPI_SUCCESS) handle_error(err, "MPI_File_set_view");
@@ -76,7 +72,7 @@ int main(int argc, char **argv) {
/* read back and check */
if (rank == 0) {
- err = MPI_File_open(MPI_COMM_SELF, argv[1], MPI_MODE_RDONLY, MPI_INFO_NULL, &fh);
+ err = MPI_File_open(MPI_COMM_SELF, filename, MPI_MODE_RDONLY, MPI_INFO_NULL, &fh);
if (err != MPI_SUCCESS) handle_error(err, "MPI_File_open");
err = MPI_File_read(fh,buf, MAXLEN, MPI_INT, &status);
if (err != MPI_SUCCESS) handle_error(err, "MPI_File_read");
@@ -88,8 +84,26 @@ int main(int argc, char **argv) {
printf("Error: unexpected value at buf[%d] == %d\n",i,buf[i]);
}
}
- if (nr_errors == 0) printf(" No Errors\n");
}
+ return nr_errors;
+}
+
+int main(int argc, char **argv)
+{
+
+ int nr_errors, rank, np;
+
+ MPI_Init(&argc, &argv);
+ MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+ MPI_Comm_size(MPI_COMM_WORLD, &np);
+
+ if (np != 2) {
+ if (rank == 0) fprintf(stderr,"Must run on 2 MPI processes\n");
+ MPI_Finalize(); return 1;
+ }
+ nr_errors += test_indexed_with_zeros(argv[1]);
+
+ if (rank == 0 && nr_errors == 0) printf(" No Errors\n");
MPI_Finalize();
return 0;
http://git.mpich.org/mpich.git/commitdiff/71f1dae1cd5eb073f9dadf823a59f69e5…
commit 71f1dae1cd5eb073f9dadf823a59f69e50fa433d
Author: Wei-keng Liao <wkliao(a)eecs.northwestern.edu>
Date: Wed Apr 30 16:38:26 2014 -0500
ROMIO test case demonstrating indexed type bugs
The problem is when defining a filetype using MPI_Type_indexed and the
first few elements of argument blocklens[] are zeros, a collective write
will miss writing some data.
The test program first fills a file with 9 integers with values all
-999. It then defines a filetype and writes to the file in parallel
with user buffers with value all 1s. Lastly, the file is read back and
checked for contents.
(it's Wei-keng's test case. I just hooked it into ROMIO's test suite)
Signed-off-by: Rob Latham <robl(a)mcs.anl.gov>
diff --git a/src/mpi/romio/test/Makefile.am b/src/mpi/romio/test/Makefile.am
index f3157bd..6159361 100644
--- a/src/mpi/romio/test/Makefile.am
+++ b/src/mpi/romio/test/Makefile.am
@@ -25,7 +25,7 @@ AM_FFLAGS = $(USER_FFLAGS)
CTESTS = simple perf async coll_test coll_perf misc file_info excl large_array \
atomicity noncontig i_noncontig noncontig_coll split_coll shared_fp \
large_file psimple error status noncontig_coll2 aggregation1 aggregation2 \
- async-multiple ordered_fp hindexed external32
+ async-multiple ordered_fp hindexed external32 indexed_zeros
FTESTS = fcoll_test fperf fmisc pfcoll_test
diff --git a/src/mpi/romio/test/indexed_zeros.c b/src/mpi/romio/test/indexed_zeros.c
new file mode 100644
index 0000000..e574dd8
--- /dev/null
+++ b/src/mpi/romio/test/indexed_zeros.c
@@ -0,0 +1,97 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/uio.h>
+
+#include <mpi.h>
+
+#define MAXLEN 9
+
+static void handle_error(int errcode, const char *str)
+{
+ char msg[MPI_MAX_ERROR_STRING];
+ int resultlen;
+ MPI_Error_string(errcode, msg, &resultlen);
+ fprintf(stderr, "%s: %s\n", str, msg);
+ MPI_Abort(MPI_COMM_WORLD, 1);
+}
+int main(int argc, char **argv) {
+ int i, rank, np, buflen, num, err, nr_errors;
+ int nelms[MAXLEN], buf[MAXLEN], indices[MAXLEN], blocklen[MAXLEN];
+ MPI_File fh;
+ MPI_Status status;
+ MPI_Datatype filetype;
+
+ MPI_Init(&argc, &argv);
+ MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+ MPI_Comm_size(MPI_COMM_WORLD, &np);
+
+ if (np != 2) {
+ if (rank == 0) fprintf(stderr,"Must run on 2 MPI processes\n");
+ MPI_Finalize(); return 1;
+ }
+
+ /* set up the number of integers to write in each iteration */
+ for (i=0; i<MAXLEN; i++) nelms[i] = 0;
+ if (rank == 0) nelms[4]=nelms[5]=nelms[7]=1;
+ if (rank == 1) nelms[0]=nelms[1]=nelms[2]=nelms[3]=nelms[6]=nelms[8]=1;
+
+ /* pre-fill the file with integers -999 */
+ if (rank == 0) {
+ for (i=0; i<MAXLEN; i++) buf[i] = -999;
+ err =MPI_File_open(MPI_COMM_SELF, argv[1], MPI_MODE_CREATE|MPI_MODE_WRONLY,
+ MPI_INFO_NULL, &fh);
+ if (err != MPI_SUCCESS) handle_error(err, "MPI_File_open");
+ err = MPI_File_write(fh, buf, MAXLEN, MPI_INT, &status);
+ if (err != MPI_SUCCESS) handle_error(err, "MPI_File_write");
+ err = MPI_File_close(&fh);
+ if (err != MPI_SUCCESS) handle_error(err, "MPI_File_close");
+ }
+ MPI_Barrier(MPI_COMM_WORLD);
+
+ /* define a filetype using indexed constructor */
+ buflen = num = 0;
+ for (i=0; i<MAXLEN; i++) {
+ buflen += nelms[i];
+ indices[num] = i;
+ blocklen[num] = nelms[i];
+ num++;
+ }
+ MPI_Type_indexed(num, blocklen, indices, MPI_INT, &filetype);
+ MPI_Type_commit(&filetype);
+
+ /* initialize write buffer and write to file*/
+ for (i=0; i<MAXLEN; i++) buf[i] = 1;
+ err =MPI_File_open(MPI_COMM_WORLD, argv[1], MPI_MODE_WRONLY, MPI_INFO_NULL, &fh);
+ if (err != MPI_SUCCESS) handle_error(err, "MPI_File_open");
+ err = MPI_File_set_view(fh, 0, MPI_INT, filetype, "native", MPI_INFO_NULL);
+ if (err != MPI_SUCCESS) handle_error(err, "MPI_File_set_view");
+ err = MPI_File_write_all(fh, buf, buflen, MPI_INT, &status);
+ if (err != MPI_SUCCESS) handle_error(err, "MPI_File_write_all");
+ MPI_Type_free(&filetype);
+ err = MPI_File_close(&fh);
+ if (err != MPI_SUCCESS) handle_error(err, "MPI_File_close");
+
+ /* read back and check */
+ if (rank == 0) {
+ err = MPI_File_open(MPI_COMM_SELF, argv[1], MPI_MODE_RDONLY, MPI_INFO_NULL, &fh);
+ if (err != MPI_SUCCESS) handle_error(err, "MPI_File_open");
+ err = MPI_File_read(fh,buf, MAXLEN, MPI_INT, &status);
+ if (err != MPI_SUCCESS) handle_error(err, "MPI_File_read");
+ err = MPI_File_close(&fh);
+ if (err != MPI_SUCCESS) handle_error(err, "MPI_File_close");
+ for (i=0; i<MAXLEN; i++) {
+ if (buf[i] < 0) {
+ nr_errors++;
+ printf("Error: unexpected value at buf[%d] == %d\n",i,buf[i]);
+ }
+ }
+ if (nr_errors == 0) printf(" No Errors\n");
+ }
+
+ MPI_Finalize();
+ return 0;
+}
+
diff --git a/src/mpi/romio/test/runtests.in b/src/mpi/romio/test/runtests.in
index 0ae23eb..1d606f5 100644
--- a/src/mpi/romio/test/runtests.in
+++ b/src/mpi/romio/test/runtests.in
@@ -372,6 +372,13 @@ echo '**** Testing status.c ****'
$mpirun -np 1 ./status -fname $FILENAME
# CheckOutput status
CleanExe status
+testfiles="$testfiles indexed_zeros.out"
+\rm -f indexed_zeros.out
+MakeExe indexed_zeros
+\rm -f $FILENAME*
+echo '**** Testing indexed_zeros ****'
+$mpirun -np 2 ./indexed_zeros $FILENAME
+CleanExe indexed_zeros
#
if [ @NOF77@ = 0 ] ; then
echo ""
-----------------------------------------------------------------------
Summary of changes:
src/mpi/romio/adio/common/flatten.c | 168 +++++++++++++++++++++++----------
src/mpi/romio/test/Makefile.am | 2 +-
src/mpi/romio/test/indexed_zeros.c | 111 ++++++++++++++++++++++
src/mpi/romio/test/runtests.in | 7 ++
test/mpi/io/Makefile.am | 3 +-
test/mpi/io/{resized.c => resized2.c} | 7 +-
test/mpi/io/testlist | 1 +
7 files changed, 245 insertions(+), 54 deletions(-)
create mode 100644 src/mpi/romio/test/indexed_zeros.c
copy test/mpi/io/{resized.c => resized2.c} (94%)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.1-225-g27f99ee
by noreply@mpich.org 05 May '14
by noreply@mpich.org 05 May '14
05 May '14
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 27f99ee3363c938a56b7be935545c5355a051820 (commit)
via a628b40cbb45fa988084ed5fe0eee9c95485eba6 (commit)
via 9a8b370e83c4197cbb74f87b91f8bff3b4016fc3 (commit)
via 996cea52e28519bfa5e0a488729d90b8e99871b6 (commit)
via f824ab2249bae1995090c21a0fc07f69ed48288c (commit)
via 89e3557f91ceea8451b5161d9bc3532dc58e61aa (commit)
from ace448ad1eedaf98884eb2ea140b39b53919195b (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/27f99ee3363c938a56b7be935545c5355…
commit 27f99ee3363c938a56b7be935545c5355a051820
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Fri May 2 10:08:05 2014 -0500
Make concurrent write the default for Panasas
MPI-IO presumes concurrent parallel access, so make that the default.
Applications in strange situations where an MPI-IO program is
manipulating a file while another program manipulates the file can
disable with a hint, but let's make the common, likely case fast.
Signed-off-by: Ken Raffenetti <raffenet(a)mcs.anl.gov>
diff --git a/src/mpi/romio/adio/ad_panfs/ad_panfs_hints.c b/src/mpi/romio/adio/ad_panfs/ad_panfs_hints.c
index 5690639..94178ab 100644
--- a/src/mpi/romio/adio/ad_panfs/ad_panfs_hints.c
+++ b/src/mpi/romio/adio/ad_panfs/ad_panfs_hints.c
@@ -25,6 +25,9 @@ void ADIOI_PANFS_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code)
*/
MPI_Info_create(&(fd->info));
+ /* anticipate concurrent writes in an MPI-IO application */
+ ADIOI_Info_set (fd->info, "panfs_concurrent_write", "1");
+
/* has user specified striping parameters
and do they have the same value on all processes? */
if (users_info != MPI_INFO_NULL) {
http://git.mpich.org/mpich.git/commitdiff/a628b40cbb45fa988084ed5fe0eee9c95…
commit a628b40cbb45fa988084ed5fe0eee9c95485eba6
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Mon Apr 21 16:15:38 2014 -0500
slightly better checks for Panasas SDK
Signed-off-by: Ken Raffenetti <raffenet(a)mcs.anl.gov>
diff --git a/src/mpi/romio/adio/ad_panfs/Makefile.mk b/src/mpi/romio/adio/ad_panfs/Makefile.mk
index b7a1c78..68e92d5 100644
--- a/src/mpi/romio/adio/ad_panfs/Makefile.mk
+++ b/src/mpi/romio/adio/ad_panfs/Makefile.mk
@@ -7,10 +7,6 @@
if BUILD_AD_PANFS
-# I don't like this hard-coded path to the PANFS headers but I guess that's
-# where they always are?
-AM_CPPFLAGS += -I/opt/panfs/include
-
noinst_HEADERS += adio/ad_panfs/ad_panfs.h
romio_other_sources += \
diff --git a/src/mpi/romio/configure.ac b/src/mpi/romio/configure.ac
index 0ecd41b..484556d 100644
--- a/src/mpi/romio/configure.ac
+++ b/src/mpi/romio/configure.ac
@@ -788,8 +788,14 @@ users manual for instructions on testing and if necessary fixing this])
fi
if test -n "$file_system_panfs"; then
- AC_DEFINE(ROMIO_PANFS,1,[Define for ROMIO with PANFS])
+ # TODO: are there ever any installations with the panfs SDK somewhere else?
+ CPPFLAGS="${CPPFLAGS} -I/opt/panfs/include"
+ AC_CHECK_HEADER(pan_fs_client_cw_mode.h,
+ AC_DEFINE(ROMIO_PANFS,1,[Define for ROMIO with PANFS]),
+ AC_MSG_ERROR([PANFS support requested but cannot find pan_fs_client_cw_mode.h header file])
+ )
fi
+
if test -n "$file_system_ufs"; then
AC_DEFINE(ROMIO_UFS,1,[Define for ROMIO with UFS])
fi
http://git.mpich.org/mpich.git/commitdiff/9a8b370e83c4197cbb74f87b91f8bff3b…
commit 9a8b370e83c4197cbb74f87b91f8bff3b4016fc3
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Mon Apr 21 16:12:54 2014 -0500
usleep available but not prototyped in strict mode
Signed-off-by: Ken Raffenetti <raffenet(a)mcs.anl.gov>
diff --git a/src/mpi/romio/adio/ad_panfs/ad_panfs.h b/src/mpi/romio/adio/ad_panfs/ad_panfs.h
index 00ffbef..5f13f64 100644
--- a/src/mpi/romio/adio/ad_panfs/ad_panfs.h
+++ b/src/mpi/romio/adio/ad_panfs/ad_panfs.h
@@ -37,6 +37,12 @@ void ADIOI_PANFS_WriteContig(ADIO_File fd, const void *buf, int count,
ADIO_Offset offset, ADIO_Status *status,
int *error_code);
+/* TODO: move this to common code and have all routines retry. */
+/* TODO: also check for EWOULDBLOCK */
+#if defined(NEEDS_USLEEP_DECL)
+int usleep(useconds_t usec);
+#endif
+
/* Delay 1 ms */
#define AD_PANFS_RETRY_DELAY 1000
diff --git a/src/mpi/romio/configure.ac b/src/mpi/romio/configure.ac
index 874d382..0ecd41b 100644
--- a/src/mpi/romio/configure.ac
+++ b/src/mpi/romio/configure.ac
@@ -1657,6 +1657,12 @@ AC_CHECK_FUNCS(lseek64)
if test "$ac_cv_func_lseek64" = "yes" ; then
PAC_FUNC_NEEDS_DECL([#include <unistd.h>],lseek64)
fi
+
+AC_CHECK_FUNCS(usleep)
+if test "$ac_cv_func_usleep" = "yes" ; then
+ PAC_FUNC_NEEDS_DECL([#include <unistd.h>],usleep)
+fi
+
#
# Create the directory lists for the Makefile
FILE_SYS_DIRS=""
http://git.mpich.org/mpich.git/commitdiff/996cea52e28519bfa5e0a488729d90b8e…
commit 996cea52e28519bfa5e0a488729d90b8e99871b6
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Mon Apr 21 15:56:10 2014 -0500
update panasas routines for const-ification
Signed-off-by: Ken Raffenetti <raffenet(a)mcs.anl.gov>
diff --git a/src/mpi/romio/adio/ad_panfs/ad_panfs.h b/src/mpi/romio/adio/ad_panfs/ad_panfs.h
index 6164e8e..00ffbef 100644
--- a/src/mpi/romio/adio/ad_panfs/ad_panfs.h
+++ b/src/mpi/romio/adio/ad_panfs/ad_panfs.h
@@ -32,7 +32,7 @@ void ADIOI_PANFS_ReadContig(ADIO_File fd, void *buf, int count,
ADIO_Offset offset, ADIO_Status *status,
int *error_code);
void ADIOI_PANFS_Resize(ADIO_File fd, ADIO_Offset size, int *error_code);
-void ADIOI_PANFS_WriteContig(ADIO_File fd, void *buf, int count,
+void ADIOI_PANFS_WriteContig(ADIO_File fd, const void *buf, int count,
MPI_Datatype datatype, int file_ptr_type,
ADIO_Offset offset, ADIO_Status *status,
int *error_code);
diff --git a/src/mpi/romio/adio/ad_panfs/ad_panfs_write.c b/src/mpi/romio/adio/ad_panfs/ad_panfs_write.c
index cdab2e4..920d2f4 100644
--- a/src/mpi/romio/adio/ad_panfs/ad_panfs_write.c
+++ b/src/mpi/romio/adio/ad_panfs/ad_panfs_write.c
@@ -11,7 +11,7 @@
#include <unistd.h>
#endif
-void ADIOI_PANFS_WriteContig(ADIO_File fd, void *buf, int count,
+void ADIOI_PANFS_WriteContig(ADIO_File fd, const void *buf, int count,
MPI_Datatype datatype, int file_ptr_type,
ADIO_Offset offset, ADIO_Status *status,
int *error_code)
http://git.mpich.org/mpich.git/commitdiff/f824ab2249bae1995090c21a0fc07f69e…
commit f824ab2249bae1995090c21a0fc07f69ed48288c
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Mon Apr 21 15:55:14 2014 -0500
tiny warning fix for panasas debugging routine
Signed-off-by: Ken Raffenetti <raffenet(a)mcs.anl.gov>
diff --git a/src/mpi/romio/adio/ad_panfs/ad_panfs_resize.c b/src/mpi/romio/adio/ad_panfs/ad_panfs_resize.c
index 52708f5..5c41126 100644
--- a/src/mpi/romio/adio/ad_panfs/ad_panfs_resize.c
+++ b/src/mpi/romio/adio/ad_panfs/ad_panfs_resize.c
@@ -31,7 +31,7 @@ void ADIOI_PANFS_Resize(ADIO_File fd, ADIO_Offset size, int *error_code)
if(((ADIO_Offset)stat_buf.st_size) != size)
{
/* This should never happen otherwise there is a coherency problem. */
- FPRINTF(stderr, "%s: Rank %d: Resize failed: requested=%llu actual=%llu.\n",myname,myrank,size,stat_buf.st_size);
+ FPRINTF(stderr, "%s: Rank %d: Resize failed: requested=%llu actual=%llu.\n",myname,myrank,size,(unsigned long long)stat_buf.st_size);
MPI_Abort(MPI_COMM_WORLD, 1);
}
}
http://git.mpich.org/mpich.git/commitdiff/89e3557f91ceea8451b5161d9bc3532dc…
commit 89e3557f91ceea8451b5161d9bc3532dc58e61aa
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Mon Apr 21 15:54:51 2014 -0500
clean up unused variables in panasas hints
Signed-off-by: Ken Raffenetti <raffenet(a)mcs.anl.gov>
diff --git a/src/mpi/romio/adio/ad_panfs/ad_panfs_hints.c b/src/mpi/romio/adio/ad_panfs/ad_panfs_hints.c
index f6e6615..5690639 100644
--- a/src/mpi/romio/adio/ad_panfs/ad_panfs_hints.c
+++ b/src/mpi/romio/adio/ad_panfs/ad_panfs_hints.c
@@ -15,15 +15,6 @@ void ADIOI_PANFS_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code)
#if defined(MPICH) || !defined(PRINT_ERR_MSG)
static char myname[] = "ADIOI_PANFS_SETINFO";
#endif
- char* value;
- int flag, tmp_val = -1;
- unsigned long int concurrent_write = 0;
- pan_fs_client_layout_agg_type_t layout_type = PAN_FS_CLIENT_LAYOUT_TYPE__DEFAULT;
- unsigned long int layout_stripe_unit = 0;
- unsigned long int layout_parity_stripe_width = 0;
- unsigned long int layout_parity_stripe_depth = 0;
- unsigned long int layout_total_num_comps = 0;
- pan_fs_client_layout_visit_t layout_visit_policy = PAN_FS_CLIENT_LAYOUT_VISIT__ROUND_ROBIN;
int gen_error_code;
*error_code = MPI_SUCCESS;
-----------------------------------------------------------------------
Summary of changes:
src/mpi/romio/adio/ad_panfs/Makefile.mk | 4 ----
src/mpi/romio/adio/ad_panfs/ad_panfs.h | 8 +++++++-
src/mpi/romio/adio/ad_panfs/ad_panfs_hints.c | 12 +++---------
src/mpi/romio/adio/ad_panfs/ad_panfs_resize.c | 2 +-
src/mpi/romio/adio/ad_panfs/ad_panfs_write.c | 2 +-
src/mpi/romio/configure.ac | 14 +++++++++++++-
6 files changed, 25 insertions(+), 17 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0
[mpich] MPICH primary repository branch, master, updated. v3.1-219-gace448a
by noreply@mpich.org 05 May '14
by noreply@mpich.org 05 May '14
05 May '14
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 ace448ad1eedaf98884eb2ea140b39b53919195b (commit)
from bfc34956d4c0b1711013ebbafddfa23bfc0a8988 (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/ace448ad1eedaf98884eb2ea140b39b53…
commit ace448ad1eedaf98884eb2ea140b39b53919195b
Author: Rob Latham <robl(a)mcs.anl.gov>
Date: Mon May 5 08:02:30 2014 -0500
Revert "Mark indexperf as failing perf test"
This reverts commit 12531694f51ca930806613014c1560abcc7a1357.
Jenkins, for one platform/toolchain, still fails these datatype tests. The
results are still correct and performance is no worse, so we need not revert
the whole batch of changes, but the tests are still expected to fail.
No Reviewer
diff --git a/test/mpi/perf/testlist b/test/mpi/perf/testlist
index 4d665bc..fb206ed 100644
--- a/test/mpi/perf/testlist
+++ b/test/mpi/perf/testlist
@@ -1,10 +1,10 @@
-transp-datatype 2
+transp-datatype 2 xfail=ticket1788
sendrecvl 2
-twovec 1
-dtpack 1
-nestvec 1
-nestvec2 1
-indexperf 1 xfail=ticket1788
+twovec 1 xfail=ticket1788
+dtpack 1 xfail=ticket1789
+nestvec 1 xfail=ticket1788
+nestvec2 1 xfail=ticket1788
+indexperf 1 xfail=ticket1788
non_zero_root 4
timer 1
# The commcreatep test looks at how communicator creation scales with group
-----------------------------------------------------------------------
Summary of changes:
test/mpi/perf/testlist | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
hooks/post-receive
--
MPICH primary repository
1
0