From 5edb327cbfff97e5d2be9b01d037f938b57f073d Mon Sep 17 00:00:00 2001 From: MuQun Yang Date: Tue, 12 Jul 2005 14:26:26 -0500 Subject: [svn-r11067] Purpose: Updating phase 2 work of collective IO Description: The current collective IO tests cannot test for number of processors bigger than some values, this change will lift those restriction. However, the test may be slower. Solution: Platforms tested: linux 2.4, AIX 5.1, Linux 2.4 IA64 and IRIX 6.5 (I haven't tested big number of processors with the restriction of the machine) Misc. update: --- testpar/t_coll_chunk.c | 6 +++++- testpar/testphdf5.c | 38 +++++++++++++++++++++++++++++++++++--- testpar/testphdf5.h | 24 ++++++++++++------------ 3 files changed, 52 insertions(+), 16 deletions(-) diff --git a/testpar/t_coll_chunk.c b/testpar/t_coll_chunk.c index 17bfc10..0d8980b 100644 --- a/testpar/t_coll_chunk.c +++ b/testpar/t_coll_chunk.c @@ -86,6 +86,7 @@ coll_chunk3(void) } + void coll_chunk4(void) { @@ -166,7 +167,10 @@ coll_chunktest(const char* filename,int chunk_factor,int select_factor) { /* test1: chunk size is equal to dataset size */ chunk_dims[0] = SPACE_DIM1/chunk_factor; - chunk_dims[1] = SPACE_DIM2/chunk_factor; + + /* to decrease the testing time, maintain bigger chunk size */ + if(chunk_factor >2) chunk_dims[1] = SPACE_DIM2/2; + else chunk_dims[1] = SPACE_DIM2/chunk_factor; status = H5Pset_chunk(crp_plist, 2, chunk_dims); VRFY((status >= 0),"chunk creation property list succeeded"); diff --git a/testpar/testphdf5.c b/testpar/testphdf5.c index 284a2e1..5fe8cb7 100644 --- a/testpar/testphdf5.c +++ b/testpar/testphdf5.c @@ -415,9 +415,11 @@ int main(int argc, char **argv) AddTest("fill", dataset_fillvalue, NULL, "dataset fill value", PARATESTFILE); +#if 0 /* Collective Chunk IO are verified to work for 64 processes. * Add or skip depending on whether mpi_size is larger than 64. */ + if((mpi_size > 64) && MAINPROCESS) { printf("Collective chunk IO tests haven't been tested \n"); printf(" for the number of process greater than 64.\n"); @@ -433,10 +435,39 @@ int main(int argc, char **argv) coll_chunk3,NULL, "multi-chunk collective chunk io",PARATESTFILE); AddTest((mpi_size > 64) ? "-cchunk4" : "cchunk4", coll_chunk4,NULL, "collective to independent chunk io",PARATESTFILE); +#endif - /* Collective irregular chunk IO are verified to work for 3 processes. - * Add or skip depending on whether mpi_size is larger than 3. - */ + AddTest("cchunk1", + coll_chunk1,NULL, "simple collective chunk io",PARATESTFILE); + AddTest("cchunk2", + coll_chunk2,NULL, "noncontiguous collective chunk io",PARATESTFILE); + AddTest("cchunk3", + coll_chunk3,NULL, "multi-chunk collective chunk io",PARATESTFILE); + AddTest("cchunk4", + coll_chunk4,NULL, "collective to independent chunk io",PARATESTFILE); + +/* irregular collective IO tests*/ + AddTest("ccontw", + coll_irregular_cont_write,NULL, + "collective irregular contiguous write",PARATESTFILE); + AddTest("ccontr", + coll_irregular_cont_read,NULL, + "collective irregular contiguous read",PARATESTFILE); + AddTest("cschunkw", + coll_irregular_simple_chunk_write,NULL, + "collective irregular simple chunk write",PARATESTFILE); + AddTest("cschunkr", + coll_irregular_simple_chunk_read,NULL, + "collective irregular simple chunk read",PARATESTFILE); + AddTest("ccchunkw", + coll_irregular_complex_chunk_write,NULL, + "collective irregular complex chunk write",PARATESTFILE); + AddTest("ccchunkr", + coll_irregular_complex_chunk_read,NULL, + "collective irregular complex chunk read",PARATESTFILE); + + +#if 0 if((mpi_size > 3) && MAINPROCESS) { printf("Collective irregular chunk IO tests haven't been tested \n"); printf(" for the number of process greater than 3.\n"); @@ -462,6 +493,7 @@ int main(int argc, char **argv) AddTest((mpi_size > 3) ? "-ccchunkr" : "ccchunkr", coll_irregular_complex_chunk_read,NULL, "collective irregular complex chunk read",PARATESTFILE); +#endif AddTest("null", null_dataset, NULL, diff --git a/testpar/testphdf5.h b/testpar/testphdf5.h index 35eb5a6..b15779e 100644 --- a/testpar/testphdf5.h +++ b/testpar/testphdf5.h @@ -51,8 +51,8 @@ #define FACC_MPIPOSIX 0x8 /* MPIPOSIX */ /*Constants for collective chunk definitions */ -#define SPACE_DIM1 288 -#define SPACE_DIM2 288 +#define SPACE_DIM1 5760 +#define SPACE_DIM2 3 #define BYROW_CONT 1 #define BYROW_DISCONT 2 #define DSET_COLLECTIVE_CHUNK_NAME "coll_chunk_name" @@ -61,15 +61,15 @@ /*Constants for MPI derived data type generated from span tree */ #define MSPACE1_RANK 1 /* Rank of the first dataset in memory */ -#define MSPACE1_DIM 1000 /*27000 */ /* Dataset size in memory */ +#define MSPACE1_DIM 27000 /* Dataset size in memory */ #define FSPACE_RANK 2 /* Dataset rank as it is stored in the file */ #define FSPACE_DIM1 9 /* Dimension sizes of the dataset as it is stored in the file */ -#define FSPACE_DIM2 100 /*3600*/ /* We will read dataset back from the file to the dataset in memory with these dataspace parameters. */ +#define FSPACE_DIM2 3600 /* We will read dataset back from the file to the dataset in memory with these dataspace parameters. */ #define MSPACE_RANK 2 #define MSPACE_DIM1 9 -#define MSPACE_DIM2 100 /*3600*/ +#define MSPACE_DIM2 3600 #define FHCOUNT0 1 /* Count of the first dimension of the first hyperslab selection*/ -#define FHCOUNT1 6 /*768*/ /* Count of the second dimension of the first hyperslab selection*/ +#define FHCOUNT1 768 /* Count of the second dimension of the first hyperslab selection*/ #define FHSTRIDE0 4 /* Stride of the first dimension of the first hyperslab selection*/ #define FHSTRIDE1 3 /* Stride of the second dimension of the first hyperslab selection*/ #define FHBLOCK0 3 /* Block of the first dimension of the first hyperslab selection*/ @@ -82,11 +82,11 @@ #define SHSTRIDE0 1 /* Stride of the first dimension of the first hyperslab selection*/ #define SHSTRIDE1 1 /* Stride of the second dimension of the first hyperslab selection*/ #define SHBLOCK0 3 /* Block of the first dimension of the first hyperslab selection*/ -#define SHBLOCK1 6 /*768*/ /* Block of the second dimension of the first hyperslab selection*/ +#define SHBLOCK1 768 /* Block of the second dimension of the first hyperslab selection*/ #define SHSTART0 4 /* start of the first dimension of the first hyperslab selection*/ #define SHSTART1 0 /* start of the second dimension of the first hyperslab selection*/ -#define MHCOUNT0 54 /*6912*/ /* Count of the first dimension of the first hyperslab selection*/ +#define MHCOUNT0 6912 /* Count of the first dimension of the first hyperslab selection*/ #define MHSTRIDE0 1 /* Stride of the first dimension of the first hyperslab selection*/ #define MHBLOCK0 1 /* Block of the first dimension of the first hyperslab selection*/ #define MHSTART0 1 /* start of the first dimension of the first hyperslab selection*/ @@ -94,7 +94,7 @@ #define RFFHCOUNT0 3 /* Count of the first dimension of the first hyperslab selection*/ -#define RFFHCOUNT1 6 /*768*/ /* Count of the second dimension of the first hyperslab selection*/ +#define RFFHCOUNT1 768 /* Count of the second dimension of the first hyperslab selection*/ #define RFFHSTRIDE0 1 /* Stride of the first dimension of the first hyperslab selection*/ #define RFFHSTRIDE1 1 /* Stride of the second dimension of the first hyperslab selection*/ #define RFFHBLOCK0 1 /* Block of the first dimension of the first hyperslab selection*/ @@ -104,7 +104,7 @@ #define RFSHCOUNT0 3 /* Count of the first dimension of the first hyperslab selection*/ -#define RFSHCOUNT1 12 /*1536 */ /* Count of the second dimension of the first hyperslab selection*/ +#define RFSHCOUNT1 1536 /* Count of the second dimension of the first hyperslab selection*/ #define RFSHSTRIDE0 1 /* Stride of the first dimension of the first hyperslab selection*/ #define RFSHSTRIDE1 1 /* Stride of the second dimension of the first hyperslab selection*/ #define RFSHBLOCK0 1 /* Block of the first dimension of the first hyperslab selection*/ @@ -114,7 +114,7 @@ #define RMFHCOUNT0 3 /* Count of the first dimension of the first hyperslab selection*/ -#define RMFHCOUNT1 6 /*768*/ /* Count of the second dimension of the first hyperslab selection*/ +#define RMFHCOUNT1 768 /* Count of the second dimension of the first hyperslab selection*/ #define RMFHSTRIDE0 1 /* Stride of the first dimension of the first hyperslab selection*/ #define RMFHSTRIDE1 1 /* Stride of the second dimension of the first hyperslab selection*/ #define RMFHBLOCK0 1 /* Block of the first dimension of the first hyperslab selection*/ @@ -123,7 +123,7 @@ #define RMFHSTART1 0 /* start of the second dimension of the first hyperslab selection*/ #define RMSHCOUNT0 3 /* Count of the first dimension of the first hyperslab selection*/ -#define RMSHCOUNT1 12 /*1536*/ /* Count of the second dimension of the first hyperslab selection*/ +#define RMSHCOUNT1 1536 /* Count of the second dimension of the first hyperslab selection*/ #define RMSHSTRIDE0 1 /* Stride of the first dimension of the first hyperslab selection*/ #define RMSHSTRIDE1 1 /* Stride of the second dimension of the first hyperslab selection*/ #define RMSHBLOCK0 1 /* Block of the first dimension of the first hyperslab selection*/ -- cgit v0.12