summaryrefslogtreecommitdiffstats
path: root/testpar/t_coll_chunk.c
diff options
context:
space:
mode:
Diffstat (limited to 'testpar/t_coll_chunk.c')
-rw-r--r--testpar/t_coll_chunk.c137
1 files changed, 72 insertions, 65 deletions
diff --git a/testpar/t_coll_chunk.c b/testpar/t_coll_chunk.c
index cafb784..8c2373b 100644
--- a/testpar/t_coll_chunk.c
+++ b/testpar/t_coll_chunk.c
@@ -13,6 +13,7 @@
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "testphdf5.h"
+#include "H5Dprivate.h"
/*#define SPACE_DIM1 256
#define SPACE_DIM2 256
@@ -21,8 +22,20 @@
#define DSET_COLLECTIVE_CHUNK_NAME "coll_chunk_name"
*/
+/* some commonly used routines for collective chunk IO tests*/
+static void ccslab_set(int mpi_rank,int mpi_size,hssize_t start[],hsize_t count[],
+ hsize_t stride[],hsize_t block[],int mode);
+
+static void ccdataset_fill(hssize_t start[],hsize_t count[],
+ hsize_t stride[],hsize_t block[],DATATYPE*dataset);
+
+static void ccdataset_print(hssize_t start[],hsize_t block[],DATATYPE*dataset);
+
+static int ccdataset_vrfy(hssize_t start[], hsize_t count[], hsize_t stride[],
+ hsize_t block[], DATATYPE *dataset, DATATYPE *original);
+
+static void coll_chunktest(char* filename,int chunk_factor,int select_factor);
-void coll_chunktest(char* filename,int chunk_factor,int select_factor);
/*-------------------------------------------------------------------------
* Function: coll_chunk1
*
@@ -40,7 +53,8 @@ void coll_chunktest(char* filename,int chunk_factor,int select_factor);
*-------------------------------------------------------------------------
*/
void
-coll_chunk1(){
+coll_chunk1(void)
+{
char *filename;
filename = (char *) GetTestParameters();
@@ -49,7 +63,8 @@ coll_chunk1(){
}
void
-coll_chunk2(){
+coll_chunk2(void)
+{
char *filename;
filename = (char *) GetTestParameters();
@@ -59,7 +74,8 @@ coll_chunk2(){
void
-coll_chunk3(){
+coll_chunk3(void)
+{
char *filename;
filename = (char *) GetTestParameters();
@@ -67,40 +83,37 @@ coll_chunk3(){
}
-
void
-coll_chunk4(){
+coll_chunk4(void)
+{
char *filename;
filename = (char *) GetTestParameters();
coll_chunktest(filename,4,BYROW_DISCONT);
}
-void
+
+static void
coll_chunktest(char* filename,int chunk_factor,int select_factor) {
hid_t file,dataset, file_dataspace;
hid_t acc_plist,xfer_plist,crp_plist;
hsize_t dims[RANK], chunk_dims[RANK];
- int i,j;
int* data_array1 = NULL;
int* data_origin1 = NULL;
herr_t status;
hssize_t start[RANK];
hsize_t count[RANK],stride[RANK],block[RANK];
- int prop_value;
-
- /* char * filename;*/
+#ifdef H5_HAVE_INSTRUMENTED_LIBRARY
+ unsigned prop_value;
+#endif /* H5_HAVE_INSTRUMENTED_LIBRARY */
int mpi_size,mpi_rank;
-
MPI_Comm comm = MPI_COMM_WORLD;
MPI_Info info = MPI_INFO_NULL;
- /* filename = (char *) GetTestParameters();*/
-
/* set up MPI parameters */
- MPI_Comm_size(MPI_COMM_WORLD,&mpi_size);
- MPI_Comm_rank(MPI_COMM_WORLD,&mpi_rank);
+ MPI_Comm_size(comm,&mpi_size);
+ MPI_Comm_rank(comm,&mpi_rank);
/* Create the data space */
acc_plist = H5Pcreate(H5P_FILE_ACCESS);
@@ -174,34 +187,39 @@ coll_chunktest(char* filename,int chunk_factor,int select_factor) {
status = H5Pset_dxpl_mpio(xfer_plist, H5FD_MPIO_COLLECTIVE);
VRFY((status>= 0),"MPIO collective transfer property succeeded");
- prop_value = 1;
- status = H5Pinsert(xfer_plist,PROP_NAME,sizeof(int),&prop_value,
+#ifdef H5_HAVE_INSTRUMENTED_LIBRARY
+ prop_value = H5D_XFER_COLL_CHUNK_DEF;
+#ifdef H5_WANT_H5_V1_6_COMPAT
+ status = H5Pinsert(xfer_plist,H5D_XFER_COLL_CHUNK_NAME,H5D_XFER_COLL_CHUNK_SIZE,&prop_value,
NULL,NULL,NULL,NULL,NULL);
+#else /* H5_WANT_H5_V1_6_COMPAT */
+ status = H5Pinsert(xfer_plist,H5D_XFER_COLL_CHUNK_NAME,H5D_XFER_COLL_CHUNK_SIZE,&prop_value,
+ NULL,NULL,NULL,NULL,NULL,NULL);
+#endif /* H5_WANT_H5_V1_6_COMPAT */
VRFY((status >= 0),"testing property list inserted succeeded");
+#endif /* H5_HAVE_INSTRUMENTED_LIBRARY */
/* write data collectively */
status = H5Dwrite(dataset, H5T_NATIVE_INT, H5S_ALL, file_dataspace,
xfer_plist, data_array1);
VRFY((status >= 0),"dataset write succeeded");
- status = H5Pget(xfer_plist,PROP_NAME,&prop_value);
+#ifdef H5_HAVE_INSTRUMENTED_LIBRARY
+ status = H5Pget(xfer_plist,H5D_XFER_COLL_CHUNK_NAME,&prop_value);
VRFY((status >= 0),"testing property list get succeeded");
if(chunk_factor == 4 && select_factor == BYROW_DISCONT) { /* suppose to use independent */
- if(prop_value == 1)
- printf("H5Dwrite shouldn't use MPI Collective IO call, something is wrong \n");
+ VRFY((prop_value == 0), "H5Dwrite shouldn't use MPI Collective IO call");
}
else {
- if(prop_value == 0)
- printf("H5Dwrite doesn't use MPI Collective IO call, something is wrong \n");
+ VRFY((prop_value == 1), "H5Dwrite didn't use MPI Collective IO call");
}
+#endif /* H5_HAVE_INSTRUMENTED_LIBRARY */
status = H5Dclose(dataset);
- VRFY((status >= 0),"");
+ VRFY((status >= 0),"");
/* check whether using collective IO */
/* Should use H5Pget and H5Pinsert to handle this test. */
- status = H5Premove(xfer_plist,PROP_NAME);
- VRFY((status >= 0),"property list removed");
status = H5Pclose(xfer_plist);
VRFY((status >= 0),"property list closed");
@@ -255,34 +273,39 @@ coll_chunktest(char* filename,int chunk_factor,int select_factor) {
VRFY((xfer_plist >= 0),"");
status = H5Pset_dxpl_mpio(xfer_plist, H5FD_MPIO_COLLECTIVE);
VRFY((status>= 0),"MPIO collective transfer property succeeded");
- prop_value = 1;
- status = H5Pinsert(xfer_plist,PROP_NAME,sizeof(int),&prop_value,
+#ifdef H5_HAVE_INSTRUMENTED_LIBRARY
+ prop_value = H5D_XFER_COLL_CHUNK_DEF;
+#ifdef H5_WANT_H5_V1_6_COMPAT
+ status = H5Pinsert(xfer_plist,H5D_XFER_COLL_CHUNK_NAME,H5D_XFER_COLL_CHUNK_SIZE,&prop_value,
NULL,NULL,NULL,NULL,NULL);
+#else /* H5_WANT_H5_V1_6_COMPAT */
+ status = H5Pinsert(xfer_plist,H5D_XFER_COLL_CHUNK_NAME,H5D_XFER_COLL_CHUNK_SIZE,&prop_value,
+ NULL,NULL,NULL,NULL,NULL,NULL);
+#endif /* H5_WANT_H5_V1_6_COMPAT */
VRFY((status >= 0),"testing property list inserted succeeded");
+#endif /* H5_HAVE_INSTRUMENTED_LIBRARY */
status = H5Dread(dataset, H5T_NATIVE_INT, H5S_ALL, file_dataspace,
xfer_plist, data_array1);
VRFY((status >=0),"dataset read succeeded");
- status = H5Pget(xfer_plist,PROP_NAME,&prop_value);
+#ifdef H5_HAVE_INSTRUMENTED_LIBRARY
+ status = H5Pget(xfer_plist,H5D_XFER_COLL_CHUNK_NAME,&prop_value);
VRFY((status >= 0),"testing property list get succeeded");
if(chunk_factor == 4 && select_factor == BYROW_DISCONT) { /* suppose to use independent */
- if(prop_value == 1)
- printf("H5Dread shouldn't use MPI Collective IO call, something is wrong \n");
+ VRFY((prop_value == 0), "H5Dread shouldn't use MPI Collective IO call");
}
else {
- if(prop_value == 0)
- printf("H5Dread doesn't use MPI Collective IO call, something is wrong \n");
+ VRFY((prop_value == 1), "H5Dread didn't use MPI Collective IO call");
}
+#endif /* H5_HAVE_INSTRUMENTED_LIBRARY */
/* verify the read data with original expected data */
status = ccdataset_vrfy(start, count, stride, block, data_array1, data_origin1);
if (status) nerrors++;
- status = H5Premove(xfer_plist,PROP_NAME);
- VRFY((status >= 0),"property list removed");
+ status = H5Pclose(xfer_plist);
+ VRFY((status >= 0),"property list closed");
- status = H5Pclose(xfer_plist);
- VRFY((status >= 0),"property list closed");
/* close dataset collectively */
status=H5Dclose(dataset);
VRFY((status >= 0), "");
@@ -300,7 +323,7 @@ coll_chunktest(char* filename,int chunk_factor,int select_factor) {
}
-void
+static void
ccslab_set(int mpi_rank, int mpi_size, hssize_t start[], hsize_t count[],
hsize_t stride[], hsize_t block[], int mode)
{
@@ -357,44 +380,27 @@ if (VERBOSE_MED){
* Fill the dataset with trivial data for testing.
* Assume dimension rank is 2 and data is stored contiguous.
*/
-void
-ccdataset_fill(hssize_t start[], hsize_t stride[], hsize_t count[],hsize_t block[], DATATYPE * dataset)
+static void
+ccdataset_fill(hssize_t start[], hsize_t stride[], hsize_t count[], hsize_t block[], DATATYPE * dataset)
{
- DATATYPE *tmptr;
DATATYPE *dataptr = dataset;
- DATATYPE temp;
- int i, j,k1,k2;
+ DATATYPE *tmptr;
+ hsize_t i, j,k1,k2;
/* put some trivial data in the data_array */
-
tmptr = dataptr;
- /*for(i=0;i<SPACE_DIM1;i++){
- for(j=0;j<SPACE_DIM2;j++){
- *dataptr = 0;
- dataptr++;
- }
- }*/
-
- dataptr = tmptr;
/* assign the disjoint block (two-dimensional)data array value
through the pointer */
- for (k1 = 0; k1 < count[0];k1++) {
- for(i = 0;i < block[0];i++) {
- for(k2 = 0; k2<count[1];k2++) {
- for(j=0;j<block[1];j++) {
+ for (k1 = 0; k1 < count[0]; k1++) {
+ for(i = 0;i < block[0]; i++) {
+ for(k2 = 0; k2<count[1]; k2++) {
+ for(j=0;j<block[1]; j++) {
dataptr = tmptr + ((start[0]+k1*stride[0]+i)*SPACE_DIM2+
start[1]+k2*stride[1]+j);
- /* printf("i,j,k1,k2 %lu %lu %lu %lu \n",i,j,k1,k2);
- printf("Address of dataptr");
- printf("= 0x%p\n",dataptr);
- */
*dataptr = (DATATYPE)(k1+k2+i+j);
- /*temp = *dataptr;
- printf("data %03d\n",temp);
- */
}
}
}
@@ -405,7 +411,7 @@ ccdataset_fill(hssize_t start[], hsize_t stride[], hsize_t count[],hsize_t block
/*
* Print the first block of the content of the dataset.
*/
-void
+static void
ccdataset_print(hssize_t start[], hsize_t block[], DATATYPE * dataset)
{
DATATYPE *dataptr = dataset;
@@ -433,7 +439,8 @@ ccdataset_print(hssize_t start[], hsize_t block[], DATATYPE * dataset)
/*
* Print the content of the dataset.
*/
-int ccdataset_vrfy(hssize_t start[], hsize_t count[], hsize_t stride[], hsize_t block[], DATATYPE *dataset, DATATYPE *original)
+static int
+ccdataset_vrfy(hssize_t start[], hsize_t count[], hsize_t stride[], hsize_t block[], DATATYPE *dataset, DATATYPE *original)
{
hsize_t i, j,k1,k2;
int vrfyerrs;