[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:
This commit is contained in:
MuQun Yang 2005-07-12 14:26:26 -05:00
parent 0f1c1ae4b3
commit 5edb327cbf
3 changed files with 52 additions and 16 deletions

View File

@ -86,6 +86,7 @@ coll_chunk3(void)
} }
void void
coll_chunk4(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 */ /* test1: chunk size is equal to dataset size */
chunk_dims[0] = SPACE_DIM1/chunk_factor; 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); status = H5Pset_chunk(crp_plist, 2, chunk_dims);
VRFY((status >= 0),"chunk creation property list succeeded"); VRFY((status >= 0),"chunk creation property list succeeded");

View File

@ -415,9 +415,11 @@ int main(int argc, char **argv)
AddTest("fill", dataset_fillvalue, NULL, AddTest("fill", dataset_fillvalue, NULL,
"dataset fill value", PARATESTFILE); "dataset fill value", PARATESTFILE);
#if 0
/* Collective Chunk IO are verified to work for 64 processes. /* Collective Chunk IO are verified to work for 64 processes.
* Add or skip depending on whether mpi_size is larger than 64. * Add or skip depending on whether mpi_size is larger than 64.
*/ */
if((mpi_size > 64) && MAINPROCESS) { if((mpi_size > 64) && MAINPROCESS) {
printf("Collective chunk IO tests haven't been tested \n"); printf("Collective chunk IO tests haven't been tested \n");
printf(" for the number of process greater than 64.\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); coll_chunk3,NULL, "multi-chunk collective chunk io",PARATESTFILE);
AddTest((mpi_size > 64) ? "-cchunk4" : "cchunk4", AddTest((mpi_size > 64) ? "-cchunk4" : "cchunk4",
coll_chunk4,NULL, "collective to independent chunk io",PARATESTFILE); coll_chunk4,NULL, "collective to independent chunk io",PARATESTFILE);
#endif
/* Collective irregular chunk IO are verified to work for 3 processes. AddTest("cchunk1",
* Add or skip depending on whether mpi_size is larger than 3. 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) { if((mpi_size > 3) && MAINPROCESS) {
printf("Collective irregular chunk IO tests haven't been tested \n"); printf("Collective irregular chunk IO tests haven't been tested \n");
printf(" for the number of process greater than 3.\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", AddTest((mpi_size > 3) ? "-ccchunkr" : "ccchunkr",
coll_irregular_complex_chunk_read,NULL, coll_irregular_complex_chunk_read,NULL,
"collective irregular complex chunk read",PARATESTFILE); "collective irregular complex chunk read",PARATESTFILE);
#endif
AddTest("null", null_dataset, NULL, AddTest("null", null_dataset, NULL,

View File

@ -51,8 +51,8 @@
#define FACC_MPIPOSIX 0x8 /* MPIPOSIX */ #define FACC_MPIPOSIX 0x8 /* MPIPOSIX */
/*Constants for collective chunk definitions */ /*Constants for collective chunk definitions */
#define SPACE_DIM1 288 #define SPACE_DIM1 5760
#define SPACE_DIM2 288 #define SPACE_DIM2 3
#define BYROW_CONT 1 #define BYROW_CONT 1
#define BYROW_DISCONT 2 #define BYROW_DISCONT 2
#define DSET_COLLECTIVE_CHUNK_NAME "coll_chunk_name" #define DSET_COLLECTIVE_CHUNK_NAME "coll_chunk_name"
@ -61,15 +61,15 @@
/*Constants for MPI derived data type generated from span tree */ /*Constants for MPI derived data type generated from span tree */
#define MSPACE1_RANK 1 /* Rank of the first dataset in memory */ #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_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_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_RANK 2
#define MSPACE_DIM1 9 #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 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 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 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*/ #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 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 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 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 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 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 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 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*/ #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 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 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 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*/ #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 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 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 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*/ #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 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 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 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*/ #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 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 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 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 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*/ #define RMSHBLOCK0 1 /* Block of the first dimension of the first hyperslab selection*/