summaryrefslogtreecommitdiffstats
path: root/testpar/t_coll_chunk.c
diff options
context:
space:
mode:
authorMuQun Yang <ymuqun@hdfgroup.org>2006-03-23 21:18:02 (GMT)
committerMuQun Yang <ymuqun@hdfgroup.org>2006-03-23 21:18:02 (GMT)
commitb22b47ced52e18aa16fd5347d1333f7c7aaa82af (patch)
treee51fa930d9b499c5dc0cd3b23cdfaaa804a8c1c6 /testpar/t_coll_chunk.c
parent9e0d6a4add26efeca8fff1c97481008d21709470 (diff)
downloadhdf5-b22b47ced52e18aa16fd5347d1333f7c7aaa82af.zip
hdf5-b22b47ced52e18aa16fd5347d1333f7c7aaa82af.tar.gz
hdf5-b22b47ced52e18aa16fd5347d1333f7c7aaa82af.tar.bz2
[svn-r12148] Purpose:
Add tests for optional APIs to support collective chunk IO Description: In order to test whether library picks up the user's options, The number of chunks need to be varied for different processes, Selection of the number of processes selected in one chunk also need to be varied. Solution: Create two cases, 1. Each chunk only selected by one unique process, this case library should use independent for collective call. 2. One-third of the processes occupies the top half of the whole domain, The rest of the processes occupies the lower half of the domain. The total number of chunk is a fixed number 8. Platforms tested: Linux 2.4 with mpich 1.2.6(only) Since I only checked in the code that handles the selection, haven't added any new tests yet. So it won't affect any platforms. Misc. update:
Diffstat (limited to 'testpar/t_coll_chunk.c')
-rw-r--r--testpar/t_coll_chunk.c32
1 files changed, 31 insertions, 1 deletions
diff --git a/testpar/t_coll_chunk.c b/testpar/t_coll_chunk.c
index 1591764..49f0dfd 100644
--- a/testpar/t_coll_chunk.c
+++ b/testpar/t_coll_chunk.c
@@ -434,6 +434,7 @@ ccslab_set(int mpi_rank,
hsize_t block[],
int mode)
{
+
switch (mode){
case BYROW_CONT:
@@ -475,7 +476,36 @@ ccslab_set(int mpi_rank,
start[1] = 0;
break;
-
+
+ case BYROW_SELECTUNBALANCE:
+ /* The first one-third of the number of processes only
+ select top half of the domain, The rest will select the bottom
+ half of the domain. */
+
+ block[0] = 1;
+ count[0] = 2;
+ stride[0] = SPACE_DIM1*mpi_size/4+1;
+ block[1] = SPACE_DIM2;
+ count[1] = 1;
+ start[1] = 0;
+ stride[1] = 1;
+ if((mpi_rank *3)<(mpi_size*2)) start[0] = mpi_rank;
+ else start[0] = 1 + SPACE_DIM1*mpi_size/2 + (mpi_rank-2*mpi_size/3); break;
+
+ case BYROW_SELECTINCHUNK:
+ /* Each process will only select one chunk */
+
+ block[0] = 1;
+ count[0] = 1;
+ start[0] = mpi_rank*SPACE_DIM1;
+ stride[0]= 1;
+ block[1] = SPACE_DIM2;
+ count[1] = 1;
+ stride[1]= 1;
+ start[1] = 0;
+
+ break;
+
default:
/* Unknown mode. Set it to cover the whole dataset. */
block[0] = SPACE_DIM1*mpi_size;